avr mage128定时器0遇上很蛋疼的事情 希望大虾能指点一二 感激不尽

2019-03-24 20:36发布

#include<iom128v.h>
#include<macros.h>
#define uint unsigned int
#define uchar unsigned char
uint num;
void Inti_time0()
{
TIMSK |= BIT(0);//允许定时0使能溢出
TCCR0 = 0x06;//采用256分频工作方式
TCNT0 = 0x82;//每8ms溢出
SREG|= BIT(7);//开启总中断
}
#pragma interrupt_handler time0:17
void time0()
{
static uchar cnt=0;
cnt++;
TCNT0=0x82;//每8ms溢出
if(cnt>=125)
{
  num++;
  cnt=0;
}
}
void main()
{
DDRA=0xff;//a管口输出
PORTA=0xff;

Inti_time0();
while(1){
PORTA=~num;}
}


a管口接有二极管 所以想让它进入中断显示num的值   但是烧录进去发现一直进不去中断是什么原因呢 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
wudayongnb
2019-03-25 05:57
PORTA=~num;这句话是什么意思
TCCR0 = 0x06;是设置为时钟由T0引脚输入,下降沿触发,这样定时器根本没工作,肯定不会产生中断
如果设置成256分频的话应该是0x04
我是看的ATmega16的寄存器,ATmega128应该一样吧

[ 本帖最后由 wudayongnb 于 2013-11-8 09:18 编辑 ]

一周热门 更多>