单片机延时程序怎么写

@庞炎19750952094 怎么用C语言做单片机的精确延时 -
******4188蔺袁 在单片机应用中,经常会遇到需要短时间延时的情况,一般都是几十到几百μs,并且需要很高的精度(比如用单片机驱动DS18B20时,误差容许的范围在十几μs以内,不然很容易出错);而某些情况下延时时间较长,用计时器往往有点小题大...

@庞炎19750952094 80c51单片机120秒延时程序怎么编写
******4188蔺袁 void delay(uint z){ uint x,y; for(x=z;x>0;x--) for(y=110000;y>0;y--);}调用delay(120);即可

@庞炎19750952094 单片机的朋友请进!请问,最简单的延时程序是怎么计算的? -
******4188蔺袁 精确计算如下:DELAY: MOV R5,#20 ---1T D1: MOV R6,#20--1T D2: MOV R7,#248 -1T DJNZ R7,$ ----2T,(2) * 248 = 496 DJNZ R6,D2----2T,(1 + 496 + 2) * 20 = 9980 DJNZ R5,D1----2T,(1 + 9980 + 2) * 20 = 199660 RET-------2T, 1 + 199660 + 2 = 1996603 总共,耗用199660 T.时间,关键是要取决于晶振频率.当晶振频率=12MHz,则有 T = 1us.

@庞炎19750952094 51单片机 用c语言 调用 - nop - 编一个 延时一秒 程序 -
******4188蔺袁 这么给你说吧,不同的编译器同样的C语言语句编译出来的时间不完全一致,举个简单例子;for(i=0,i<=100;i++) for(j=0;j<=10;j++); 和 for(i=0,i<=10;i++) for(j=0;j<=100;j++); 其实理论上来讲,这个时间都是一个指令周期*10*100,对吧,但是...

@庞炎19750952094 请给我个单片机汇编程序:用单片机模拟延时继电器,得电后10s闭合. -
******4188蔺袁 第二句.例2 1秒延时子程序: DEL:MOV R7:MOV R7. MCS-51单片机的一个机器周期=6个状态周期=12个时钟周期. MCS-单片机的指令有单字节、双字节和三字节的,#10 ① DEL1:MOV R6,它们的指令周期不尽相同,这时公式⑨不再适用...

@庞炎19750952094 如何用C语言对单片机进行精确延时 -
******4188蔺袁 用 定时器/计数器 实现, 给定时器 寄存器设个初值, 选个工作方式, 时间一到 溢出 产生中断, 在中断 子程序中 调用串口 可以输出延时的时间. 至于初值 设为多少, 那就要看你到底定时多少了. 12M晶震 的机器周期 是 1us 自己算酸 分单字节单周期指令, 双字节单周期指令, 单字节双周期指令.单片机在执行 指令时 首先要取指令和执行指令2步.单周期指令的执行时间 为一个机器周期.比如:如果想要知道 for(;;)这个循怀 到底用了多长时间来执行. 那么你可以 查编译器 这条语句所对应的 操作码和操作数. 然后再区分其到底是什么类型的指令.最后把时间加加 就可以了 .

@庞炎19750952094 怎么写段单片机延时函数?要用定时器!
******4188蔺袁 1、首先分析您的程序, void delay() { int i; if(1 == TF0)//if(TF0==1),查询定时器溢出标志位 { TF0=0; i=10000;//定时溢出时给i赋值1000 TH0=0xDC;TL0=0x00; i--;//i=999,如果还没有减到0时定时器又溢出,则i永远不会减到0!!!!所以您的...

@庞炎19750952094 单片机的延时,延时时间长度是怎么算的?最好有一个例子,来说明! -
******4188蔺袁 延时长度根据你的振荡器的频率和后分频来计算的.最简单就是写一段延时,用示波器测试一下.简单的延时可以用nop循环,长延时尽量用定时器来做.

@庞炎19750952094 单片机怎么能延时执行不耽误正常运转 -
******4188蔺袁 延时有两种方法,一种是用软件延时,即写延时子程序,这种方法是让单片机执行无用的指令,就是为了延时,延时期间就不能做其他事情了,很浪费单片机的时间.这种方法是在单片机不忙的情况下用,反正闲着也是闲着. 第二种方法就是你要求的,即能延时,又不耽误主程序的运行,用定时器T0或T1定时,设置定时时间后,定时器开始计时,主程序继续执行,不用管定时器,当定时时间到,定时器就会申请中断,单片机就响应中断,处理定时子程序需要完成的工作,完成后返回到主程序继续主程序的执行,这是最合理的方法,充分利用了单片机的资源,互不影响.

@庞炎19750952094 单片机延时
******4188蔺袁 你这是死循环延时,太浪费单片计的运行时间了,这也是最低级的写程序的方法. 用定时器中断处理是一种方法,但在定时器不多,或者定时器还有其它用途的场合就不好办了.而且这会打断其它流程的正常操作. 最好的做法是做成周期查询的,类似与操作系统的任务,定一个时间基数,比如1ms,然后单片机产生1ms中断,中断里只对变量A进行加1操作.主程序里任何需要定时的任务,就去查询当前A的值.比如延时就是记下当前的A值,然后等到A的值变到需要的时间值后再执行. 但不要死等A的值变化,主程序应该是轮询式的,到了需要的时间点就去做该做的事,没到时间,主程序就去轮询其它任务.这样的单片机的处理能力才真的被释放出来,这个程序也就有随意添加其他任务的可能.

为传递更多信息,若有事情请联系
数码大全网