标题: 单片机定时计数器T2做波特率发生器程序问题 [打印本页]

作者: hululu2333    时间: 2020-6-19 22:31
标题: 单片机定时计数器T2做波特率发生器程序问题
在89c52上用T2给AS608指纹模块做波特率发生器,T1已经调试好了,但是T2一直有问题。
在串口助手上发送数据,可以接收到数据,但是发送和接收的数据不一样。不知道是什么问题,请各位帮忙看看
晶振是11.0592MHz,波特率9600
void Uart_Init(void)
{   
    SCON=0x50;
    T2CON=0x34;
    TH2=0xFF;
    TL2=0xDC;        
    RCAP2H=TH2;
    RCAP2L=TL2;
    EA=1;
}


作者: angmall    时间: 2020-6-20 01:25
这程序没错,估计其他地方错了, 取决于你的串行中断处理程序。
是因为你的定时器设置太小,已经等于小于机器周期。而定时器中断优先级高于串口中断,所以不能执行串口中断。解决方法1定时器时间改长一点2把串口优先级设高于定时器。


作者: hululu2333    时间: 2020-6-20 09:18
angmall 发表于 2020-6-20 01:25
这程序没错,估计其他地方错了, 取决于你的串行中断处理程序。
是因为你的定时器设置太小,已经等于小于 ...

我这里没有用串口中断,只用t2做波特率发生器,问题已经解决,谢谢
作者: SKYLAR123    时间: 2020-6-24 11:54
对比数据手册这这里缺少ES=1;(串口中断),但是楼主说没有用到中断,那难道你接收程序用的是查询方式吗
作者: hululu2333    时间: 2020-7-7 16:33
SKYLAR123 发表于 2020-6-24 11:54
对比数据手册这这里缺少ES=1;(串口中断),但是楼主说没有用到中断,那难道你接收程序用的是查询方式吗

我是把T2用作波特率发生器,接收发送函数没写在中断里,写在循环里了。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1