#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit smg1=P2^7;
sbit smg2=P2^6;
sbit smg3=P2^5;
sbit smg4=P2^4;
sbit beep=P3^4; //蜂鸣器
sbit key0=P2^0; // --
sbit key1=P2^1; // ++
sbit key2=P2^2; // 发送数据
sbit key3=P2^3; // 切换模式
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
bit flag=0;
uint number=10;
void delayms(uint ms)
{
uint i,j;
for(i=ms;i>0;i--)
for(j=110;j>0;j--);
}
void display()
{
uint temp=number;
uint ge,shi,bai,qian;
ge = temp%10;
qian = temp/1000;
shi = (temp%100-ge)/10;
bai= temp/100-qian*10;
smg4=0;
P0=table[ge];
delayms(5);
smg4=1;
P0=0xff;
smg3=0;
P0=table[shi];
delayms(5);
smg3=1;
P0=0xff;
smg2=0;
P0=table[bai];
delayms(5);
smg2=1;
P0=0xff;
smg1=0;
P0=table[qian];
delayms(5);
smg1=1;
P0=0xff;
}
void bee()
{
beep=0;
delayms(100);
beep=1;
}
void keyscan()
{
if(key1==0) //++
{
delayms(10);
if(key1==0)
{
while(!key1);
bee();
if(number<9999)
number++;
else
number=0;
}
}
if(key0==0) //++
{
delayms(10);
if(key0==0)
{
while(!key0);
bee();
if(number>0)
number--;
else
number=0;
}
}
if(key2==0) //发送数据
{
delayms(10);
if(key2==0)
{
while(!key2);
flag=1;
}
}
}
void init() // 初始化
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
void charge()
{
keyscan();
display();
if(flag)
{
ES=0;
SBUF=number;
while(!TI);
TI=0;
flag=0;
ES=1;
}
}
void main()
{
init();
while(1)
{
charge();
}
}
void ser() interrupt 4
{
RI=0;
number=SBUF;
display();
}
串口通信_迷之BUG
最新推荐文章于 2023-04-20 10:54:09 发布