cwh528 发表于 2006-5-13 14:41:45

马老师,恳请您帮忙分析下mega16的问题

mega16内部8m时钟,用定时器0的中断来实现输出300k的方波。

但是不知为什么,用示波器测量输出最大只有125k,即使是把tcnt0赋值为0xfe,并且定义分频系数为1也不行。

请教马老师给指点下,谢谢啦!!!



#include <iom16v.h>

#include <macros.h>



#pragma interrupt_handler timer0_ovf_isr:10



void timer0_ovf_isr(void)

{

   TCNT0 = 0xfe;   //reload counter value

   

   PORTB ^= 0x02; //端口取反

}

void main(void)

{



CLI(); //disable all interrupts

DDRB= 0x02;//设置 PB1 为输出

TCCR0 = 0x00; //stop

TCNT0 = 0xfe; //set count



TCCR0 = 0x01; //start timer,分频系数为1



TIMSK = 0x01; //timer interrupt sources

SEI(); //re-enable interrupts

   

}

machao 发表于 2006-5-14 02:30:00

在主程序中加上一个死循环试试:



void main(void)

{

   

CLI(); //disable all interrupts

DDRB= 0x02;//设置 PB1 为输出

TCCR0 = 0x00; //stop

TCNT0 = 0xfe; //set count

   

TCCR0 = 0x01; //start timer,分频系数为1

   

TIMSK = 0x01; //timer interrupt sources

SEI(); //re-enable interrupts



while(1){};   

}

cwh528 发表于 2006-5-15 16:49:51

谢谢马老师。
页: [1]
查看完整版本: 马老师,恳请您帮忙分析下mega16的问题