马老师,恳请您帮忙分析下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
} 在主程序中加上一个死循环试试:
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){};
} 谢谢马老师。
页:
[1]