微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 定时问题,程序不进行定时

定时问题,程序不进行定时

时间: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++;
}   

我熟练的是汇编,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--)就可以了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top