- 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; //SMOD SSTAT SSTAT1 空 GF1 GF0 PD IDL
- ES0 = 1; //开串口中断
- //REN = 1;
- // T4CON = 0x06;
- // IEN1 &= 0xbf;
- TR4 = 1;
- }
|