为什么两个定时器的计数值一直都相等,而且只要TR4 = 1,定时器2和4 就不工作了
void Timer2_Init() //定时时间为125us{
T2CON= 0x00; //定时器4为波特率发生器
//TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2(0:自动重载 1:捕获)
// RCLK: 0:定时器4产生接收波特率 1:定时器2产生接收波特率
// TCLK: 0:定时器4产生发送波特率 1:定时器2产生发送波特率
T2MOD= 0x80;
//TCLKP2(选择为系统时钟/12)空 空 空 空 空 T2OE(选择P05为I/O)DCEN(只允许增加计数)
TH2 = (65536-125)/256;
TL2 = (65536-125)%256;
RCAP2H = (65536-125)/256;
RCAP2L = (65536-125)%256;
ET2 = 1 ; //开定时器中断2
TR2 = 1 ; //启动定时器2
}
这段代码是初始化定时器2做125us定时,以及定时器4做波特率产生器,但是为什么两个定时器的计数值一直都相等,而且只要TR4 = 1,定时器2和4 就不工作了
void Uart_Init()
{
T4CON = 0x00; //设定定时器4位时钟为系统时钟,工作方式为波特率发生器
// TF4 TC4 T4PS1 T4PS0 T4M1 T4M0 TR4 T4CLKS
TH4 = (65536-78)/256; //波特率设置为4800
TL4 = (65536-127)%256;
SCON= 0x40; //SM0 SM1 SM2 REN TB8 RB8 TI RI
PCON= 0x00; //SMODSSTAT SSTAT1 空 GF1 GF0 PD IDL
ES0 = 1; //开串口中断
//REN = 1;
// T4CON = 0x06;
// IEN1&= 0xbf;
TR4 = 1;
} 拿到假的头文件了
我也感觉
sfr T2CON = 0xC8;
sfr T2MOD = 0xC9;
sfr RCAP2L = 0xCA;
sfr RCAP2H = 0xCB;
sfr TL2 = 0xCC;
sfr TH2 = 0xCD;
sfr T3CON = 0x88;/*bank1*/
sfr TL3 = 0x8C;/*bank1*/
sfr TH3 = 0x8D;/*bank1*/
sfr T4CON = 0xC8;/*bank1*/
sfr TL4 = 0xCC;/*bank1*/
sfr TH4 = 0xCD;/*bank1*/
sfr T5CON = 0xC0; /*bank1*/
sfr TL5 = 0xCE; /*bank1*/
sfr TH5 = 0xCF; /*bank1*/
sfr SWTHL = 0x89;
更多操作 来个大神指导下,如何才能正确寻址到TH4还有TL4吧
注意 BANK0 和BANK1的访问 。
用官方的代码测试下,另外那个头文件的问题,也要注意下。
页:
[1]