我的开发板是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;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>