打印
[AVR单片机]

关于avr定时器的问题

[复制链接]
930|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
李广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的外面,这个程序应该只能运行一次,无法循环运行

不是在外部中断中运行嘛

使用特权

评论回复
5
yklstudent| | 2015-3-24 19:12 | 只看该作者
CLI();
楼主这是甚么?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

68

帖子

6

粉丝