问题:我想用uart2输出数据,定时器1定1ms输出一次数据,定时器0计数外部输入,不使能定时器0中断的时候,可以输出数据,使能定时器0中断后就不输出数据了,不知道为什么不能同时使用。
void Timer_config(void)
{
TMOD =0x00;
TL1 = 0x66; //65536-11.0592M/12/1000
TH1 = 0xfc;
TR1 = 1; //启动定时器
ET1 = 1; //使能定时器中断
}
void T_count(void)
{
TMOD = 0x04; //外部计数模式,自动重载值
TL0 = 0xff;
TH0 = 0xff;
TR0 = 1; //启动定时器
//ET0 = 1; //使能定时器中断
}
void Timer0_ISR_Handler (void) interrupt TMR0_VECTOR //进中断时已经清除标志
{
READ_COUNT0++;
}
void Timer1_ISR_Handler (void) interrupt TMR1_VECTOR //进中断时已经清除标志
{
READ_COUNT1=TH0;
READ_COUNT1=READ_COUNT1<<8+TL0+READ_COUNT0*65536;
READ_COUNT0=0;
TH0=0;TL0=0;
printf("%d\r",READ_COUNT1);
READ_COUNT1=0;
}
/******************** task A *************************/
void main(void)
{
EAXSFR(); / 扩展寄存器访问使能 */
GPIO_config();
UART_config();
UART_config();
Timer_config();
T_count();
EA = 1;
printf("****************printf test********************** \r\n");
while (1)//改为1ms计数一次判断高低电平
{
}
}
定时器0 开启ET0=1;后情况
定时器0 屏蔽 //ET0=1;后情况