2min?为什么这几天这么多都在问这么久的延时,不知道你为什么要这么长延时,如果只是单纯的2min延时别的什么都不做的话那一般的延时函数是这样的(单片机晶振12M情况下,12T周期):
void Delay_100MS(unsigned int x)
{
unsigned int a,b;
for(a = x; a > 0; a--)
for(b = 11000; b > 0;b--);
}
你只需要用Delay_MS(1200);就可以,但是这么久的延时是很不科学的,这个思路也很不可取。要2min的时间可以用定时器,这样既准确又不会影响主程序的运行。祝成功~
编个子程序(函数)延时1秒,然后调用它120次。1秒的延时,看你使用的晶振,计算每条指令的时间,反复执行空操作。
DELAY2MIN:
MOV R2,#120
DELAYS:
MOV R3,#10
DELAYMS:
MOV R4,#200
DLY:
MOV R5,#248
DJNZ R5,$
DJNZ R4,DLY
DJNZ R3,DELAYMS
DJNZ R2,DELAYS
RET
多搞几重循环,重复执行NOP,根据频率算了下得执行多少次