两单片机间的串口通信

来源:互联网 发布:淘宝4颗心是多少分 编辑:程序博客网 时间:2024/05/02 17:04

单片机间的串口通信

注意:

将两单片机的RXD和TXD交叉连接,并GND共地...


程序功能:

发送单片机发送0至F 16字符在接收单片机数码管显示;

///发送单片机的程序#include<reg52.h> void delay()  //X毫秒{ uint i,j; for(i=10;i>0;i--)  for(j=110;j>0;j--);} void send(uchar key_num){ SBUF=key_num;while(!TI);TI=0;} void keyscan(){uchar temp,key;P1=0xfe;temp=P1;temp=temp&0xf0;if(temp!=0xf0)  {delay();temp=P1;temp=temp&0xf0; if(temp!=0xf0){temp=P1;switch(temp){case 0xee:key=0;break;case 0xde:key=1;break;case 0xbe:key=2;break;case 0x7e:key=3;break;}while(temp!=0xf0){ temp=P3;temp=temp&0xf0;}send(key);}} P1=0xfd;temp=P1;temp=temp&0xf0;if(temp!=0xf0)  {delay();temp=P1;temp=temp&0xf0; if(temp!=0xf0){temp=P1;switch(temp){case 0xed:key=4;break;case 0xdd:key=5;break;case 0xbd:key=6;break;case 0x7d:key=7;break;}while(temp!=0xf0){ temp=P3;temp=temp&0xf0;}send(key);}} P1=0xfb;temp=P1;temp=temp&0xf0;if(temp!=0xf0)  {delay();temp=P1;temp=temp&0xf0; if(temp!=0xf0){temp=P1;switch(temp){case 0xeb:key=8;break;case 0xdb:key=9;break;case 0xbb:key=10;break;case 0x7b:key=11;break;}while(temp!=0xf0){ temp=P3;temp=temp&0xf0;}send(key);}} P1=0xf7;temp=P1;temp=temp&0xf0;if(temp!=0xf0)  {delay();temp=P1;temp=temp&0xf0; if(temp!=0xf0){temp=P1;switch(temp){case 0xe7:key=12;break;case 0xd7:key=13;break;case 0xb7:key=14;break;case 0x77:key=15;break;}while(temp!=0xf0){ temp=P3;temp=temp&0xf0;}send(key);}}  } void main(){TMOD=0x20;TH1=0xfd;TL1=0xfd;TR1=1;SM0=0;SM1=1;EA=1;ES=1;while(1){keyscan();} }  


接收单片机的程序

 

#include<reg52.h> #define uint unsigned int#define uchar unsigned char uchar code tabled[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void display(uchar num){P0=tabled[num];  //数码管段选  P0口;P2=0;          //数码管位选;} void main(){TMOD=0x20;TH1=0xfd;TL1=0xfd;TR1=1;REN=1;SM0=0;SM1=1;EA=1;ES=1;while(1); } void ser() interrupt 4{uchar a;RI=0;a=SBUF;display(a);}

 


原创粉丝点击