打印
[AVR单片机]

急请教,定时中断0程序不能实现?

[复制链接]
1857|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ruguo2|  楼主 | 2010-3-31 22:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ruguo2 于 2010-4-1 20:35 编辑

我是个刚学习AVR的新人,想用定时器0来控制灯的亮灭,定时1s时间到后灯亮,但是仿真的时候PB0口一直都是输出低电平,没有输出高电平,没有达到预期的目的,百思不得其解,望各位大虾赐教,下面是我的程序,感激不尽。(我用的ICC AVR)

#include <iom8v.h>
#include "macros.h"
volatile unsigned char counter;   //全局变量counter
void main(void)
{
  MCUCR=0x00;
  SREG=0x80; //全局中断使能
  TCNT0 =12; //定时250ms,计数四次就1s
  TCCR0=0x05; //1M,1024分频
  TIMSK=0x01; //定时器0的溢出中断使能
  DDRB=0xFF; //设置B口输出
  PORTB=0x00; //输出低电平
  counter=0; //计数值置零
  while(1);
              }
#pragma interruput_handler int_timer0:10 //计数器0溢出的向量号为10
void int_timer0(void)
{
   TCNT0 =12;//计数器重新赋值
   counter++;//不为4就加1
   if(counter==4)
   {
     PORTB=0x01;//定时1s时间到,输出高电平
  counter=0;//重新置零
                }

相关帖子

沙发
ruguo2|  楼主 | 2010-4-1 11:11 | 只看该作者
自己给自己回帖啦,请牛人们帮帮忙啊!!!谢谢啦

使用特权

评论回复
板凳
liao_fangxing| | 2010-4-1 11:29 | 只看该作者
本帖最后由 liao_fangxing 于 2010-4-1 11:48 编辑

#pragma interruput_handler int_timer0:10 //计数器0溢出的向量号为10
………………这个是否正确??

使用特权

评论回复
地板
ruguo2|  楼主 | 2010-4-1 12:10 | 只看该作者

使用特权

评论回复
5
ruguo2|  楼主 | 2010-4-1 12:12 | 只看该作者
这是从数据守则里的,应该没有问题,定时计数器0溢出中断向量号是10没错啊,请问哪里还有问题吗?

使用特权

评论回复
6
SHSLZHZ| | 2010-4-2 10:40 | 只看该作者
1# ruguo2
问题就出在这句话上
#pragma interruput_handler int_timer0:10 //计数器0溢出的向量号为10
你只要把interruput改成interrupt就行了!!!!!!

使用特权

评论回复
7
SHSLZHZ| | 2010-4-2 10:45 | 只看该作者
其实编译时就出现警告这句话了,你只要仔细查就清楚了!!!!!!!

使用特权

评论回复
8
strang| | 2010-4-2 22:53 | 只看该作者
#pragma interruput_handler int_timer0:10 //计数器0溢出的向量号为10

就这一句ICC编译器也能通过?
按照6楼说的修改一下试试...

使用特权

评论回复
9
ruguo2|  楼主 | 2010-4-6 20:36 | 只看该作者
谢谢上面几位的回帖,编译是通过的,也没有警报,可是现在改了也没有用啊!!!请问哪里还有问题吗?谢谢指教。

使用特权

评论回复
10
suoma| | 2010-4-7 22:18 | 只看该作者
void int_timer0(void)
这个函数少了个括号吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