软件延时的误区

发布者:uioo9158最新更新时间:2016-08-15 来源: eefocus关键字:软件延时  误区 手机看文章 扫描二维码
随时随地手机看文章
通常在大学里学习单片机编程,老师都是教导要写程序流程,而且写出来的流程几乎是一条长龙偶尔附加点分支判断。这样写出来的程序条理比较清晰、易懂,但是通常问题多多,比如我突然间要加点东西进去,发现系统不正常了。

往往这些问题都是整个流程上附加的延时过多导致的。延时程序是比较直观明了的程序,但是也破坏单片机的整机性能,因为延时单片机处于全速运行状态。

我现在的脑海想起以前写的流程:初始化->显示->按键->其他功能->结束。

1.比如说显示,肉眼不可分辨是50HZ以上,所以说用4个数码管动态显示平均每个显示是5ms。按照以前的观点是这样写的 第一个数码管点亮->延时几毫秒、灭第一个、点亮第二个->...->延时、灭最后个、点亮第一个。 如果8个数码管的动态显示,岂不是得有 8 * 几毫秒的 延时。

2.还有个按键,按键得有个去除抖动,通常是软件延时,大约在20ms, 如果在加上显示的几十毫秒,那这延时是相当恐怖的。

3.其他功能函数也是有附带延时,特别是驱动程序,比如MAX7279读取操作都是需要一定延时,但是这种延时都是在us级别,对比与ms级别可以忽略。

笔者建议写程序,特别写到延时程序,考虑下你的延时得多久,如果是ms级别,考虑用定时器中断处理。

比如说显示程序。假如8个数码管动态显示。那么你就得考虑20ms内8个数码管刷新一次,那么意味着每个数码管显示时间为2.5ms。

那么程序如下:

volatile unsigned char time_2500_flag;          //2.5ms标志

void TimerA(void) //定时器初始化

{

       //初始化,配置为500us中断一次

}

#pragma interrupt_handler TimerA_ISR:NUM
void Timer1_ISR(void)  //中断服务程序

{

     static unsigned char   cnt = 0;

        //reload 重新赋值

       if (++cnt > 5)

      {

              cnt = 0;

             time_2500_flag = 1;

       } 

}

 

void Display(void)

{

      ;

}

 

void main(void)

{

        //初始化

        for (;;)

      {

               if (time_2500_flag == 1)

              {

                     time_2500_flag = 0;

                    Display();

              }

      }

}

 

程序写到这里。

显示程序这里要做特别处理,执行一次显示程序,数码管依次点亮就OK。

关键字:软件延时  误区 引用地址:软件延时的误区

上一篇:MSP430G2553测试程序(串口程序,USCI模式)
下一篇:单片机4个按键菜单

推荐阅读最新更新时间:2024-03-16 15:05

蓄电池工作原理以及使用误区
蓄电池是电池中的一种,它的作用是能把有限的电能储存起来,在合适的地方使用。它的工作原理就是把化学能转化为电能。 它用填满海绵状铅的铅板作负极,填满二氧化铅的铅板作正极,并用22~28%的稀硫酸作电解质。在充电时,电能转化为化学能,放电时化学能又转化为电能。电池在放电时,金属铅是负极,发生氧化反应,被氧化为硫酸铅;二氧化铅是正极,发生还原反应,被还原为硫酸铅。电池在用直流电充电时,两极分别生成铅和二氧化铅。移去电源后,它又恢复到放电前的状态,组成化学电池。铅蓄电池是能反复充电、放电的电池,叫做二次电池。它的电压是2V,通常把三个铅蓄电池串联起来使用,电压是6V。汽车上用的是6个铅蓄电池串联成12V的电池组。铅蓄电池在使用一段时间后
[电源管理]
走出变频器节能的误区
当一些文献宣称变频调速器是节电控制产品时,不免给人感觉只要使用变频调速器都能节电。其实不然,实际上,变频调速器之所以能够节电,是因为其能对电动机进行调速,其节能效果仅在特定负载时才有明显效果。如果说变频调速器是节电控制产品的话,那么所有的调速设备也都可以说是节电控制产品。事实上变频调速器只不过比其它调速设备效率和功率因数略高罢了。    变频器 节能原理   为了保证生产的可靠性,各种生产机械在设计配用动力驱动时,都留有一定的富余量。电机不能在满负荷下运行,除达到动力驱动要求外,多余的力矩增加了有功功率的消耗,造成电能的浪费,在压力偏高时,可降低电机的运行速度,使其在恒压的同时节约电能。   当电机转速从N1变到N2时,其电
[嵌入式]
C51软件精确延时(us级)
C语言代码如下: /*---------------------------------------------------------------------- Function: 软件精确延时 Descripton: 一种是利用C51的赋值、比较、自减三个单周期指令实现的软件延时; 另一种是利用C51库函数_nop_()软件延时一个机器周期。 系统晶振频率为: 11.0592MHz Author: Zhang Kaizhou Date: 2019-6-19 11:51:55 -----------------------------------------------------------------------*/ #
[单片机]
兆欧表的操作使用误区
兆欧表的操作使用误区 针对摇测10kV变压器的绝缘值,使用ZC系列携带型兆欧表,有的存在三个误区:??   误区一:    兆欧表的额定电压与被测电气设备的电压不相适应。即测试变压器高压和低压线圈应使用不同的兆欧表;对0.4kV侧线圈的绝缘施加交流2kV作为耐压试验电压,在60s内无击穿、闪络等异常情形,而10kV则是施加交流42kV作为耐压试验电压。所以测量高压对低压、高压对地及铁芯对地的绝缘电阻值应使用2500V,量程为2500MΩ以上的兆欧表。0.4kV侧的低压对地只能使用500V或1000V的兆欧表。若用500V及1000V的兆欧表测量额定电压高于500V和1000V的高压侧,测量结果有误差。若用额定电压太高
[模拟电子]
交流供电电缆线径选择的十个误区分析
   机房供配电系统设计有一定的规范,用户新建机房供配电系统时,应通过设计单位选择合适的交流 线径,严格按设计文件施工。对于现有机房新增一般性负载,往往由用户自行设计并安装。   安全用电是动力设备安装与维护人员的基本要求,所有安装与维护人员都有必要了解交流电缆 线径选择的方法和原则。维护人员在日常工作中不局限于发现设备潜在故障,也应关注线缆等配套设备存在的风险,实现精细化维护。在具体的安装与维护工作中,不少工程师对电缆线径的选择存在着一些误区,需要对这些误区进行分析。选择了错误的电缆线径,轻则增加了建设或运行成本,重则可能带来巨大的安全隐患。   本文列出的十个误区都是工程与维护人员容易发生的,事实上导线线径
