一、准备工作

1、KEIL C51编译环境

2、CodeGen8 代码生成器

3、MC96F6332D 开发板

4、USB-OCD II仿真器

二、生成串口通讯代码

1、在CodeGen8 代码生成器的外设窗口中选择内部RC时钟作为时钟源,设置时钟源的频率为8MHz,配置UART的引脚P40(Pin8)-->RXD0引脚,    P41(Pin9)-->TXD0引脚;配置UART0的参数为ASync. 9600bps N 8 1;具体配置如下图①所示;

在main.c的窗口中可以看到CodeGen8 已经根据选择自动生成了代码,自动生成的代码段如上图②所示。

2、点击CodeGen8 中的C 图标,自动打开KEIL C51软件;下一步进行代码的修改、编译和程序下载;

1)、在代码中删除LCD驱动代码,本实验暂时用不到LCD部分;

2)、配置代码程序,实现printf函数【可参考我的另外一篇博客:ABOV单片机UART串口通讯中Printf函数实现讲解及示例代码-[MC96F6332D]

3、进行工程的配置和编译,可以看到编译的结果无错误、无警告。

4、代码解析:通过MC96F6332D的user‘s Manual手册中USI0 (UART + SPI + I2C)寄存器章节可以看出生成的代码的含义

1)、关于UART的引脚初始化问题:配置UART的引脚P40(Pin8)为RXD0引脚,    P41(Pin9)引脚为TXD0引脚;因为RXD引脚是数据的接收引脚,故该引脚的方向应该是输入,TXD引脚是数据的发送引脚,故该引脚的方向应该是输出。

因为RXD0/TXD0引脚功能是复用P40/P41,所以需要配置复用功能寄存器P4FSR,选择复用功能。

奇怪的是:在配置P4FSR后,P40和P41的方向寄存器全部配置为输出状态,程序功能也是可以实现的;这里建议按照串口正常的逻辑进行配置。

2)、UART的寄存器配置

波特率产生寄存器USI0BD:

USI控制寄存器1:因为USI是一个UART、SPI、I2C三个硬件外设共用的寄存器,所以需要进行外设的选择;下图寄存器中选择异步的UART模式,无奇偶校验,8bit的数据位,

USI控制寄存器2:这里使能接收和发送功能,不使能中断,使能USI0;

USI控制寄存器3:选择1bit的停止位

串口的读取和发送寄存器:USI0DR,数据发送时写入数据到该寄存器,接收数据时读取该寄存器即可。

5、点击编译器的下载按钮,对代码进行单片机的下载。

三、实验现象(具体内容可以参考工程中的Readme.txt文件)

1、本实验是通过操作USI0的寄存器,实现串口数据的通讯;实际的代码中增加了printf函数的实现,可以方便的观看程序的运行;

2、循环体中增加printf("%c",getchar());函数,连接串口到电脑可以实现串口数据的透传功能,即PC发送数据到MCU,MCU会返回相同的数据到PC端;

3、单片机串口和USB转TTL的串口连接时需要注意物理上的交叉和共地操作,即单片机的TXD---->USB串口助手的RXD,单片机的RXD---->USB串口助手的TXD,两端的GND连接在一起;

4、具体的代码可以访问链接:https://share.weiyun.com/5Ivphmm;进行免费下载。


因为小编自己能力水平有限,文中难免有错误或表达不到的信息,还望广大阅读者留言批评指正,谢谢

ABOV单片机UART串口通讯实现讲解及示例代码-[MC96F6332D]相关推荐

  1. ABOV单片机UART串口通讯中Printf函数实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成串口代码 1.在CodeGen8 代码生成器的外 ...

  2. ABOV单片机内部中断优先级寄存器IP1x/IPx的设置代码实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.外部中断EINT示例代码-MC96F6332D 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.代码部分 1.现代单片机MC96F ...

  3. 51单片机——UART串口通讯-波特率可选,增添定时器2产生波特率1.0

    1.51单片机自带硬件串口接口,使用时只需要进行寄存器配置即可. 2.定时器1波特率有4种可选择,默认9600bps.另外还有1个字节的发送函数,字符串发送函数. 3.增添:定时器2波特率有5种可选择 ...

  4. 51单片机——UART串口通讯-波特率4种模式可选1.0

    1.51单片机自带硬件串口接口,使用时只需要进行寄存器配置即可. 2.波特率有4种可选择,默认9600bps.另外还有1个字节的发送函数,n个字符发送函数. 3.有几个寄存器默认的reg52.h里面没 ...

  5. ABOV单片机外部引脚中断EINT实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成外部引脚中断的代码 1.在CodeGen8 代码 ...

  6. ABOV单片机端口引脚GPIO讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成GPIO的代码 1.在CodeGen8 代码生成 ...

  7. ABOV单片机模数转换ADC部分代码实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.ADC的配置和代码生成 1.在CodeGen8 代码 ...

  8. ABOV单片机内部看门狗WDT的代码实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.内部看门狗代码生成 1.在CodeGen8 代码生成 ...

  9. ABOV单片机内部定时器Timer1的定时器代码实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.内部定时器PWM代码生成 1.在CodeGen8 代 ...

最新文章

  1. html滑动逐渐覆盖效果,创意jQuery和CSS3滑动覆盖响应式幻灯片特效
  2. Bchd开发出可替代BCH全节点的公开API——gRPC
  3. 进阶学习(3.9) Bridge Pattern 桥接模式
  4. 差异备份、增量备份、完全备份的区别
  5. 重学算法第三期|数据结构与算法001
  6. ideal2018提示内存不足_基于IDEA2018卡死不动的解决方式(好用)
  7. 爬虫python可以干嘛_【Python爬虫】什么是爬虫,爬虫能做什么?
  8. 前端主流的 Javascript,缺失了哪些技能?
  9. php判断浏览器和语言
  10. 阿里巴巴android图标素材网,阿里巴巴矢量图标库
  11. 【线性代数】矩阵的特征值分解(对角化、谱分解)
  12. oracle 升级到11204,案例客服数据库RAC升级11201升级11204.docx
  13. 计算机无线键盘没反应,电脑怎么连接无线键盘 电脑连接无线键盘没反应怎么办...
  14. 数据库SQL习题练习Day4
  15. Java 字母飘落小游戏
  16. 如何给win11安装安卓应用
  17. android电视横竖屏切换在哪里,Android横竖屏切换总结
  18. c语言二进制数以字符形式输出,如何用C语言输出二进制数据
  19. mysql查询不出来乱码_MySQL命令行查询乱码解决办法
  20. Linux下编写ENC28J60网卡驱动,完善网络设备框架

热门文章

  1. 软件测试培训费用多少?
  2. 机械工业ERP系统“数字排产”
  3. painter12在mac上解决延迟
  4. 仿百度壁纸客户端(四)——自定义上拉加载实现精选壁纸墙
  5. 4岁雪地裸跑、7岁自主创业,这个11岁机器人比赛冠军,南京大学自考毕业了!...
  6. 91. 基于Notes/Domino的文档工作流系统(三)
  7. Apache NiFi系统管理员指南 [ 三 ]
  8. SAP MDG —— 数据迁移
  9. 在网页上看到了data-v-xxxx是什么原因
  10. 推荐5款快速制作完美PPT的办公软件