STC12 系列单片机 C 语言的延时程序
本举例所用 CPU 为 STC12C5412 系列 12 倍速的单片机,只要修改一下参数 值其它系例单片机也通用,适用范围宽。共有三条延时函数说明如下:函数调用 分两级:一级是小于 10US 的延时,二级是大于 10US 的延时 //====================小于 10US 的【用 1US 级延时】
====================//----------微秒级延时---------for(i=X;i>X;i--) 延时时间 =(3+5*X)/12
提示(单位 us,
X 不能大于 255)//================大于
10US0;Ms--)for(i=26;i>0;i--);}i=[(延时值-1.75)*12/Ms-15]/4 如想延时 60US 则 i=[(60-1.75)*12/6-15]/4=25.375≈26; 修改 i 的值=26,再调用上面的【10US 级延时函数】Delay10us(6); 则就精确延时 60US;如果想延时 64US 可以用这二 种函数组合来用: Delay10us(6); for(i=9;i>X;i--) 共延时 64US//============== 对于大于 20Ms 的可用中断来实现程序运行比较好===============中断用定 时器 0,
1Ms 中断:void
timer0(void)
interrupt
1{
TL0=(0xffff-1000+2)%
if(DelayMs_1>0)
0x100;TH0=(0xffff-1000+2)/0x100; //每毫秒执行一次
DelayMs_1--;//大于 20Ms 延时程序}函数调用 void DelayMs(uint a)//延时 a 乘以 1(ms)的时间。{ DelayMs_1=a; while(DelayMs_1);}如果延时 50Ms 则 函数值为 DelayMs(50)tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!