📄 main.c
字号:
#include<AT89x52.h>
#include"sci.h"
const unsigned char Disp[]={0x40,0xf3,0x88,0xa0,0x32,0x24,0x04,0xf0,0x00,0x20,0x10,0x06,0x4c,0x80,0x0c,0x1c,0x12};
#define LongToBin(n) \
(\
((n >> 21) & 0x80) | \
((n >> 18) & 0x40) | \
((n >> 15) & 0x20) | \
((n >> 12) & 0x10) | \
((n >> 9) & 0x08) | \
((n >> 6) & 0x04) | \
((n >> 3) & 0x02) | \
((n ) & 0x01) \
)
#define Bin(n) LongToBin(0x##n##l)
unsigned int flag=0;
unsigned int tmp;
unsigned int time=65536;
unsigned int count;
unsigned int word;
//int0 interrupt service program
void S_INT0() interrupt 0
{
time=count;
if(time<30)
P1=0xff;
else
P1=Disp[500/time];
outint(time);
count=0;
word++;
}
//T2 interrupt service program
void S_T2() interrupt 5
{
count++;
TF2 = 0;
}
main()
{
Sci_init(48);
PX0=1;//INT0 high interrupt priority
EX0=1;//external interrupt allowed
IT0=1;//INT0 choose decrease edge leap
//T2 TIME COUNTER initialize
RCAP2L = 0xcb;
RCAP2H = 0xfa;
TL2 = 0xcb;
TH2 = 0xfa;
CP_RL2= 0; /* 0=Reload, 1=Capture select */
C_T2 = 0; /* 0=Timer, 1=Counter */
TR2 = 1; /* 0=Stop timer, 1=Start timer */
EXEN2= 0; /* Timer 2 external enable */
TCLK = 0; /* 0=Serial clock uses Timer 1 overflow, 1=Timer 2 */
RCLK = 0; /* 0=Serial clock uses Timer 1 overflow, 1=Timer 2 */
EXF2 = 0; /* Timer 2 external flag */
TF2 = 0; /* Timer 2 overflow flag */
ET2 = 1;
PT2 = 1;
EA=1;
P1=0xff;
P1=0xff;
P1=0xff;
P1=0xff;
P1=0xff;
for(;;)
{
//outstring("电流超出设定的阀值");
//outstring("我是翁华");
//显示"W"
if(word%140<=20)
{
tmp=count;
//晶振有关
if((tmp<=time*1/14||tmp>=time*13/14))
{P0=~Bin(11111111); P2=~Bin(11111111);}
else if(tmp<=time*2/14||tmp>=time*12/14 )
{P0=~Bin(00000000); P2=~Bin(00011111);}
else if(tmp<=time*3/14||tmp>=time*11/14 )
{P0=~Bin(00000000); P2=~Bin(01100111);}
else if(tmp<=time*4/14||tmp>=time*10/14 )
{P0=~Bin(10000000); P2=~Bin(10000111);}
else if(tmp<=time*5/14||tmp>=time*9/14 )
{P0=~Bin(01100000); P2=~Bin(00000111);}
else if(tmp<=time*6/14||tmp>=time*8/14 )
{P0=~Bin(00011000); P2=~Bin(00000111);}
else if(tmp<=time*8/14)
{P0=~Bin(00000110); P2=~Bin(00000111);}
}//end if(W)
//显示'H'
else if(word%140<=40)
{
tmp=count;
if((tmp<=time*3/22||tmp>=time*19/22))
{P0=~Bin(11111111); P2=~Bin(11111111);}
else
{P0=~Bin(11100000); P2=~Bin(00000111);}
}//end if(H)
//显示 '0'
else if(word%140<=60)
{
tmp=count;
if((tmp<=time*3/22||tmp>=time*19/22))
{P0=~Bin(11111111); P2=~Bin(11111111);}
else
{P0=~Bin(00000011); P2=~Bin(00011111);}
}//end if(word<=10)
//显示'1'
else if(word%140<=80)
{
tmp=count;
if((tmp>=time*9/22&&tmp<=time*13/22) )
{P0=~Bin(11111111); P2=~Bin(11111111);}
else
{P0=~Bin(00000000); P2=~Bin(00000111);}
}//end if(1)
//显示'I'
else if(word%140<=100)
{
tmp=count;
if((tmp>=time*9/22&&tmp<=time*13/22) )
{P0=~Bin(11111111); P2=~Bin(11111111);}
else if(tmp>=time*7/22&&tmp<=time*15/22)
{P0=~Bin(00000011); P2=~Bin(00011111);}
else
{P0=~Bin(00000000); P2=~Bin(00000111);}
}
//显示心
else if(word%140<=120)
{
tmp=count;
if((tmp<=time*1/18||tmp>=time*17/18))
{P0=~Bin(00011000); P2=~Bin(00000111);}
else if(tmp<=time*2/18||tmp>=time*16/18 )
{P0=~Bin(00011100); P2=~Bin(00000111);}
else if(tmp<=time*3/18||tmp>=time*15/18 )
{P0=~Bin(00110110); P2=~Bin(00000111);}
else if(tmp<=time*4/18||tmp>=time*14/18 )
{P0=~Bin(01100110); P2=~Bin(00000111);}
else if(tmp<=time*5/18||tmp>=time*13/18 )
{P0=~Bin(11000011); P2=~Bin(00000111);}
else if(tmp<=time*6/18||tmp>=time*12/18 )
{P0=~Bin(10000011); P2=~Bin(10000111);}
else if(tmp<=time*7/18||tmp>=time*11/18 )
{P0=~Bin(00000110); P2=~Bin(11000111);}
else if(tmp<=time*8/18||tmp>=time*10/18 )
{P0=~Bin(00001100); P2=~Bin(01100111);}
else if(tmp<=time*10/18)
{P0=~Bin(00011100); P2=~Bin(00110111);}
}//end if(心)
//显示U
else if(word%140<=140)
{
tmp=count;
if((tmp>=time*0/13&&tmp<=time*4/22||tmp>=time*18/22&&tmp<=time*22/22) )
{P0=~Bin(11111111); P2=~Bin(11100111);}
else if((tmp>=time*7/22&&tmp<=time*15/22))
{P0=~Bin(00000000); P2=~Bin(00111111);}
else if(tmp>=time*4/22&&tmp<=time*7/22||tmp>=time*15/22&&tmp<=time*18/22)
{P0=~Bin(00000000); P2=~Bin(01110111);}
else
{P0=~Bin(00000000); P2=~Bin(00000111);}
}//end if(U)
}//end for
}//end main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -