#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar a,temp,flag;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void init()
{
TMOD=0X20;//T1工作方式设置为8位自动重装
TH1=0xfd; //赋值
TL1=0xfd;
TR1=1; //启动T1
SM0=0; //开启10位异步收发器
SM1=1;
REN=1; //启动接受
//IE=0x90; 1001 0000
EA=1; //开总中断
ES=1; //串行口中断允许位
}
void main()
{
init();
while(1)
{
if(flag==1)
{
ES=0;//关串口中断
P3=0xfe;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
temp=P3;
a=temp;
}
SBUF=a; //发送数据
while(!TI); //检测发送完毕
TI=0;
ES=1;
flag=0;
}
}
}
void ckzd() interrupt 4
{
RI=0;
a=SBUF; //接收数据
flag=1;
}
|