單片機發送端
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
unsigned char num; //全局變量 發送的就是num數據
sbit k1=P3^4; //按鍵定義 定義四個按鍵
sbit k2=P3^5;
sbit k3=P3^6;
sbit k4=P3^7;
void delay(void) //延時函數 這里用不到 加上去以防萬一
{
unsigned char m,n;
for(m=0;m<200;m++)
for(n=0;n<250;n++)
;
}
void Send(unsigned char dat) //發送數據函數
{
SBUF=dat; //發送的數據放進sbuf寄存器中
while(TI==0) //如果TI等于0 則在此處一直等待
;
TI=0; //發送完之后 手動清零 防止影響下次發送
}
void charnum ()
{
if(k1==0) //對要發送的數據進行賦值
{
num=1;
while(!k1);
}
else if(k2==0)
{
num=2;
while(!k2);
}
else if(k3==0)
{
num=3;
while(!k1);
}
else if(k4==0)
{
num=4;
while(!k2);
}
}
void main(void)
{
TMOD=0X20; //
SCON=0X40;
PCON=0X00; //波特率不加倍
TH1=0Xfd; //波特率設置為9600
TL1=0xfd;
EA=1; //打開總中斷
ES=1; //打開串口中斷
TR1=1; //打開計時器
while(1)
{
charnum ();
Send(num);
}
}
單片機接收端
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
unsigned char dat,num;
unsigned char Receive(void)
{
while(RI==0);
RI=0;
dat=SBUF;
return dat;
}
void main(void)
{
TMOD=0X20;
SCON=0X50;
PCON=0X00;
TH1=0Xfd;
TL1=0xfd;
TR1=1;
REN=1;
while(1)
{
num=Receive();
switch(num)
{
case 1:P1=0xfe; break;
case 2:P1=0xfc; break;
case 3:P1=0xfd; break;
case 4:P1=0xff; break;
}
}
}
|