求求大神帮我看下我的程序,我调试不出来了

2019-07-21 07:38发布

我的开发板是c51的,这个程序功能是记录一个引脚发生2次变化的时间,以下代码测不出引脚发生2次变化的时间,求求大神帮帮我看看#include <stdio.h>
#include <reg52.h>

unsigned int TF0_COUT = 0;   //记录中断次数
typedef unsigned int unint;
sbit date =P1^0; //定义输入状态发生变化的引脚
unint time=0;

void InitUART(void)//使用定时器1作为串口波特率发生器
{
    TH1 = 0xF3;         //晶振12mhz 波特率设为2400
    TL1 = TH1;
    TMOD |= 0x20;         //定时器1方式2
    SCON = 0x50;         //串口接收使能
    ES = 1;                         //串口中断使能
    TR1 = 1;                 //定时器1使能
    TI = 1;                         //发送中断标记位,必须设置
}
void InitTimer0(void)  //定时器0
{
   TMOD |= 0x01;         //定时器1
   TH0=0;
   TL0=0;
   ET0=1;//开放T0中断请求
   TR0=0;  //关定时器
}

//毫秒延时函数
void delay_ms(unsigned int t)
{
    unsigned char a,b;
    while(t--)
    {
      for(b=102;b>0;b--)
      for(a=3;a>0;a--);
    }
}

void main()
{
    unint time_data,out_TH0,out_TL0;
        InitUART();        //初始化串口
        InitTimer0();//初始化定时器0
    EA = 1;                  //开总中断
        date=1;
    while(1)
    {
            while(date==0);         //记录发生2次变化的时间
                TR0=1;
            while(date==0)
                TR0=0;       
                out_TH0 = TH0; //取定时器的值
        out_TL0 = TL0;
        out_TH0 <<= 8;  //右移8位
        time_data = out_TH0 | out_TL0; //合并为16位的值
                printf("%d ",time_data);//串口打印结果
            delay_ms(1000);
                TH0=0;
        TL0=0;
    }
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。