| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 51单片机串行通信 -> 正文阅读 |
|
[嵌入式]51单片机串行通信 |
? 学51也挺久的了,断断续续。今天又把串行通信学了一遍,感觉有新的收获。因为上一次写的串行通信是失败的,也没找原因。 首先,在51单片机中,与串口有关的部分特殊寄存器有TMOD、PCON、SCON 其中TMOD寄存器与系统中断有关,用来控制工作方式 可以看到T1用4、5、6、7位控制。我们将门控位设置为0,定时/计数选择位设置为0,即计数模式。M1M0设置为01,即工作方式2。而T0我们用不到因此全设置为0。 因此TMOD=0x20。 设置完工作方式后我们需要设置计数初值,又计算可知 ?在这里我们使用的是11.059MHz的晶振,当波特率为4800时,计数初值为FAH。 因此我们将TL1以及TH1都设置为0xFA。 同时,在控制寄存器TCON中,有一位TR1控制T1的运行 我们需要将其打开 TR1=1? 现在我们开始设置串行口的控制寄存器SCON 可以看到SCON由8位组成。 SM0和SM1为工作方式选择位,可以选择4种工作方式 ? 在这里我们使用方式1,即为01 SM2为多机通信控制位,主要用于方式2和方式3,因此设为0 REN为允许串行接收位,设为1 TB8和RB8是在方式2或方式3中发送/接收数据的第9位校验位,设为0 TI/RI为发送/接收中断标志位,当其置1时,向CPU发送中断申请,因此在中断服务程序中,需要使用软件将其清0。设为0 综上,SCON=0x50 接下来我们开始配置PCON ? PCON中只有一位SMOD与串行口有关 当SMOD=1时,波特率倍增,我们将其设为1,其余设为0 故PCON=0x80 最后,我们将中断允许寄存器IE中的全局中断允许位EA和串行口中断允许位ES打开 即ES=1,EA=1 初始化函数配置完成 ? ? 配置中断函数就比较简单了 由于发送和接收的数据都暂存在缓冲器SBUF中,我们只需要操作SBUF即可 当PC机发送数据到单片机后,系统产生中断,进入中断函数。我们将数据存储下来后进行处理,再送回SBUF中,即可发送到PC机 ? ? ?进入串口调试助手,设置好波特率,发送数据即可检验实验结果 ? |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 2:46:51- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |