我遇到了一个难题,请大家帮我指点迷津。
我准备用DS18B20采集温度通过串口通信发给上位机显示,上位机完成对温度的判断后,再通过串口通信发送数字给单片机,让单片机实现直流电机的调速和LED灯的亮灭。
问题是:我的代码实现了上位机发来数字后可以进行直流电机的调速和LED的亮灭,却不能将正确的温度发给上位机显示。
当我把中断1注释掉以后,变成了可以正常发送温度给上位机,但不能调速直流电动机了。
我的单片机代码如下:
以上是main.c DS18B20采集温度,通过串口通信发给上位机。
上图是main.c中的各中断,中断1的目的是用来生成pwm波调速直流电机,中断4的目的是接收上位机发来的数字作为控制直流电机速度的依据,同时可以使LED灯亮灭。
上图是UART.c串口通信,用定时器1得出波特率,并且进行了一些中断方面的设置。
上图是Timer0.c定时器0,也进行了一些中断方面的设置。
我的定时器1设置为8位自动重载,定时器0模式设置为16位,不知道错误的原因是否出在这,或者还是中断方面的错误,请各位大佬不吝赐教。
|