定时问题,程序不进行定时
时间:10-02
整理:3721RD
点击:
#include<reg52.h>
#define uint unsigned int
int tt;
sbit D0=P1^0;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x++)
for(y=110;y>0;y++);
}
void main(void)
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
if(tt==20)
{
tt=0;
D0=0;
delay(1000);
}
}
void exter0() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
tt++;
}
#define uint unsigned int
int tt;
sbit D0=P1^0;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x++)
for(y=110;y>0;y++);
}
void main(void)
{
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
if(tt==20)
{
tt=0;
D0=0;
delay(1000);
}
}
void exter0() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
tt++;
}
我熟练的是汇编,C懂些,你那delay函数有问题 for(x=z;x>0;x++)这句话会是一个死循环,建议程序还是自己调试。自己找出错误的感觉不一样
delay()函数错了啊
delay进入死循环了、
谢谢楼上的,除了delay函数,我发现应该要在主函数里面加入while(1)
主函数要加while(1){
}
delay()函数里面++都改为--
延时函数delay中for(x=z;x>0;x++),会出现x的值一直自加,永远满足大于0的情况,陷入死循环,而且主函数里加个while(1),死循环,否则函数进行一次就结束了
x--,y--,主函数要循环while(1),定时值为65536-。
for(x=z;x>0;x++)永远不会跳出来的,一直在死循环。改成for(x=z;x>0;x--)就可以了