#include <REG51.h>
/*11.0592晶振*/
#define m15_19 14000 //15.19mS
#define m8_68 8000 //8.68mS
#define m1_57 1450 //1.57mS
#define m_75 700 //0.75mS
#define m3_25 3000 //3.25mS
unsigned char Im[4]{0x00,0x00,0x00,0x00};
unsigned char show[2]{0,0};
unsigned char f;
unsigned long m,Tc;
unsigned char Irok;
void VS838_INT1_SET()
{
IT1=1;
//當IT1=0時,為電平觸發方式
//當IT1=1時,為邊沿觸發方式(下降沿有效)
EX1=1;
TM0D=0;//16位定時器
TH0=0;
TL0=0;
TR0=1;//中斷啟動停止位
EA=1;
}
//外部中斷解碼
void Time(void) interrupt 2
{
Tc=TH0*256+TL0;
TH0=0;
TL0=0;
if (Tc>m_68 &&Tc<m15_19)
{
m=0;
f=1;
return;
}
if(f==1)
{
if(Tc>m1_57&&Tc<m3_25)
{
Im[m/8]=Im[m/8]>>1|0x80;
m++;
}
if(Tc>m_75&&Tc<m1_57)
{
Im[m/8]=Im[m/8]>>1;
m++;
}
if(m==32)
{
m=0;
f=0;
if(Im[2]==~Im[3])
{
Irok=1;
}
else
{
Irok=0;
}
}
}
}
void main()
{
IT1=1;
//當IT1=0時,為電平觸發方式
//當IT1=1時,為邊沿觸發方式(下降沿有效)
EX1=1;
TM0D=0;//16位定時器
TH0=0;
TL0=0;
TR0=1;//中斷啟動停止位
EA=1;
while(1)
{
if (Irok==1)
{
show[1]=Im[2] &0x0f;
show[0]=Im[2]>>4;
Irok=0;
}
}
}
雖然還沒寫完 但為什么編譯的時候會顯示這兩行:
unsigned char Im[4]{0x00,0x00,0x00,0x00};
unsigned char show[2]{0,0};
“{” 前缺少 “;” ?
|