ABOV单片机UART串口通讯实现讲解及示例代码-[MC96F6332D]
一、准备工作
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]相关推荐
- ABOV单片机UART串口通讯中Printf函数实现讲解及示例代码-[MC96F6332D]
一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成串口代码 1.在CodeGen8 代码生成器的外 ...
- ABOV单片机内部中断优先级寄存器IP1x/IPx的设置代码实现讲解及示例代码-[MC96F6332D]
一.准备工作 1.KEIL C51编译环境 2.外部中断EINT示例代码-MC96F6332D 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.代码部分 1.现代单片机MC96F ...
- 51单片机——UART串口通讯-波特率可选,增添定时器2产生波特率1.0
1.51单片机自带硬件串口接口,使用时只需要进行寄存器配置即可. 2.定时器1波特率有4种可选择,默认9600bps.另外还有1个字节的发送函数,字符串发送函数. 3.增添:定时器2波特率有5种可选择 ...
- 51单片机——UART串口通讯-波特率4种模式可选1.0
1.51单片机自带硬件串口接口,使用时只需要进行寄存器配置即可. 2.波特率有4种可选择,默认9600bps.另外还有1个字节的发送函数,n个字符发送函数. 3.有几个寄存器默认的reg52.h里面没 ...
- ABOV单片机外部引脚中断EINT实现讲解及示例代码-[MC96F6332D]
一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成外部引脚中断的代码 1.在CodeGen8 代码 ...
- ABOV单片机端口引脚GPIO讲解及示例代码-[MC96F6332D]
一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成GPIO的代码 1.在CodeGen8 代码生成 ...
- ABOV单片机模数转换ADC部分代码实现讲解及示例代码-[MC96F6332D]
一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.ADC的配置和代码生成 1.在CodeGen8 代码 ...
- ABOV单片机内部看门狗WDT的代码实现讲解及示例代码-[MC96F6332D]
一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.内部看门狗代码生成 1.在CodeGen8 代码生成 ...
- ABOV单片机内部定时器Timer1的定时器代码实现讲解及示例代码-[MC96F6332D]
一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.内部定时器PWM代码生成 1.在CodeGen8 代 ...
最新文章
- html滑动逐渐覆盖效果,创意jQuery和CSS3滑动覆盖响应式幻灯片特效
- Bchd开发出可替代BCH全节点的公开API——gRPC
- 进阶学习(3.9) Bridge Pattern 桥接模式
- 差异备份、增量备份、完全备份的区别
- 重学算法第三期|数据结构与算法001
- ideal2018提示内存不足_基于IDEA2018卡死不动的解决方式(好用)
- 爬虫python可以干嘛_【Python爬虫】什么是爬虫,爬虫能做什么?
- 前端主流的 Javascript,缺失了哪些技能?
- php判断浏览器和语言
- 阿里巴巴android图标素材网,阿里巴巴矢量图标库
- 【线性代数】矩阵的特征值分解(对角化、谱分解)
- oracle 升级到11204,案例客服数据库RAC升级11201升级11204.docx
- 计算机无线键盘没反应,电脑怎么连接无线键盘 电脑连接无线键盘没反应怎么办...
- 数据库SQL习题练习Day4
- Java 字母飘落小游戏
- 如何给win11安装安卓应用
- android电视横竖屏切换在哪里,Android横竖屏切换总结
- c语言二进制数以字符形式输出,如何用C语言输出二进制数据
- mysql查询不出来乱码_MySQL命令行查询乱码解决办法
- Linux下编写ENC28J60网卡驱动,完善网络设备框架