AVR 定时器1的定时问题(mega16,12Mhz)

#include<iom16v.h>#include<macros.h>#defineucharunsignedchar#defineuintunsignedint#pr... #include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
#pragma interrupt_handler timer1:9
uchar num;
void delay(uint z) //延时子函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void timer_init()
{ //晶振12MHz
TCCR1B = 0x00; //stop
//TIMSK|=BIT(2);
TCCR1B=0x04; //设置TC1 为 CLK/256分频,启动TC1
TCNT1H=0x48;
TCNT1L=0xE5;
//SREG|=BIT(7);
}
void main()
{
init();
CLI();
timer_init();
DDRB=0XFF;
MCUCR = 0x00;
GICR = 0x00;
TIMSK|=BIT(2);
SEI(); //re-enable interrupts
while(1)
{
if(num==2)
{
num=0;
PORTB=0X00;
}
}
}
void timer1()
{
TCNT1H=0x48;
TCNT1L=0xE5;
num++;
}

LED不会闪烁,定时器1初始化好像没问题,中断仿佛不会产生,LED一直亮
展开
 我来答
曹平萍
2011-08-03
知道答主
回答量:33
采纳率:0%
帮助的人:17.8万
展开全部
当定时器两次中断后 num=2 这时PORTB=0X00(led亮) 以后一直在主函数中大循环 PORTB一直为0x00(亮) PORTB不可能等于0XFF(灭) 所以一直亮
艾普斯
2024-07-18 广告
稳频稳压电源哪家好?艾普斯电源(苏州)有限公司开始专业研发、制造及营销交流稳压电源,满足全球电子及信息业对电源设备日益蓬勃的市场需求。迄今为止,业已发展成为交流不间断电源、稳压电源、变频电源、中频航空- 军事专用电源、直流电源、逆变电源等产... 点击进入详情页
本回答由艾普斯提供
jemmydeng
2011-08-02 · TA获得超过203个赞
知道小有建树答主
回答量:211
采纳率:0%
帮助的人:126万
展开全部
我没仔细看程序,但估计是定时太短,所以眼睛看不出来,可以用示波器看看引脚波形。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式