[电源管理]
交流供电电缆线径选择的十个<font color='red'>误区</font>分析
工业机器人应用的十大误区(一)
投资通常从几万到百万美元,在第一时间作出正确的选择并且避免常见的错误是非常重要的,因为错误将导致不必要的开支或者任务的延期。为了帮助和设计人员避免最严重的错误,文中列出了机器人应用需要避免的十大误区。 误区一:低估了有效负荷和惯性 机器人应用的误区,排在第一位的是低估了有效负荷和惯性需求。通常大多是由于在计算负荷时没有包括臂末端所装工具的重量导致的。其次造成这个错误的缘由是低估或者忽略了偏心负荷产生的惯性力。 惯性力有可能造成机器人轴的超负荷。在机器人中,旋转轴的超负荷是很常见的。这个问题不纠正也会对机器人造成伤害,减少负荷或者减小速度参数可以应对这种情况。但是,减小速度将会增加周期时间,作为投资回报,减少一部分的周期在置办机
[机器人]
利用Keil u3调试,精确实现软件延时
用定时器延时,有时候显得有点麻烦,我们不如考虑软件精确延时,软件延时无非就是利用for或while多重循环。以前用到延时函数时,都是从网上下载别人写好的延时子程序。延时5ms,400ms,1s, ,这些延时函数的函数名中都清清楚楚地标明了延时的时间,可我一直不知道这些函数是如何编写的,确切地说,是如果根据延时时间来确定循环次数的。如果是纳秒级的延时,可以通过示波器来观察波形,或者反汇编一下,计算一下指令执行时间,但如果延时时间相对较长,示波器便无能为力了。这几天好好看了一下Keil调试,发现Keil的功能实在是太强大了。利用Keil uVersion的调试就可以写出精确的软件延时程序。以下是我的简单小结,文中所有程序都是在Xtal=
[单片机]
粉尘防爆电机选择误区_如何选择粉尘防爆电机型号
  粉尘防爆电机选择误区   1、一般就是用户在选购防爆电机时,往往被一些相对价格较低的产品所诱惑。因为有绝大多数的防爆使用者认为防爆电机这种产品已经是市面上非常成熟的产品,存在的时间也比较长,而且本身也没有太高的技术含量,可以使用就可以,他们不知道的是,价格低廉的防爆电机产品,而且用户在使用的过程中,会出现各种各样的故障,影响用户正常的生产安全,也会直接给用户带来不必要的经济损失   2、还有一种情况下,用户在采购防爆电机的时候,如果本身对于电机知识不是很精通的话,认为只是简单的来使用防爆电机,那么有很多的用户会只关注电机的功率,把功率做为选购的主要技术参数。      如何选择粉尘防爆电机型号   1、可燃性粉尘存在致
[嵌入式]
粉尘防爆电机选择<font color='red'>误区</font>_如何选择粉尘防爆电机型号
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved