#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;
}
|