码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-09-21 23:22:42      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:内容   进入   循环   get   技术   ini   ==   class   复习   

 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,准备部门的招新培训)

标签:内容   进入   循环   get   技术   ini   ==   class   复习   

原文地址:http://www.cnblogs.com/Dark-Ages/p/7571735.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!