这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 51单片机定时器T2的应用

共1条 1/1 1 跳转至

51单片机定时器T2的应用

助工
2014-10-14 13:53:22     打赏
定时器T2有三种工作模式,其中MODE 2为波特率发生器,MODE 0为16位定时器
 
1、Mode 2:波特率发生器
串口方式1和3的波特率计算如下:
波特率bps=振荡器频率freq/[32*(65536-(RCAP2H, RCAP2L))]
则:RCAP2=65536-(freq/32s)
如果freq=11.0592MHZ,bps=9600,则:RCAP2 = 65500
RCAP2H = 255;RCAP2L = 220
 
此时的程序设置如下:
uint a, bps = 96;    // 9600 bps
         SCON |= 0x50;          // 0101 0000 串口方式1,允许接收
         a=3456s;         a=~a;
         RCAP2H = a/256;        RCAP2L = a;         T2MOD=0x00;
// T2CON =  0   0    1     1     0      1   0    0      = 0x34
//                  TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2
         T2CON=0x34;      // TF2=0;EXF2=0;RCLK=1;TCLK=1;EXEN2=0;TR2=1;C/T2=0;CP/RL2=0
         EA = 1;         ES = 1;      TI = 1;

 


 
2、Mode 0:自动装载16位定时器
// 10000周期定时
#define MSB_reload_value 216 /* msb reload value exemple */
#define LSB_reload_value 240 /* lsb reload value exemple */
 
T2EX=1;
TH2=MSB_reload_value;         // Init msb_value
TL2=LSB_reload_value;         // Init lsb_value
RCAP2H=MSB_reload_value;   // reload msb_value
RCAP2L=LSB_reload_value;    // reload lsb_value
EA=1;                      // interupt enable
ET2=1;                     // enable timer2 interrupt
// T2CON =  0   0    0    0    0     1   0    0      = 0x04
//                  TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2
T2CON = 0x04; 

 



共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]