简单的串口通信 (开始复习51,准备部门的招新培训)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的串口通信 (开始复习51,准备部门的招新培训)相关的知识,希望对你有一定的参考价值。

 1 /*-------------------------------------------
 2 51串口通信
 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 USRT初始化函数 
23 ---------------------------------------------*/
24 void USRT_init()
25 {
26     TMOD=0x20;            //设置T1定时器工作方式2
27     TH1=0xfd;            //T1定时器装初值
28     TL1=0xfd;             //T1定时器装初值
29     TR1=1;                //启动T1定时器
30     REN=1;                //允许串口中断接收
31     SM0=0;                //设定串口工作方式1
32     SM1=1;                //设定串口工作方式1
33     EA=1;                //开总中断
34     ES=1;                //开串口中断
35 }
36 /*--------------------------------------------
37 串口中断服务程序
38 ---------------------------------------------*/
39 void ser()interrupt 4
40 {
41     RI=0;      //接收中断标志位,中断被硬件置1,所以要软件清零
42     a=SBUF;     //将SBUF中的数据读走给a
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);        //TI置1,开启发送中断,每次等待发送完毕,再执行下一条
60                 TI=0;            //手动清0
61             }
62             SBUF=a;                //将收到的数据发送出去,即i get后面的内容
63             while(!TI);
64             TI=0;
65             ES=1;
66             flag=0;
67         }
68     }
69 }

技术分享

之前发代码竟然是直接复制的,好智障

 

以上是关于简单的串口通信 (开始复习51,准备部门的招新培训)的主要内容,如果未能解决你的问题,请参考以下文章

51单片机上位机编写与串口通信-深入了解串口

51单片机上位机编写与串口通信-深入了解串口

Arduino和C51之串口通信

哪位大侠会用51单片机控制串口打印机的接线图,简单打印程序(C语言)

51单片机串口通信(字符串接收和发送)

关于51单片机中串口通信的一些小笔记