[AVR单片机] 关于avr定时器的问题

[复制链接]
 楼主| 李广119 发表于 2015-3-23 15:28 | 显示全部楼层 |阅读模式
背景是一个单片机先发射一个低电平,然后发射超声波,另外一个接收低电平下降沿触发中断启动定时器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;
}

 楼主| 李广119 发表于 2015-3-23 19:52 | 显示全部楼层
why??!!
try_87 发表于 2015-3-23 22:17 | 显示全部楼层
你所有语句都在WHILE的外面,这个程序应该只能运行一次,无法循环运行
 楼主| 李广119 发表于 2015-3-24 08:22 来自手机 | 显示全部楼层
try_87 发表于 2015-3-23 22:17
你所有语句都在WHILE的外面,这个程序应该只能运行一次,无法循环运行

不是在外部中断中运行嘛
yklstudent 发表于 2015-3-24 19:12 | 显示全部楼层
CLI();
楼主这是甚么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

68

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部

10

主题

68

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部