1. 怎么编写时间延时程序
中断里边定义个变量 ulong Counter = 0,DelayTime; sbit TimeFlag = 0; void Timer0(void) interrupt 1 { Counter++; if(Counter == DelayTime)TimeFlag = 1; } delay(ulong i) { EA = 0; TimeFlag = 0; DelayTime = Counter+i+1; EA = 1; } void main(void) { delay(10); while(1) { 。
.. 。
.. if(TimeFlag)break; } }。
2. 单片机延迟程序详解
如果是51,晶振是12M,你的程序可延迟4ms左右
如果一定要用它延迟40ms,那就把晶振换成1M左右的吧!
晶振12M时,一条DJNZ花的时间是2us,
MOV R5,#108h 花的时间是1us
RET 花的时间是2us
你算一下它们执行了几次,把他们花掉的时间加起来,就是延迟时间了.
你可以参巧延迟算法:
你可以参巧指令周期:
/user_default.aspx?u=Andymio&page=5