当前位置: 代码迷 >> 单片机 >> 关于52系列T2定时器的应用,切请问
  详细解决方案

关于52系列T2定时器的应用,切请问

热度:197   发布时间:2016-04-28 16:22:51.0
关于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
  相关解决方案