⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 摇棒设计
💻 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 + -