矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: Fireflying

求助,关于C51单片机串口接收

[复制链接]
     
发表于 2021-4-30 17:01:20 | 显示全部楼层
我是才开始学习51C语言,书上的意思是接收到数据RI就由硬件置位,软件应该读出SBUF的数据后立即复位RI。以便接收下一数据。(我理解为收到数据硬件响应中断置位RI,由软件取走数据后复位RI。不然下一数据进不了SBUF)
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2021-5-6 12:07:02 | 显示全部楼层
本帖最后由 Fireflying 于 2021-5-6 12:08 编辑
mov99 发表于 2021-4-28 16:54
不客气,共同探讨
如果未及时读SBUF内容,可能导致祯错或溢出错。
DIY是享受制做的过程和成功的喜悦 ...


监测CH340C的RTS引脚电平这个方案应该比计数0x7f的方案实现起来简单一点,电平监测加上定时器应该就可以。不过,采用这种方式有没有可能出现误动作?我查询某些资料,说CH340在刚连接电脑USB口的时候,电脑在识别过程中RTS引脚的电平会有数次拉低的情况,不知道实际情况是怎样的。
检测CH340的RTS引脚电平再断电的话,还可以使用运放单稳态电路实现,成本应该更低一点。
回复 支持 反对

使用道具 举报

     
发表于 2021-5-6 13:56:43 | 显示全部楼层
本帖最后由 mov99 于 2021-5-6 15:53 编辑
Fireflying 发表于 2021-5-6 12:07
监测CH340C的RTS引脚电平这个方案应该比计数0x7f的方案实现起来简单一点,电平监测加上定时器应该就可 ...


没有正式制板,只做了简单的测试,实验证明方法可行。
C编程不懂,只说流程:
①控制单片机上电先延时50ms,点亮LED指示单片机当前状态(可初始化定时器T0,用于控制LED闪烁);
②每10ms(或更短)查询1次RST=1?若RST=1再延时10ms确认,RST≠1重新开始查询,RST=1待写芯片上电;
③每10ms(或更短)查询1次RST=0?若RST=0再延时10ms确认,RST≠0重新开始查询,RST=0待写芯片掉电,延时300~500ms(放电),因电子元件的离散性及待写芯片电源电容不同,掉电时间实验后确定;
④待写芯片上电,由此实现冷启动;然后,代码跳转的最初的查询RST=1;周而复始。
如果愿意,还可加一点小花样,用LED每秒连续快烁两次指示与上位机成功连接且为忙碌状态,完成写恢复常亮指示待机。
用其它电路可能需要各种RC延时及翻转,不如用单片机灵活,直接内部RC振荡器。
回复 支持 反对

使用道具 举报

     
发表于 2021-5-6 20:40:02 | 显示全部楼层
qqyyll 发表于 2021-4-30 17:01
我是才开始学习51C语言,书上的意思是接收到数据RI就由硬件置位,软件应该读出SBUF的数据后立即复位RI。以 ...

有握手协议的才不会丢数据。
2条线,不接从机,照样发送,只管发,不管收。
回复 支持 反对

使用道具 举报

     
发表于 2021-5-8 19:35:25 | 显示全部楼层
2019年我也用STC15W104做了一个STC自动下载器,原理很简单:电脑端用点下载后单片机接收100个字节数据就使要烧录的单片机5V电源关闭1秒再上电,就开始下载了,现在不能找到程序了帮不到你
回复 支持 反对

使用道具 举报

     
发表于 2021-5-8 21:14:39 | 显示全部楼层
本帖最后由 mov99 于 2021-5-8 21:16 编辑

简单粗暴但也是最有效的办法就是电源开关
启动下载客户端->加载.HEX文件->待写芯片上电->下载/编程->OK!

补充内容 (2021-5-10 07:32):
启动下载客户端->加载.HEX文件->下载/编程->待写芯片上电->OK!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-28 00:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表