C51中怎么同时应用串口中断和两个定时器中断
时间:10-02
整理:3721RD
点击:
大家好,我原来用两个定时器中断控制时钟显示和闹钟铃声,初始化如下:
void InitTimer0(void)
{
unsigned long T0_temp;
T0_temp = 65536-((INT_CLOCK *CRY_FREQUENCY /1000)/12);
TL0_temp = T0_temp & 0xff;
TH0_temp = T0_temp >> 8;
TL0 = TL0_temp;
TH0 = TH0_temp;
TH1=0xd8;
TL1=0xef;
TMOD |= 0x11;
EA = 1;
ET0 = 1;
ET1=1;
TR0 = 1;
}
想增加一个蓝牙模块控制,所以需要对串口中断有以下声明:
void init() //串口初始化
{
ES=0; //关中断
SCON = 0x50; // REN=1允许串行接受状态,串口工作模式1,
//10位UART(1位起始位,8位数据位,1位停止位,无奇偶校验),波特率可变
TMOD = 0x20; //定时器1工作于方式2,8位自动重载模式,用于产生波特率
TH1=TL1=0xFD; //波特率9600 (本次测试采用晶振为11.0592)
PCON &= 0x7f; //波特率不倍增
TR1 = 1; //定时器1开始工作,产生波特率
//发送标志位置0
TI=0; //接收标志位置0
RI=0;
ES=1;
led1=0; //初始化设置3个指示灯全亮
led2=0;
led3=0;
}
请问怎么整合成一个声明内,或者怎么设置互不影响,谢谢!
void InitTimer0(void)
{
unsigned long T0_temp;
T0_temp = 65536-((INT_CLOCK *CRY_FREQUENCY /1000)/12);
TL0_temp = T0_temp & 0xff;
TH0_temp = T0_temp >> 8;
TL0 = TL0_temp;
TH0 = TH0_temp;
TH1=0xd8;
TL1=0xef;
TMOD |= 0x11;
EA = 1;
ET0 = 1;
ET1=1;
TR0 = 1;
}
想增加一个蓝牙模块控制,所以需要对串口中断有以下声明:
void init() //串口初始化
{
ES=0; //关中断
SCON = 0x50; // REN=1允许串行接受状态,串口工作模式1,
//10位UART(1位起始位,8位数据位,1位停止位,无奇偶校验),波特率可变
TMOD = 0x20; //定时器1工作于方式2,8位自动重载模式,用于产生波特率
TH1=TL1=0xFD; //波特率9600 (本次测试采用晶振为11.0592)
PCON &= 0x7f; //波特率不倍增
TR1 = 1; //定时器1开始工作,产生波特率
//发送标志位置0
TI=0; //接收标志位置0
RI=0;
ES=1;
led1=0; //初始化设置3个指示灯全亮
led2=0;
led3=0;
}
请问怎么整合成一个声明内,或者怎么设置互不影响,谢谢!
跪求大神,帮忙修改下,谢谢。