找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于单片机温度采集串口中断的问题?

查看数: 4037 | 评论数: 11 | 收藏 2
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-4-8 20:47

正文摘要:

在用STC89C52单片机做一个温度采集功能。 功能是这样的:       1、工作频率 11.0592       2、P2.0,P2.1,P2.2,P2.3 普通IO口分别接了四个S18B20温度传感器,用来采集温 ...

回复

ID:449525 发表于 2018-12-27 17:18
楼上有人说的是对的
我今天也写了类似代码,你串口检测接受。当你采集温度的时候,把串口中断关闭。
还有就是你的显示,你可以先判断下数据改变了,在去刷屏显示。没有必要接受到数据就是显示,做个判断也是对资源合理利用
ID:158375 发表于 2018-12-27 13:04
软件结构问题。
你可以定义标志位,有发送标志,发送数据;有接收数据完成标志,处理接收数据;有屏刷新标志,刷新屏幕。。。。。。
ID:284106 发表于 2018-4-9 23:05
看到了用这个 RTX51 Tiny 可以让51单片机实现多任务,得研究一下。这样就可以实现收数据时,同时执行查询DS18B20温度。
ID:284106 发表于 2018-4-9 19:57
wulin 发表于 2018-4-9 15:33
你如果无法协调使用时间片轮询处理多任务管理,这通讯协议就要修改。上位机每发送一个字节需要等待下位机 ...

用两个51单片机实现多任务,每个51单片机执行不同的任务。
两个单片机通信,不能用串口,因为被占用了。也不能用中断,不然会引响时序。
用轮询,有好的稳定的实例吗?
ID:213173 发表于 2018-4-9 15:33
本帖最后由 wulin 于 2018-4-9 16:50 编辑
duwen009 发表于 2018-4-9 12:46
如果使用查询法,单片机不能一直只查询串口有没有数据来到。同时还要l轮询DS18B20的温度数据,查询一个DS ...

你如果无法协调使用时间片轮询处理多任务管理,这通讯协议就要修改。上位机每发送一个字节需要等待下位机应答后才能发送下一个字节。你的程序写得很啰嗦,会占用MCU很多时间,DS18B20是单总线器件,不必开多个I/O口。串口中断里也不要处理非必须的事务,信息保存后由主程序处理。
ID:284106 发表于 2018-4-9 12:46
wulin 发表于 2018-4-8 21:23
串口接收使用查询法,放弃使用中断法,这样可以避免与其他应用程序发生冲突。

如果使用查询法,单片机不能一直只查询串口有没有数据来到。同时还要l轮询DS18B20的温度数据,查询一个DS18B20 时间就早己超过1毫秒,如果查询几个,还执行其他的操作,如1602显示的话,就会更长。

9600波特率下,串口收取数据,下一个字节数据接收完成前,约有1毫秒的时间,要把数据取走,不然串口就会丢弃接收的数据。这样,在查询其他器件时,串口还是会丢数据。

感觉查询法似乎不行
ID:284106 发表于 2018-4-9 09:08
沧浪 发表于 2018-4-8 22:40
在进行DS18B20查询之前把中断给关掉不就好了吗

中断关了,如果这时串口有数据来到,串口数据就会丢失。
ID:111517 发表于 2018-4-8 22:40
在进行DS18B20查询之前把中断给关掉不就好了吗
ID:213173 发表于 2018-4-8 21:23
串口接收使用查询法,放弃使用中断法,这样可以避免与其他应用程序发生冲突。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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