千家信息网

单片机IO口模仿UART串口通讯

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,为了让人人充沛了解 UART 串口通讯的道理,我们先把 P3.0 和 P3.1 当做 IO 口来停止模仿实践串口通讯的进程,道理搞懂后,我们再运用存放器设置装备摆设完成串口通讯进程。关于 UART 串
千家信息网最后更新 2025年12月01日单片机IO口模仿UART串口通讯

为了让人人充沛了解 UART 串口通讯的道理,我们先把 P3.0 和 P3.1 当做 IO 口来停止模仿实践串口通讯的进程,道理搞懂后,我们再运用存放器设置装备摆设完成串口通讯进程。
关于 UART 串口波特率,常用的值是 300、600、1200、2400、4800、9600、14400、19200、28800、38400、57600、115200 等速度。IO 口模仿 UART 串行通讯程序是一个复杂的演示程序,我们运用串口调试助手下发一个数据,数据加 1 后,再主动前往。
串口调试助手,这里我们直接运用 STC-ISP 软件自带的串口调试助手,先把串口调试助手的运用给人人说一下,如图 11-6 所示。第一步要选择串口助手菜单,第二步选择十六进制显示,第三步选择十六进制发送,第四步选择 COM 口,这个 COM 口要和本人电脑装备治理器里的谁人 COM 口分歧,波特率按我们程序设定好的选择,我们程序中让一个数据位继续工夫是 1/9600 秒,那这个中央选择波特率就是选 9600,校验位选 N,数据位 8,中止位 1。


图 11-6 串口调试助手表示图


串口调试助手的本质就是应用电脑上的 UART 通讯接口,发送数据给我们的单片机,也可以把我们的单片机发送的数据接纳到这个调试助手界面上。
由于首次接触通讯方面的技巧,所以我把前面的 IO 模仿串口通讯程序停止一下说明,人人可以边看我的说明边看程序,把底层道理先彻底弄懂。
变量界说局部就不必说了,直接看 main 主函数。起首是对通讯的波特率的设定,在这里我们设置装备摆设的波特率是 9600,那么串口调试助手也得是 9600。设置装备摆设波特率的时分,我们用的是准时器 T0 的形式 2。形式 2 中,不再是 TH0 代表高 8 位,TL0 代表低 8 位了,而只要TL0 在停止计数,当 TL0 溢出后,不只仅会让 TF0 变 1,并且还会将 TH0 中的内容从新主动装到 TL0 中。如许有一个益处,就是我们可以把想要的准时器初值提早存在 TH0 中,当 TL0溢出后,TH0 主动把初值就从新送入 TL0 了,全主动的,不需求程序中再给 TL0 从新赋值了,设置装备摆设方法很复杂,人人可以本人看下程序而且盘算一下初值。
波特率设置好今后,翻开中缀,然后等候接纳串口调试助手下发的数据。接纳数据的时分,起首要停止低电平检测 while (PIN_RXD),若没有低电平则阐明没无数据,一旦检测到低电平,就进入启动接纳函数 StartRXD()。接纳函数最开端启动半个波特率周期,初学能够这里不是很明确。人人回头看一下我们的图 11-2 里边的串口数据表示图,假如在数据位电平变更的时分去读取,由于时序上的误差以及旌旗灯号波动性的成绩很轻易读错数据,所以我们愿望在旌旗灯号最波动的时分去读数据。除了旌旗灯号变更的谁人沿的地位外,其它地位都很波动,那么我们如今就商定在旌旗灯号两头地位去读取电平形态,如许可以包管我们读的必定是准确的。
一旦读到了肇端旌旗灯号,我们就把以后形态设定成接纳形态,而且翻开准时器中缀,第一次是半个周期进入中缀后,对肇端位停止二次判别一下,确认一下肇端位是低电平,而不是一个搅扰旌旗灯号。今后每经由 1/9600 秒进入一次中缀,而且把这个引脚的形态读到 RxdBuf 里边。等候接纳终了之后,我们再把这个 RxdBuf 加 1,再经过 TXD 引脚发送出去,异样需求先发一位肇端位,然后发 8 个数据位,再发完毕位,发送终了后,程序运转到 while (PIN_RXD),等候第二轮旌旗灯号接纳的开端。

