avr 定时器设置

neaman   2010-1-31 15:03 楼主
想让定时器O溢出1000次后将B口置成OxFE,怎么试都不行.大家看下设置有没有问题,我用的是ATTINY 2313


        DDRB=0xFF;//B口输出
        TCNT0=55;//初值
        TIMSK =0x02;//中断允许
        sei();
//        TCCR0 |=(1<         TCCR0A = 0x00;
        TCCR0B = 0x02;//8分频
        while(1)
        {
                while(cnt<1000)
                {       
                        while(!(TIFR&(1<<1)));//等待溢出
                        TCNT0=55;
                        cnt++;
                }
                        PORTB=0xfe;
        }

回复评论 (6)

while(!(TIFR&(1 < <1)));//等待溢出
后边加打印信息,看看有没有等到这个结果
点赞  2010-1-31 15:49
while(!(TIFR&(1 < <2)));//等待溢出
点赞  2010-1-31 16:09
引用: 引用 2 楼 lin0119 的回复:
while(!(TIFR&(1 < <2)));//等待溢出

看错了.不好意思~
顺便问下楼主cnt是什么定义的
uchar还是uint ?
点赞  2010-1-31 16:11
引用: 引用 3 楼 lin0119 的回复:
引用 2 楼 lin0119 的回复:
while(!(TIFR&(1 < <2)));//等待溢出

看错了.不好意思~
顺便问下楼主cnt是什么定义的
uchar还是uint ?



unsigned long 应该跟cnt没关系
点赞  2010-1-31 18:43
它就在while(!(TIFR&(1 < <1)));那死等
点赞  2010-1-31 18:45
刚才仔细看了一下,错在
TIMSK =0x02;//中断允许
这一句上。
你这个用轮询方式的,允许中断干嘛呢?结果就是溢出的时候跳到中断位置了。
点赞  2010-1-31 21:32
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复