背景是一个单片机先发射一个低电平,然后发射超声波,另外一个接收低电平下降沿触发中断启动定时器0,等待超声波到来的时候关闭定时器取出定时器里面的值,显示出来 为什么我下载程序进去第一次能够读出定时器的值,第二次就定时器的值要么为0,要么为1呢 复位后又可以读出来。是不是我定时器设置有问题呀!
void main(void)
{
port_init();
Init_5110();
MCUCR|=(1<<ISC01)|(1<<ISC11);//ÖжÏ0Ͻµ´¥·¢£¬ÖжÏ1ϽµÑØ´¥·¢
GICR|=(1<<INT1)|(1<<INT0); //¿ªÊ¼ÍⲿÖжÏ1
SEI();
while(1);
}
#pragma interrupt_handler ite0:2
void ite0(void)
{
unsigned char i;
i=SREG;
CLI();
//LED0_01;
DISTANCE_TIME=TCNT0*32;
TCNT0=0;
Lcd_disp_number(1,1,DISTANCE_TIME);
GICR|=(1<<INT1);
GICR&=~(1<<INT0);
TCCR0=0X00;
SREG=i;
}
#pragma interrupt_handler ite1:3
void ite1(void)
{
unsigned char i;
//Decode();
i=SREG;
CLI();
LED0_01;
GICR|=(1<<INT0);
GICR&=~(1<<INT1);
TCNT0=0;
TCCR0|=(1<<CS02);
SREG=i;
}
|