#include <STC89C5xRC.H>
#define RELOAD_COUNT 0xF9 //宏定义波特率发生器的载入值 4800
void UartInit(void) //9600bps@12.000MHz
{
SCON|=0X50; //设置为工作方式1
TMOD|=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
TH1=RELOAD_COUNT; //计数器初始值设置
TL1=TH1;
EA=1; //打开总中断
TR1=1; //打开计数器
ES=1; //打开接收中断
}
void Delay100ms() //@12.000MHz
{
unsigned char i, j;
i = 195;
j = 138;
do
{
while (--j);
} while (--i);
}
void Unit() interrupt 4//接收中断
{
int receivedata=SBUF;//储存初值
receivedata%=10;
if(receivedata==0) P2=0xff;
else{
if(((~P2)&((1<<(receivedata-1))))&(1<<(receivedata-1))) P2|=(1<<(receivedata-1));//输入的值对应的灯已经亮起时,熄灭它
else P2&=~(1<<(receivedata-1));}//输入的值对应的灯未亮起时,点亮它
RI=0;//标志位清零
}
void main()
{
int num;
UartInit();
while(1)
{
P1=0xf0;
if(P1!=0xf0)
{
if(P1==0x70) num=1;
if(P1==0xb0) num=5;
if(P1==0xd0) num=9;
if(P1==0xe0) num=13;
P1=0x0f;
if(P1==0x07) num+=0;
if(P1==0x0b) num+=1;
if(P1==0x0d) num+=2;
if(P1==0x0e) num+=3;
while(P1!=0x0f);
Delay100ms();//延时消抖
SBUF=num;//发送数据
while(TI==0);//延时处理
TI=0;
}
}
}
双机通信
最新推荐文章于 2023-07-29 16:18:08 发布