首先感谢两位的指教。现将定时器段程序贴出。并作解释。
以下采用T0与T1定时器,用来实现对外部脉冲的频率测量。
T0外部中断,用来计算外部脉冲的个数
T1定时器中断,用来50ms中断一次,若完成20次,即1秒。从而得到外部频率值。
请问此时,modbus-rtu通讯中,对3.5字符延时,该如何处理???
void T0_Init(void)
{
TMOD |= 0x05; //T0计数器方式,计算外部的脉冲个数,方式1,16位
ET0 = 1;
// IP = 0x08;
TH0 = 0x00;
TL0 = 0x00;
TR0 = 1;
// EA = 1;
}
//-----------------------------------------------
void T1_Init(void)
{ //50000uS中断一次
TMOD |= 0x10; //T1定时器方式,方式1,16位
ET1 = 1;
// IP = 0x08;
TH1 = 0x49;
TL1 = 0x00;
TR1 = 1;
EA = 1;
}
//-----------------------------------------------
void Time0_Routine(void) interrupt 1 using 0 //计数器方式
{
TR0 = 0;
TR1 = 0;
TH0 = 0x00;
TL0 = 0x00;
TH1 = 0x49;
TL1 = 0x00;
TR0 = 1;
TR1 = 1;
}
//-----------------------------------------------
void Time1_Routine(void) interrupt 3 using 1 //定时器方式
{ //50000uS中断一次
TR0 = 0;
TR1 = 0;
RH_Temp_H = TH0; //读取外部脉冲个数
RH_Temp_L = TL0;
TH0 = 0;
TL0 = 0;
TH1 = 0x49; //重新赋值
TL1 = 0x00;
TR0 = 1;
TR1 = 1;
}
|