STC系列芯片的串口通信编程

本人使用的是基于STC15F2K60S2芯片的开发板。

开发板上有关串口通讯的有:TMOD(定时器寄存器)、CSON(串口通信寄存器)、PCON(开发板电源控制寄存器)以及与51系列单片机区别最大的AUXR(分频寄存器)四种,其中以SCON最重要,其他的只是稍微设置下即可,串口通信初始化乍看很难,但沉下心来仔细研究,相信什么都难不倒我们。

1、TMOD(定时器寄存器)
有单片机基础的想必都知道应该怎么设置,这里我设置的是定时器1,自动重载模式

 TMOD=0x20;  //定时器1工作方式2(自动重载)TH1=0XFD;TL1=0XFD;  //设置初始值,该初值在晶振频率为11.0592Hz的前提下波特率为9600//PCON=0X80;   //波特率加倍,加倍为9600    可选用

波特率的计算比较繁琐,我们这里直接使用了最常用的波特率设置

2、SCON(串口通信寄存器)
串口通信最重要的寄存器,可位寻址

关于SM0,SM1:我们在这里只需要了解SM0,SM1是设置串口的工作模式的,这个大部分情况我们选择模式2,即SM0=0,SM1=1;

关于REN:串口是否允许中断,这里我们选择允许,即REN=1;

关于TI,RI,主要是在程序内部使用,作为串口读写数据完毕的标志,串口读写完毕后会由硬件将他们置1,编程中需我们手动清零

 SM0=0;SM1=1;    //串口通信选择方式2REN=1;   //开启串口通信//SCON=0x50;     两者等价

3、PCON(开发板电源控制寄存器)
PCON第7位控制波特率是否倍频,即PCON=0x80,波特率加倍,PCON=0x00或者不设置,波特率不加倍

4、AUXR(分频寄存器)
最后一个,也是STC芯片和51芯片在串口通信上不同的地方
常用的就最后两位,选择定时器0或者定时器1是否12分频
我们这里选择定时器1为1T,所以设置AUXR=0x40;
Ps:一定注意,STC系列的芯片一定要设置AUXR,AUXR=0x40;也好,AUXR=0x00;也好,一定要设置!!!不然串口通信无法实现,本人亲测

最后,贴出我的代码,希望对需要的人有所帮助

