第8章 N分频程序 求助
#include <mega16.h>// Timer 0 溢出中断服务
interrupt void timer0_ovf_isr(void)
{
TCNT0=0xFB; // 重新设置TCNT0的初值
PORTA = ~PORTA; // PA0取反输出
}
// Timer 0 比较匹配中断服务
interrupt void timer0_comp_isr(void)
{
PORTA = ~PORTA; // PA0取反输出
}
void main(void)
{
PORTA=0x00;
DDRA=0x01;
PORTB=0x01;
DDRB=0x00;
// T/C0 初始化
TCCR0=0x07; // T/C0工作于普通模式,T0上升沿触发
TCNT0=0xFB;
OCR0=0xFD; // 设置OCR0的比较值,>TCNT0的初始值,<0xFF
TIMSK=0x03; // 允许T/C0的溢出和比较匹配中断
#asm("sei") // 开放全局中断
while (1)
{
// Place your code here
}
}
程序设置T/C0工作在普通模式,并且结合比较匹配,在比较匹配和溢出中断都会改变PA0的输出,程序是5分频,仿真结果如图所示
我的理解是两个中断的优先级来看,应该是先溢出中断,然后再是比较匹配中断,原理还是不懂
http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_572280.JPG
(原文件名:仿真.JPG) 自己琢磨明白了
页:
[1]