/*************用两个IO口,读取,方波的时间差,用外部中断0和1,分别计数,
定时器0和1,同时触发,然后各自记10个下降沿,分别停止,定时时间差即方波时间差************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit U_FR=P1^5;
sbit I_FR=P1^6;
uint num1=0;
uint num2=0;
/*************启动子函数************/
void start(void)
{
uchar m,n;
m=U_FR;
n=I_FR;
if(m==0||n==0)
{
TR0=1;
TR1=1;
}
if(num1==10)
{
TR0=0;
}
if(num2==10)
{
TR1=0;
}
}
/*************EX0,EX1,外部中断************/
void ZD0(void) interrupt 0
{
U_FR=0;
num1++;
}
void ZD1(void) interrupt 1
{
I_FR=0;
num2++;
}
/*************T0,T1,初始化函数************/
void
timer0_init(void)
{
TH0=0;
TL0=0;
}
void Timer1_init(void)
{
TH1=0;
TL1=0;
}
/*************主函数************/
void main()
{
uint x,y,z;//z为时间差
EA=1;
EX1=1;
EX0=1;
IT1=0;
IT0=0;
TMOD=0x00;
TH0=0;
TL0=0;
TH1=0;
TL1=0;
start();
x=TL1-TL0;
y=TH1-TH0;//////////然后用液晶屏显示想x,y
}
一周热门 更多>