两个51相互之间单片机如何进行串口通信

本文总字数:1650,阅读预计需要:4分钟

 

 

复制代码
只进行发送是数据的单片机
1
#include<reg52.h> 2 #define unit unsigned int 3 #define uchar unsigned char 4 5 sbit key=P3^7; 6 7 /*void delayms(unit xms) 8 { 9 unit i,j; 10 for(i=xms;i>0;i--) 11 for(j=580;j>0;j--); 12 } */ 13 14 void send(uchar date) 15 { 16 SBUF=date; 17 while(!TI); 18 TI=0; 19 } 20 21 void chuaninit() 22 { 23 TMOD=0X20; 24 TH1=0Xfd; 25 TL1=0Xfd; 26 SM0=0; 27 SM1=1; 28 ES=1; 29 EA=1; 30 TR1=1; 31 } 32 33 void key1() 34 { 35 uchar d; 36 if(key==0) 37 { 38 d=2; 39 send(d); 40 } 41 else 42 { 43 d=4; 44 send(d); 45 } 46 } 47 48 void main() 49 { 50 chuaninit(); 51 while(1) 52 { 53 key1(); 54 } 55 56 }
复制代码

 

 

复制代码
只进行数据接受的单片机
1
#include<reg52.h> 2 #define unit unsigned int 3 #define uchar unsigned char 4 typedef unsigned char u8; 5 6 sbit led=P3^7; 7 sbit LSA=P2^2; 8 sbit LSB=P2^3; 9 sbit LSC=P2^4; 10 11 u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 12 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//显示0~F的值 13 14 void chuaninit() 15 { 16 TMOD=0X20; 17 TH1=0Xfd; 18 TL1=0Xfd; 19 SM0=0; 20 SM1=1; 21 REN=1; 22 ES=1; 23 EA=1; 24 TR1=1; 25 } 26 27 void display(uchar num) 28 { 29 LSA=1; 30 LSB=1; 31 LSC=1; 32 P0=smgduan[num]; 33 } 34 35 36 void main() 37 { 38 chuaninit(); 39 LSA=1; 40 LSB=1; 41 LSC=1; 42 P0=smgduan[3]; 43 while(1); 44 } 45 46 void chuan() interrupt 4 47 { 48 uchar a; 49 RI=0; 50 a=SBUF; 51 display(a); 52 }
复制代码

 

posted @   北极星!  阅读(3416)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示