关于52系列T2定时器的应用,急切请教!
我的T0,T1已经用了,现在要用串口,所以模拟了一个,要用一个定时器,正好我的还有T2,我就是想设置成定时器,因为模拟串口要改定时的值,所以不用自动重装模式,只能用捕获了吧。我的设置如下:
T2CON = 0X01;//捕获模式
TL2 = rs_START_BIT_L;//初值
TH2 = rs_START_BIT_H;
IP_PTx = 1; //置中断优先级为高 IE_ETx = 1; //允许定时器中断
TCON_ENABLE_TIMER = 1; //启动定时器
中断函数如下:
void timer0 (void) interrupt 5 using 3
{
if (rs_RXD == 0 | rs_shift_count > 0)
{ soft_rs232_interrupt(); }
else
{
rs_timerH = rs_TEST_H;
rs_timerL = rs_TEST_L;
}
}
可是这样做了,得到的串口数据不对,以前没用过T2,麻烦各位高人指教一下,谢谢!
[解决办法]
出现串口数据不对的原因很多的啊,波特率对吗?通讯模式对吗?中断处理语句引起的定时误差影响大吗?
[解决办法]
这个和T2的用法无关的,定时器都是那么个用,没问题的...
[解决办法]
你找找其它的地方看看
[解决办法]
可以直接用T2做波特率发生器的啊
[解决办法]
用T2做波特率发生器:
RCLK=1
TCLK=1
自动重装
注意时钟输入是fosc/2 不是fosc/12