找回密码
 注册
关于网站域名变更的通知
查看: 408|回复: 2
打印 上一主题 下一主题

STC12C5A60S2单片机串口通信多波特率选择(51系列通用)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-8-31 10:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
多种波特率封装成函数,方便使用。9 K8 `. u( I" ?) {) {- _7 d$ O, X* ]
11.0592Mhz,12.00Mhz波特率都配置好了,直接改参数调用就行,附详细注释方便学习
+ D& _. @( [' C% o% R3 y5 K. F% g全部亲自试过了,误差0.00%; j; G1 D, ^4 F

0 k2 s4 N3 |! A: X) F! `0 F6 A% M2 b# [: R3 l

. J& \; u6 ?9 S. p. W4 U3 Y6 n
- o6 a1 Q$ L& A. C  B; `运行截图:% h. ~/ [/ a" r6 P+ t& l
(注意串口通信波特率与程序一致)
$ {/ u& o. R5 U7 p" E" {9 i: g' ~
9 M4 x" ?" m" [* h/ G: c5 D8 ?' S
2 ~# W0 t+ C0 Q& s5 @2 j! F6 U单片机源程序如下:+ J! f/ F- O# d5 l# B. o3 [
  • #include <STC12C5A60S2.H>
  • void UART_Init(unsigned int BaudRate) //串口初使化函数  11.0592Mhz 12单片机
  • {
  •         unsigned char TH1_Dat;
  •         unsigned char PCON_Dat;
  •         switch(BaudRate)
  •     {
  •        case 1200:  TH1_Dat=0xE8; PCON_Dat=0x00; break;
  •        case 2400:  TH1_Dat=0xF4; PCON_Dat=0x00; break;
  •        case 4800:  TH1_Dat=0xFA; PCON_Dat=0X00; break;
  •        case 9600:  TH1_Dat=0xFD; PCON_Dat=0x00; break;
  •        case 14400:  TH1_Dat=0xFE; PCON_Dat=0X00; break;
  •     }
  •         TMOD &= 0x0F;         //清除高4位数据
  •     TMOD |= 0x20;        //定时器工作模式,0x20-工作方式2:8位自动重装载模式
  •     SCON = 0x50;          //串行口工作方式控制寄存器,当前为1
  •                                         //Bit[7:6],00为工作方式0,01方式1,10方式2,11方式3
  •     TH1 = TH1_Dat;         //8位自动重装载定时器模式下,TH1被用作自动重装载值寄存器
  •     TL1 = TH1_Dat;             //TL1为计数寄存器
  •     PCON |= PCON_Dat;         //Bit7-波特率倍增位:0-不培增  1-培增
  •     EA = 1;               //打开总中断
  •     ES = 1;               //串口中断允许位
  •     TR1 = 1;                //定时器1开始计数
  • }
  • //void UART_Init(unsigned int BaudRate) //串口初使化函数  12.00Mhz 12单片机
  • //{
  • //        unsigned char TH1_Dat;
  • //        unsigned char PCON_Dat;
  • //        switch(BaudRate)
  • //    {
  • //       case 1200:  TH1_Dat=0xCC; PCON_Dat=0x80; break;
  • //       case 2400:  TH1_Dat=0xE6; PCON_Dat=0x80; break;
  • //       case 4800:  TH1_Dat=0xF3; PCON_Dat=0X80; break;
  • //    }
  • //        TMOD &= 0x0F;         //清除高4位数据
  • //    TMOD |= 0x20;        //定时器工作模式,0x20-工作方式2:8位自动重装载模式
  • //    SCON = 0x50;          //串行口工作方式控制寄存器,当前为1
  • //                                        //Bit[7:6],00为工作方式0,01方式1,10方式2,11方式3
  • //    TH1 = TH1_Dat;         //8位自动重装载定时器模式下,TH1被用作自动重装载值寄存器
  • //    TL1 = TH1_Dat;             //TL1为计数寄存器
  • //    PCON |= PCON_Dat;         //Bit7-波特率倍增位:0-不培增  1-培增
  • //    EA = 1;               //打开总中断
  • //    ES = 1;               //串口中断允许位
  • //    TR1 = 1;                //定时器1开始计数
  • //}
  • void main()
  • {
  •         UART_Init(14400);
  •         while(1);
  • }
  • void Usart() interrupt 4
  • {
  •         unsigned char receiveData;
  •         receiveData=SBUF;        //出去接收到的数据
  •         RI = 0;                                //清除接收中断标志位
  •         SBUF=receiveData;        //将接收到的数据放入到发送寄存器
  •         while(!TI);                        //等待发送数据完成
  •         TI=0;                                //清除发送完成标志位
  • }
    3 L' ?( ]& J9 d; I
; {7 X; U  X3 @: @1 {: k+ S) O

该用户从未签到

2#
发表于 2022-8-31 10:58 | 只看该作者
谢谢分享!学习学习,谢谢分享!

该用户从未签到

3#
发表于 2022-8-31 15:02 | 只看该作者
学习中,谢谢楼主,O(∩_∩)O哈哈~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-23 20:08 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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