纯文本复制
                   #include  sbit PIN_RXD = P3^0; //接纳引脚界说 sbit PIN_TXD = P3^1; //发送引脚界说 bit RxdOrTxd = 0; //指导以后形态为接纳照样发送 bit RxdEnd = 0; //接纳完毕标记 bit TxdEnd = 0; //发送完毕标记 unsigned char RxdBuf = 0; //接纳缓冲器 unsigned char TxdBuf = 0; //发送缓冲器 void ConfigUART(unsigned int baud); void StartTXD(unsigned char dat); void StartRXD(); void main(){ EA = 1; //开总中缀 ConfigUART(9600); while (1){ //设置装备摆设波特率为 9600 while (PIN_RXD); //等候接纳引脚呈现低电平,即肇端位 StartRXD(); //启动接纳 while (!RxdEnd); //等候接纳完成 StartTXD(RxdBuf+1); //接纳到的数据+1 后,发送归去 while (!TxdEnd); //等候发送完成 } } /* 串口设置装备摆设函数,baud-通讯波特率 */ void ConfigUART(unsigned int baud){ TMOD &= 0xF0; //清零 T0 的掌握位 TMOD |= 0x02; //设置装备摆设 T0 为形式 2 TH0 = 256 - (11059200/12)/baud; //盘算 T0 重载值 } /* 启动串行接纳 */ void StartRXD(){ TL0 = 256 - ((256-TH0)>>1); //接纳启动时的 T0 准时为半个波特率周期 ET0 = 1; //使能 T0 中缀 TR0 = 1; //启动 T0 RxdEnd = 0; //清零接纳完毕标记 RxdOrTxd = 0; //设置以后形态为接纳 } /* 启动串行发送,dat-待发送字节数据 */ void StartTXD(unsigned char dat){ TxdBuf = dat; //待发送数据保管到发送缓冲器 TL0 = TH0; //T0 计数初值为重载值 ET0 = 1; //使能 T0 中缀 TR0 = 1; //启动 T0 PIN_TXD = 0; //发送肇端位 TxdEnd = 0; //清零发送完毕标记 RxdOrTxd = 1; //设置以后形态为发送 } /* T0 中缀效劳函数,处置串行发送和接纳 */ void InterruptTimer0() interrupt 1{ static unsigned char cnt = 0; //位接纳或发送计数 if (RxdOrTxd){ //串行发送处置 cnt++; if (cnt <= 8){ //低位在先顺次发送 8bit 数据位 PIN_TXD = TxdBuf & 0x01; TxdBuf >>= 1; }else if (cnt == 9){ //发送中止位 PIN_TXD = 1; }else{ //发送完毕 cnt = 0; //复位 bit 计数器 TR0 = 0; //封闭 T0 TxdEnd = 1; //置发送完毕标记 } }else{ //串行接纳处置 if (cnt == 0){ //处置肇端位 if (!PIN_RXD){ //肇端位为 0 时,清零接纳缓冲器,预备接纳数据位 RxdBuf = 0; cnt++; } }else{ //肇端位不为 0 时,中断接纳 TR0 = 0; //封闭 T0 }else if (cnt <= 8){ //处置 8 位数据位 RxdBuf >>= 1; //低位在先,所以将之前接纳的位向右移 //接纳脚为 1 时,缓冲器最高地位 1, //而为 0 时不处置即仍坚持移位后的 0 if (PIN_RXD){ RxdBuf |= 0x80; } cnt++; }else{ //中止位处置 cnt = 0; //复位 bit 计数器 TR0 = 0; //封闭 T0 if (PIN_RXD){ //中止位为 1 时,方能以为数据无效 RxdEnd = 1; //置接纳完毕标记 } } } }


数据 串口 波特率 波特 助手 通讯 程序 肇端 中缀 形态 摆设 旌旗 电平 标记 选择 人人 函数 缓冲器 缓冲 主动 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 提供好的网络安全零信任安全 全国网络安全讲话心得 什么是网络技术开发操作 杭电网络安全就业薪酬 日常网络安全监测预警机制 兴仁网络安全系统收费多少 公安网络安全教育宣传活动 区位链防伪软件开发 服务器资源占用哪里看 数据库表都需要唯一标识符 北京录播服务器价格 自己搭建私人dns服务器犯法吗 计算机网络技术与应用练习 软件开发人员个人代开税收 钢铁行业实时数据库技术原理 崇明区一站式软件开发定制价格 靖江巨型网络技术哪家好 微信连接服务器发不了怎么回事 数据库快捷键保存 黄陂区方便网络安全维护管理系统 肇庆安卓软件开发报价 数据库表都需要唯一标识符 软件不用数据库怎么打开 流放之路服务器大区列表 单片机软件开发视频教程 一键发布软件开发 学生网络安全手抄报模板 apex服务器换不了 vr软件开发软件 政法十四五网络安全规划
0