|
马老师,您好,我写了一如下程序,目的是想用定时计数器做定时让PORTA.0引脚每隔1秒钟改变一次电平,但是单片机实际运行时好像大概是每隔8秒钟PORTA.0引脚才改变一次电平,想了很久,找不出原因,如果马老师您哪个时候有空能不能帮忙看一下是什么原因或是可能哪里我忽视了什么才导致这样,我用的芯片是Mega16,使用外部8M晶振,程序是用CVAVR写的。
#include <mega16.h>
unsigned int count;
void main(void)
{
/////定时计数器T/C0的CTC工作模式//////////////
OCR0=249;
TCNT0=0x00;
TCCR0=0x0C;//CTC模式,OC0与引脚不连接,系统时钟256分频
TIFR=0x02; //清零比较匹配中断标志位
TIMSK=0x02; //使能比较匹配中断
//使能全局中断
#asm("sei")
//////////////////////////////////////////////
DDRA.0=1;
PORTA.0=1;
count=0;
while (1)
{
if(count>=125)
{
PORTA.0=~PORTA.0;
count=0;
}
}
}
interrupt [TIM0_COMP] void timer0_comp_isr(void)
{
count++;
}
以下是我用的熔丝设置:
![](http://cache.amobbs.com/bbs_upload782111/files_34/ourdev_597067NQP7KB.jpg)
(原文件名:ATmega16熔丝配置.jpg) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|