永发信息网

单片机延时函数

答案:4  悬赏:10  手机版
解决时间 2021-02-27 03:24
  • 提问者网友:不爱我么
  • 2021-02-26 23:23
延时程序应该和单片机的晶振频率有关吧,如果我的晶振是11.0592MHz的,请给出一个延时函数?例如我调用delay(1);时,就延时1毫秒,谢谢
最佳答案
  • 五星知识达人网友:底特律间谍
  • 2021-02-27 00:17
精确延时要用汇编来写。C语言延时时间会受到很多因素影响,例如编译器优化、中断等等。
另外你根本没有说明自己所使用的单片机类型。这世界上的单片机种类无数……
全部回答
  • 1楼网友:第幾種人
  • 2021-02-27 03:16
c语言: void delay(unsigned char a) { unsigned char i,j; for(i=0;i
  • 2楼网友:duile
  • 2021-02-27 01:48
一个时钟周期=晶振的倒数 51单片机的一个机器周期=6个状态周期=12个时钟周期 一个单周期指令包括一个机器周期,即12个时钟周期,所以12m晶振的话一条单周期指令执行的时间为12*(1除12m)=1us 延时更多的话往上乘就是了
  • 3楼网友:污到你湿
  • 2021-02-27 01:36
STC89C52RC单片机也是属于51内核的。 如果是用C语言编写: void delay1ms(void) //误差 -0.651041666667us { unsigned char a,b; for(b=102;b>0;b--) for(a=3;a>0;a--); } 如果使用汇编语言编写: ;参数寄存器:R2 存放延时时间的倍数 DELAY1MS: ;误差 -0.651041666667us START: MOV R6,#04H DL0: MOV R5,#71H DJNZ R5,$ DJNZ R6,DL0 DJNZ R2,START RET
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