- 打卡等级:初来乍到
- 打卡总天数:2
- 最近打卡:2025-06-21 20:03:26
已绑定手机
新手上路
- 积分
- 15
|
8H3K32S2,
T1做串口1波特率发生器9600
T0,5ms
T2串口2,波特率38400
T3.10ms
T4,300us
void init_485_uart() //38400@11.0592 串口2
{
S2CON = 0x10; //8位数据,可变波特率
AUXR |= 0x04; //定时器时钟1T模式
T2L = 0xB8; //设置定时初始值
T2H = 0xFF; //设置定时初始值
AUXR |= 0x10; //定时器2开始计时
// IE2 = ES2; //使能串口中断
//IP2 |= 0x20; // 置位IP2.5,串口2中断优先级为高(1<<5 = 0x20)
}
void Timer3_Init(void) //10毫秒@11.0592MHz
{
T4T3M &= 0xFD; //定时器时钟12T模式
T3L = 0x00; //设置定时初始值
T3H = 0xDC; //设置定时初始值
T4T3M |= 0x08; //定时器3开始计时,定时器4开始计时
//IE2 |=ET3; //打开定时器3中断
}
void Timer4_Init(void) //300微秒@11.0592MHz
{
T4T3M &= 0xDF; //定时器时钟12T模式
T4L = 0xEC; //设置定时初始值
T4H = 0xFE; //设置定时初始值
T4T3M |= 0x80; //定时器4开始计时
//IE2 |=ET4; // 启用定时器4中断(ET4 = 1)
IE2 |=0x61; // 启用定时器4中断(ET4 = 1)
}
void Timer0_Init(void) //5毫秒@11.0592MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x00; //设置定时初始值
TH0 = 0x28; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0 = 1;
}
void init_debug_uart() //9600bps@11.0592MH 串口1
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xDC; //设定定时初值
TH1 = 0xDC; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
IE2 |= 0x01; // 使能串口2中断 ES2
IE2 |= 0x20; // 使能定时器3中断 ET3
IE2 |= 0x40; // 使能定时器4中断 ET4
发现ES2被置1后T3,T4就不工作了,不知道是什么原因,望大神帮忙解答一下,谢谢
|
|