检测单片机低电平时间的C语言编程

用init的

#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar ge,shi,bai,qian,ge1,shi1,bai1,qian1,irtime,flag,num,ok,ok1,aa,bb,f=0;
uchar value,j,value1;
sbit shuru=P0^0;
uchar irdata[8];
uchar menory[3];
uchar ircode[4];
uchar disp[8];
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uchar table2[]="tempture is 000.";
void delay_50us(uint t)
{
uchar j;
for(;t>0;t--)
for(j=19;j>0;j--);
}
void init_display(uchar qian,uchar bai,uchar shi,uchar ge)
{
P0=0xff;
P1=table[qian];
P0=0xfe;
delay(2);
P0=0xff;
P0=0xff;
P1=table[bai];
P0=0xfd;
delay(2);
P0=0xff;
P0=0xff;
P1=table[shi];
P0=0xfb;
delay(2);
P0=0xff;
P0=0xff;
P1=table[ge];
P0=0xf7;
delay(2);
P0=0xff;
}
void init()
{
TMOD=0x02;
TH0=0;
TL0=0;
EA=1;
ET0=1;
TR0=1;
}
void init1()
{
IT0=0;
EX0=1;
EA=1;
}
void work()
{
uchar k=0,i;
value1=0;
for(i=0;i<8;i++)
{
if(irdata[k]>1.5
{
value1=value1|0x80;
}
else
{
value1=value1|0x00;
}
value1=value1>>1;
k++;
}
ok1=1;
menory[1]=value1;
}
void irwork()
{table2[12]=menory[1]/100+48;
table2[13]=menory[1]%100/10+48;
}
void main()
{
init();
init1();
while(1)
{
if(ok==1)
{
work();
ok=0;
}
if(ok1==1)
{
irwork();
ok1=0;
}
P2=table2[12];
P1=table2[13];
}
}
void timer0(void) interrupt 1
{
bb++;
if(bb==50){irtime++;bb=0;}
}
void counter0(void) interrupt 0
{
EX0=0;
delay(20);
if(flag)
{
if(irtime>6)
num=0;
else
{
irdata[num]=irtime;
num++;
}
if(num==8)
{
ok=1;
}
flag=0;
}
else
{
flag=1;
irtime=0;bb=0;
}
EX0=1;}
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