您好!欢迎访问江南官方体育app下载网站(JN).注册登录
产品搜索:
江南官方体育app下载网站(JN).注册登录
当前位置:首页 > 新闻中心 > 公司新闻
江南官方体育APP下载.单片机如何提高编程效率优化程序
浏览次数:13次 发布日期:2024-04-23 11:55:39 来源:江南官方体育APP下载 作者:江南app官方网站

  在进行8051单片机应用系统程序设计时,编程都往往少不了要直接操作系统的各个存储器地址空间。

  C51程序经过编译之后产生的目标代码具有浮动地址,其绝对地址必须经过BL51连接定位后才能确定。

  为了能够在C51程序中直接对任意指定的存储器地址进行操作,可以采用扩展关键字“at”、指针、预定义以及连接定位控制命令。

  在这些方法中,本人认为最简单而有效的方法是用“ _at_ ”关键字来对指定变量存储器空间绝对地址来指定。一般格式如下:

  (1).存储器类型: idata、data、xdata等C51能够识别的所有类型,最好不要省略。

  通常使用自加、自减指令和复合赋值表达式(如a-=1及a+=1等)都能够生成高质量的程序代码,编译器通常都能够生成inc和dec之类的指令,而使用a=a+1或a=a-1之类的指令,有很多C编译器都会生成二到三个字节的指令。在AVR单片适用的ICCAVR、GCCAVR、IAR等C编译器以上几种书写方式生成的代码是一样的,也能够生成高质量的inc和dec之类的的代码。

  在程序中一般不进行非常复杂的运算,如浮点数的乘除及开方等,以及一些复杂的数学模型的插补运算,对这些即消耗时间又消费资源的运算,应尽量使用查表的方式,并且将数据表置于程序存储区。如果直接生成所需的表比较困难,也尽量在启了,减少了程序执行过程中重复计算的工作量。

  需要熟悉算法语言,知道各种算法的优缺点。将比较慢的顺序查找法用较快的二分查找或乱序查找法代替,插入排序或冒泡排序法用快速排序、合并排序或根排序代替,都可以大大提高程序执行的效率选择一种合适的数据结构也很重要,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。但是在Keil中则相反,使用数组比使用的指针生成的代码更短

  能够使用字符型(char)定义的变量,就不要使用整型(int)变量来定义;能够使用整型变量定义的变量就不要用长整型(long int),能不使用浮点型(float)变量就不要使用浮点型变量。当然,在定义变量后不要超过变量的作用范围,如果超过变量的范围赋值,C编译器并不报错,但程序运行结果却错了,而且这样的错误很难发现。

  说明:位操作只需一个指令周期即可完成,而大部分的C编译器的%运算均是调用子程序来完成,代码长、执行速度慢。通常,只要求是求2n方的余数,均可使用位操作的方法来代替。

  说明:在有内置硬件乘法器的单片机中(如51系列),乘法运算比求平方运算快得多,因为浮点数的求平方是通过调用子程序来实现的,在自带硬件乘法器的AVR 单片机中,如ATMega163中,乘法运算只需2个时钟周期就可以完成。既使是在没有内置硬件乘法器的AVR单片机中,乘法运算的子程序比平方运算的子程序代码短,执行速度快。

  说明:通常如果需要乘以或除以2n,都可以用移位的方法代替。在ICCAVR中,如果乘以2n,都可以生成左移的代码,而乘以的整数或除以任何数,均调用乘除法子程序。用移位的方法得到代码比调用乘除法子程序生成的代码效率高。实际上,只要是乘以或除以一个整数,均可以用移位的方法得到结果,如:a=a*9可以改为:a=(a《3)+a

  对于一些不需要循环变量参加运算的任务可以把它们放到循环外面,这里的任务包括表达式、函数的调用、指针运算、数组访问等,应该将没有必要执行多次的操作全部集合在一起,放到一个init的初始化程序中进行。

  两个函数的延时效果相似,但几乎所有的C编译对后一种函数生成的代码均比前一种代码少1~3个字节,因为几乎所有的MCU均有为0转移的指令,采用后一种方式能够生成这类指令。在使用while循环时也一样,使用自减指令控制循环会比使用自加指令控制循环生成的代码更少1~3个字母。但是在循环中有通过循环变量i读写数组的指令时,使用预减循环时有可能使数组超界,要引起注意。

  检测与控制系统处理大量数据和多路信息时,只用一片单片机往往无法满足系统实时性和扩展性要求,且处理时间较长。例如在液面信息采集过程中,单片机要在相等的时间间隔进行A/D转换以及数据处理。由于要实现高通量的液体操作,液体操作平台通常配置多根移液针同时进行液体操作工作,采集多路液面信息。因此这里提出一种基于双单片机的信号处理系统设计方案,该系统采用单片机(AT89S51)作为核心器件,2片AT89S51型单片机作为双核心分担整个检测单元的任务。 1 系统硬件电路设计 该信号处理系统的总体设计方案为:单片机1定时进行A/D转换,并且将转换结果存入外部数据存储器:单片机2读取数据存储器中的转换结果并且通过串口传递给计算机,同时还

  全球领先的整合单片机、模拟器件和闪存专利解决方案的供应商——Microchip Technology Inc.(美国微芯科技公司)宣布,推出其增强型中档内核8位PIC®单片机(MCU)系列的最新产品——外设丰富、低引脚数的PIC12F(LF)1840和PIC16F(LF)1847。全新器件分别配备7 KB和14 KB片上闪存,高达1 K的RAM,是8和18引脚封装产品中存储容量最高的PIC® MCU。“LF”型号采用超低功耗(XLP)技术,工作电流小于40 µA/MHz,休眠电流低至20 nA。凭借丰富的外设和功能——包括mTouch™容性触摸传感和多种通信外设,这些通用MCU非常适合于家电(如咖啡壶、搅拌机和洗碗机)、消费类

  电磁脉冲辐照效应实验方法 电磁脉冲对电予系统的辐照效应实验方法,简单地说就是将被测电子系统置于电磁脉冲辐射场中,接受电磁脉冲的照射,研究被测系统在电磁脉冲照射下受干扰、损伤的情况。 实验配置如图1所示。主要由吉赫横电磁波传输室(GTEM Cell)、Marx发生器、控制台和被试系统等组成。Marx发生器用于产生高电压,与GTEM室配合,在GTEM室内产生均匀电磁场。控制台主要由示波器、光接收机和Marx控制面板组成。光接收机和电场传感器组成模拟量光纤场测量系统,主要用于将辐射电磁场转换成电压信号;示波器用来显示电场波形;Marx控制面板用来控制Marx发生器的充放电操作和陡化间隙的调整。 故障重现原理

  系统的故障重现设计与实现 /

  某宝上买的TM1638模块测试程序 根据数据手册搞出来的 骑远飞TM1638 按键数码管模块 电路原理图如下: 单片机源程序如下: #ifndef _TM1638_H #define _TM1638_H #include REGX51.H #define DATA_COMMAND 0X40 #define DISP_COMMAND 0x80 #define ADDR_COMMAND 0XC0 //TM1638模块引脚定义 sbit DIO=P1^0; sbit CLK=P1^1; sbit STB=P1^2; //共阴数码管显示代码

  当我们使用8位MCU编程,用到求平方根算法时,如果调用自带的子程序,那么生产的代码较多,效率低下。因为软件自带算法是用浮点数类型来计算的,现实中我们往往只需要返回整型数据,采用以下代码求平方根将会大大提高计算效率。 static unsigned long sqrt(unsigned long x) { register unsigned long xr; // result register register unsigned long q2; // scan-bit register register unsigned char f; // flag (one bit) xr = 0; //

  如何提高单片机抗干扰让你少走弯路 搞过产品的朋友都有体会,一个设计看似简单,硬件设计和代码编写很快就搞定,但在调试过程中却或多或少的意外,这些都是抗干扰能力不够的体现。 下面讨论一下如何让你的设计避免走弯路: 抗干扰体现在2个方面,一是硬件设计上,二是软件编写上。 这里重点提醒:在MCU设计中主要抗干扰设计是在硬件上,软件为辅。因为MCU的计算能力有限,所以要在硬件上花大工夫。 看看干扰的途径: 1:干扰信号干扰MCU的主要路径是通过I/O口,一是影响了MCU的数据采集,二是影响内部寄存器。 解决方法:后面讨论。 2:电源干扰:MCU虽然适应电压较宽(3-5。5V),但对于电源的波动却很敏感,比如说MCU可以在3V电压下稳定工

  这是DS1602+DS1302完整程序,其中P1口接独立键盘。 DS1602部分: # include SYSTEM.H //#ifndef __LCD1602_8_H__ //#define __LCD1602_8_H__ //LCD接口定义 sfr io = 0x80; //P0-0x80,P1-0x90,P2-0xA0,P3-0xB0; sbit rs = P2^6; //LCD数据/命令选择端(H/L) sbit rw = P2^5; //LCD读/写选择端(H/L) sbit ep = P2^7; //LCD使能控制 sbit bz = io^7;

  1、单片机内部资源 STC89C52:8KFLASH、512字节RAM、32个IO口、3个定时器、1个UART、8个中断源 (1)Flash(硬盘)——程序存储空间 —— 擦写10万次,断电数据不丢失,读写速度慢 (2)RAM(内存)——数据存储空间 —— 断电数据丢失,读写速度快,无限次使用 (3)SFR —— 特殊功能寄存器 2、单片机最小系统 最小系统:最少组件组成单片机可以工作的系统。 三要素: (1)、 电源电路:5V (2)、 晶振电路:11.0592MHZ、两个30PF (3)、 复位电路: P0:开漏输出,必须加上拉电阻 准双向口: 强推挽输出:电流驱动能力强 高阻态 上下拉电阻:上拉电路就是

  的内部资源和最小系统解读 /

  员到百万高管的72项技能(第2版) (黄哲铿) target=_blank

  员:技术狂人如何改变世界 target=_blank

  MPS电机研究院 让电机更听话的秘密! 第一站:电机应用知识大考!第三期考题上线,跟帖赢好礼~

  有奖直播 同质化严重,缺乏创新,ST60毫米波非接触连接器,赋予你独特的产品设计,重拾市场话语权

  【直播】3月27日,STSAFE-A110安全芯片及ST4SIM eSIM芯片助力安全通信

  【线日,基于Buildroot制作STM32MP13启动镜像-深圳/厦门/西安/郑州/苏州

  【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性

  【新品】STM32MP13X-支持Linux、RTOS和Bare Metal应用,新一代通用工业级MPU

  【新品】Arm® Cortex®-M33处理器内核,运行频率160 MHz,基于Armv8-M架构并带有TrustZone®

  【下载】AN5129_适合2.4GHz无线信号的低成本PCB天线 基于 BlueNRG-LP ARM Cortex-M0+

  凝聚ST超低功耗微技术精华的STM32U5于2021年问世,是一款堪称可改变游戏规则的低功耗MCU。作为STM32高性能低功耗系列旗舰产。

江南官方体育APP下载 上一篇:考单片机编程设计高级证需要哪些条 下一篇:单片机应用编程技巧问答
江南官方体育app 江南官方体育APP下载 新闻中心 产品中心 江南app官方网站 联系我们 网站地图
产品关键词: 低压差线性稳压器 | DC/DC转换器 | AC/DC转换器 | 电源管理单元 | 霍尔开关
白光LED驱动 | 音频功放 | 电压检测 | Li-ion电池充电管理 | 场效应管 | 模拟开关
Copyright [c]2018 江南官方体育app下载网站(JN).注册登录 版权所有 All Rights Reserved.
备案号:粤ICP备170082978号-17 技术支持:江南官方体育app
地 址:深圳市宝安区航城大道航城创新工业园
    A5栋二楼2016-218
联系人:刘先生 13424245917
    张先生 13751282129
电 话:0755-86249117
传 真:0755-26502485
邮 箱:info@ztevone.com