找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 489|回复: 3
打印 上一主题 下一主题
收起左侧

STC89C52RC单片机定时器间的冲突或者中断方面的错误

[复制链接]
跳转到指定楼层
楼主
    我遇到了一个难题,请大家帮我指点迷津。
    我准备用DS18B20采集温度通过串口通信发给上位机显示,上位机完成对温度的判断后,再通过串口通信发送数字给单片机,让单片机实现直流电机的调速和LED灯的亮灭。

    问题是:我的代码实现了上位机发来数字后可以进行直流电机的调速和LED的亮灭,却不能将正确的温度发给上位机显示。




    当我把中断1注释掉以后,变成了可以正常发送温度给上位机,但不能调速直流电动机了。

    我的单片机代码如下:








    以上是main.c    DS18B20采集温度,通过串口通信发给上位机。




    上图是main.c中的各中断,中断1的目的是用来生成pwm波调速直流电机,中断4的目的是接收上位机发来的数字作为控制直流电机速度的依据,同时可以使LED灯亮灭。








    上图是UART.c串口通信,用定时器1得出波特率,并且进行了一些中断方面的设置。








    上图是Timer0.c定时器0,也进行了一些中断方面的设置。

    我的定时器1设置为8位自动重载,定时器0模式设置为16位,不知道错误的原因是否出在这,或者还是中断方面的错误,请各位大佬不吝赐教。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:161164 发表于 2024-6-19 10:57 | 只看该作者
问题原因在于定时中断打断了DS18B20的读写时序
需要修改DS18B20的代码来避开

另外,发送温度代码写的太累赘
可以改为send_byte(TA+0x30);
后面不用加延时
回复

使用道具 举报

板凳
ID:1125760 发表于 2024-6-19 20:15 | 只看该作者
lkc8210 发表于 2024-6-19 10:57
问题原因在于定时中断打断了DS18B20的读写时序
需要修改DS18B20的代码来避开

修改了DS18B20读写与定时器0中断的代码,解决了,感谢大佬。
回复

使用道具 举报

地板
ID:1125760 发表于 2024-6-19 20:16 | 只看该作者
感谢大佬,解决了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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