/*************************************************************************
*测试程序:
*程序功能:上位机每发送一个字节开发板的全部led灯都切换一次状态
*开发板led初始状态为熄灭*标签:串口读取程序 循环查询
*************************************************************************/#include "STC15F2K60S2.H"#define Y4 P2=((P2&0x1f)|0x80)
#define Y5 P2=((P2&0x1f)|0xa0)
#define Y6 P2=((P2&0x1f)|0xc0)
#define Y7 P2=((P2&0x1f)|0xe0)void uart_init()
{
//  SM0=0;
//  SM1=1;    //串口通信选择方式2
//  REN=1;   //开启串口通信SCON=0X50;TMOD=0x20;  //定时器1工作方式2(自动重载)TH1=0XFD;TL1=0XFD;  //设置初始值,该初值在晶振频率为11.0592Hz的前提下波特率为9600TR1=1;  //开启定时器1EA=1;  //CPU允许中断ES=1; //允许串口中断PCON=0X80;   //波特率加倍,为9600AUXR = 0x00;
}int i=1;void main()
{Y4;P0=0xff;Y5;P0=0x00;uart_init();while(1){while(!RI);  //当接收到 字节接收完成 的标志时if(i%2==1){Y4;P0=0x00;}else {Y4;P0=0xff;}i++;RI=0;   //软件复位}
}``

STC系列芯片的串口通信编程相关推荐

  1. MFC 串口通信编程

    本篇文章主要介绍了"RS-232/RS-485/RS-422 接口简介与编程",主要涉及到RS-232/RS-485/RS-422 接口简介与编程方面的内容,对于RS-232/RS ...

  2. (转)GPS导航芯片中串口通信同步I/O方式的程序设计

    GPS导航芯片中串口通信同步I/O方式的程序设计 时间:2011-01-25 11:38    作者:    来源: Windows CE 是一个开放的.可裁剪的.32位实时嵌入式窗口操作系统,具有可 ...

  3. VC串口通信编程-2

    VC串口通信编程 (2009-07-08 13:48:40) 转载▼ Win32串口编程(转:韩耀旭) 在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信.串口通信 ...

  4. C#中串口通信编程 收藏

    C#中串口通信编程 收藏 本文将介绍如何在.NET平台下使用C#创建串口通信程序,.NET 2.0提供了串口通信的功能,其命名 空间是System.IO.Ports.这个新的框架不但可以访问计算机上的 ...

  5. Visual C++串口通信编程---多线程异步方式

    Visual C++串口通信编程---多线程异步方式 1. 串口通信基础 提到串口让人想起并口,它们是计算机中两个比较重要的通信方式. 串口:也叫COM口,把字节的二进制位按位列队进行传输,每个字节占 ...

  6. 在keil 4中添加stc系列芯片的方法--【sky原创】

    在keil 4中添加stc系列芯片的方法:  1.从官网下载uv3.cdb的文件 网址是:http://www.stcmcu.com/ 2.下载好后把uv3.cdb文件改成STC.cdb: 3. 然后 ...

  7. 单片机与PC机串口通信编程

    单片机与PC机串口通信编程 实验目的 利用PROTUES仿真软件.串口调试助手.虚拟串口,搭建单片机与PC通信仿真平台,熟悉单片机串口的配置及与PC机的通信方法. 实验目的 1.PROTUES仿真软件 ...

  8. C#上位机开发串口通信编程——倒计时器开发

    C#上位机开发串口通信编程--倒计时器开发 一.介绍 这是我按照B站上的一个上位机开发视频教程开发的倒计时器开发,本来只有开始计时功能,没有停止计时功能,停止计时功能后面我自己添加了. 视频网址:C# ...

  9. 树莓派与电脑之间的串口通信编程

    树莓派与电脑之间的串口通信编程 数据通信的三个方式介绍 单工通信 半双工通信 全双工通信 串口通信 编程步骤 数据通信的三个方式介绍 单工通信 只支持数据在一个方向上传输,又称为单向通信.如无线电广播 ...

最新文章

  1. PAT (Basic Level) 1044 火星数字(模拟)
  2. 网易资深Java架构师:java方法的定义和使用
  3. PHP操作MongoDB学习笔记
  4. 8-4 测试http服务器(上)
  5. 【解决】Django下使用sqlite3的相关问题
  6. mac显示网速_Mac系统怎么查看测试网速
  7. java 折线_用Java绘制简单的折线图
  8. js判断一个元素是否在数组中
  9. AC日记——A+B Problem(再升级) 洛谷 P1832
  10. 腾讯2018春招笔试题,翻转数列
  11. 计算机学科导论-2013级教学材料
  12. C预处理器和C函数库
  13. 【论文笔记_目标检测_2022】Cross Domain Object Detection by Target-Perceived Dual Branch Distillation
  14. HTML无序列表四大名著
  15. Java分别使用zxing及qrcode-plugin生成各种样式二维码
  16. Mysql时区差异异常-The server time zone value ‘xxx‘ is unrecognized or represents more than one time zone.
  17. 拉着你的手 歌手:谢东 专辑:笑脸
  18. 【转】RMAN-06094: datafile 1 must be restored ID 1339439.1
  19. android实现热更新
  20. 跨站脚本(XSS)攻击

热门文章

  1. 5个PS学习、练习素材网站
  2. 1024 程序员节首批 37 位嘉宾阵容公布!院士、技术掌门人、行业精英齐亮相
  3. 南邮电装实习报告(最全)
  4. CSS小练习4——w3School导航栏
  5. 如何关闭vivado的Jtag自动检测
  6. Java数据结构-哈希表的实现(hash)
  7. 点亮LED灯的三种形式
  8. 用matlab弄个按钮怎么来,matlab按钮生按钮
  9. (转)关于无良培训机构的恶意抹黑疯狂Java的反驳(v2)
  10. JavaScript实现的颜色选择器