[51单片机] 串口通讯 简单通信

简介:


 

 

复制代码
 1 /*-------------------------------------------
 2 简单的串口通信
 3 -------------------------------------------*/
 4 #include<reg51.h>
 5 
 6 #define uint unsigned int
 7 #define uchar unsigned char
 8 
 9 
10 uchar flag,a,i;                    //标志接收串口中断标志,接收SBUF内容
11 uchar code table[]="I get ";
12 /*--------------------------------------------
13 延时函数 
14 ---------------------------------------------*/
15 void delay_ms(uint z)        
16 {
17     uint y;
18     while(z--)
19         for(y=110;y>0;y--);
20 }
21 /*--------------------------------------------
22 USAR初始函数 
23 ---------------------------------------------*/
24 void USRT_init()
25 {
26     TMOD=0x20;            //设置T1定时器工作方式2
27     TH1=0xfd;            //T1定时器装初值
28     TL1=0xfd;
29     TR1=1;                //启动T1定时器
30     REN=1;                //允许串口中断接收
31     SM0=0;                //设定串口工作方式
32     SM1=1;
33     EA=1;                //开总中断
34     ES=1;                //开串口中断
35 }
36 /*--------------------------------------------
37 串口中断程序
38 ---------------------------------------------*/
39 void ser()interrupt 4
40 {
41     RI=0;
42     a=SBUF;
43     flag=1;
44 }
45 /*--------------------------------------------
46 主函数
47 ---------------------------------------------*/
48 void main()
49 {
50     USRT_init();
51     while(1)
52     {
53         if(flag==1)                //检测到串口中断。表示有数据传过来了
54         {
55             ES=0;                //关闭串口中断,接下来要发送数据,如果不关闭每次发送之后串口中断都会执行又进入if(flag==1)那里,然后死循环
56             for(i=0;i<6;i++)    //将table[]中的前6个发送出去
57             {
58                 SBUF=table[i];
59                 while(!TI);        //每次等待发送完毕,再执行下一条
60                 TI=0;            //手动清0
61             }
62             SBUF=a;                //将收到的数据发送出去
63             while(!TI);
64             TI=0;
65             ES=1;
66             flag=0;
67         }
68     }
69 }
复制代码



相关文章
|
2月前
|
芯片
STC15F100E单片机模拟串口
STC15F100E单片机模拟串口
STC15F100E单片机模拟串口
|
2月前
|
存储 数据处理 数据格式
51单片机双机通信实现
51单片机双机通信实现
155 1
|
2月前
|
网络协议 数据处理 数据格式
51单片机ESP8266云端通信的实现
51单片机ESP8266云端通信的实现
272 1
|
10月前
|
内存技术
单片机(MCU)如何才能不死机之串口Overrun
单片机(MCU)如何才能不死机之串口Overrun
【期末不挂科-单片机考前速过系列P7】(第七章:11题速过串行口基本概念/结构/工作方式/双机通信例题)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P7】(第七章:11题速过串行口基本概念/结构/工作方式/双机通信例题)经典例题盘点(带图解析)
|
7天前
单片机IO口模拟串口实现原理
单片机IO口模拟串口实现原理
14 5
|
12月前
|
C语言 芯片 数据格式
C语言课设项目-51单片机-红外通信
C语言课设项目-51单片机-红外通信
108 0
|
2月前
|
网络协议 Linux
嵌入式单片机开源的串口示波器实现方法
嵌入式单片机开源的串口示波器实现方法
31 0
|
2月前
|
监控 物联网
STC51单片机-双机串口通讯-物联网应用系统设计
STC51单片机-双机串口通讯-物联网应用系统设计
89 0
|
8月前
|
存储 开发框架 前端开发
单片机与HC-05蓝牙模块通信
单片机与HC-05蓝牙模块通信
120 0