找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9732|回复: 2
打印 上一主题 下一主题
收起左侧

STC单片机收发通信串口调试程序 带详细注释

[复制链接]
跳转到指定楼层
楼主
ID:258457 发表于 2018-2-22 14:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STC单片机串口通信,测试程序,C51寄存器变量设置

单片机源程序如下(注释很详细):
  1. #include <STC89C5xRC.H>
  2. #include <LCD_12864.H>
  3. #include <intrins.h>
  4. #include <string.h>
  5. #include <stdio.h>
  6. #include <math.h>
  7.                                                           //                                   0 / 0:13位计数器;
  8. typedef unsigned int u16;          //常用M1M0           0 / 1: 16位计数器;
  9. typedef unsigned char u8;          //                                     1 / 0:自动重装8位计数器                                                           
  10. void UartInit(void);                  //                          定时器1                定时器0
  11.                                           //TMOD寄存器位变量: GATE   C/T   M1   M0   GATE   C/T   M1   M0
  12.                                                           //                                0     0     1    0            0         0     1    0
  13.                                                  //                                                  1                                              1
  14.                                               //                                              C/T=0:定时器                     C/T=1:计数器

  15.                                               //TCON寄存器位变量:  TF1   TR1   TF0   TR0   IE1   IT1   IE0   IT0                                                                                       
  16.                                                   //                    /     1            /     1     /     1     /     1     
  17.                                                   //                '/'代表有硬件置1或0,无需编程
  18.                                                       //                                TR1、TR0置1分别启动定时器1、0 ;置0分别关闭定时器1、0;
  19.                                                        //                                IT1、IT0置1外部中断1、0下降沿有效;置0低电平有效;                  
  20.                                                        //                                下降沿或者上升沿有效可以用于1/2分频。
  21.                                                                                                   
  22.                                                           //SCON寄存器位变量: SM0   SM1   SM2   REN   TB8   RB8   TI    RI                                        
  23.                                                           //8位移位寄存器                0          0                0          1                                   /*         /*
  24. void main()                                          //10位波特率可变                0          1                0
  25. {                                                          //11位波特率固定                1          0                1
  26.         UartInit();               //11位波特率可变                1          1                1          
  27.                                   //SM2接收数据第9位校验位。
  28.         while(1);                                  //方式0发送:TI位0允许发送,数据格式- 8 -;发送结束TI硬件置1,发送下一帧TI程序置0,TB8无作用
  29.                                   //方式0接收:REN为1且RI位0允许发送,数据格式- 8 -;接收结束RI硬件置1,接收下一帧RI程序置0,RB8无作用
  30.                                                           //                       SM2==0
  31. }                                                          //方式1发送:TI为0允许发送,数据格式0+8+1;发送结束TI硬件置1,发送下一帧TI程序置0,TB8无作用                                                                                     
  32.                                                           //方式1接收: REN为1且RI为0允许接收,数据格式0+8+1;接收结束第9位1送至RB8、RI硬件置1,接收下一帧RI由程序置0
  33.                                                           //                           SM2=0>>RB8=1或0,都接收数据,RI硬件置1;SM2=1>>RB8=1 接收数据,RI硬件置1
  34. void Uart() interrupt 4              //方式2发送:TI位0允许发送,数据格式0+8+1/0+1;TB8软件置1或0代表发送数据第9位,TI硬件置1,发送下一帧TI程序置0
  35. {                                                           //               TB8为1表示发送地址,TB8为0表示发送数据
  36.   u8 receiveData;                          //方式2接收: REN为1且RI为0允许接收,数据格式0+8+1/0+1;接收结束第9位送至RB8、RI硬件置1,接收下一帧RI由程序置0
  37.   receiveData=SBUF;                          //                           SM2=0>>RB8=1或0,都接收数据,RI硬件置1;SM2=1>>RB8=1 接收数据,RI硬件置1
  38.   while(!RI);                           
  39.   RI = 0;                                          //方式3同方式2,只是波特率可调
  40.   SBUF=receiveData;
  41.   while(!TI);                                  //IE中断允许寄存器:  EA    --    ET2   ES    ET1   EX1   ET0  EX0                                                                      
  42.   TI=0;                                      //EA中断总开关 ;  ET2允许定时器2中断 ; ES允许串口中断 ;     ET1允许定时器1中断                                         
  43. }                                            //                                EX1允许外部中断1断 ; ET0允许定时器0中断 ; EX0允许外部中断0断
  44.                              
  45.                                                   //                          中断源               Keil中断编号             矢量地址
  46.                               //            最高优先级                 6                     0x0033
  47.                               //            外部中断0                 0                     0x0003
  48.                               //            定时器0溢出                1                     0x000B
  49.                               //            外部中断1                 2                     0x0013
  50.                               //            定时器1溢出                3                     0x001B
  51.                               //               串口                    4                     0x0023
  52.                               //            定时器2溢出                5                     0x002B

  53. void UartInit(void)                //9600bps@11.0592MHz
  54. {
  55.     TMOD = 0x20;
  56.     SCON = 0x50;
  57.     TH1 = 0xF4;
  58.     TL1 = 0xF4;
  59.     PCON = 0x80;
  60.     EA = 1;
  61.     ES = 1;
  62.     TR1 = 1;
  63. }



复制代码

所有资料51hei提供下载:
STC通信-发送数据.rar (1.44 KB, 下载次数: 141)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:125889 发表于 2018-7-20 10:33 | 只看该作者
正在学习怎么用电脑看单片机的数据,谢谢楼主
回复

使用道具 举报

板凳
ID:590645 发表于 2019-10-7 13:57 | 只看该作者
不会这个。正好学习一下。感谢楼主分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表