打印
[AVR单片机]

求高人指导设置AVR

[复制链接]
2917|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Dreamtale07|  楼主 | 2012-12-21 10:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
新手一枚,求指导设置AVR,使AVR能软仿和硬仿,刚开始学习AVR,写了一个中断程序,就是不进中断,设置寄存器等都是对的。但求一解,谢谢了。

现把该简单到爆的中断程序贴在下面


#include<iomacro.h>
#include<iom16.h>

#define uchar unsigned char

int time0_counter=0;

#pragma vector = TIMER0_OVF_vect
__interrupt void TIMER0_normal(void)
{
  uchar temp;
  temp=SREG;
  TCNT0=0x5e;
  time0_counter++;
  SREG=temp;
}



void main(void)
{
  SREG=0x00;
  TCNT0=0x5e;
  TIMSK=0x01;
  TCCR0=0x01;
  SREG_I=1;
  while(1)
  {
    ;
  }
}

相关帖子

沙发
yklstudent| | 2012-12-21 15:46 | 只看该作者
熔丝位没设置好吧
先确定单片机有没有工作先

使用特权

评论回复
板凳
Dreamtale07|  楼主 | 2012-12-21 21:20 | 只看该作者
yklstudent 发表于 2012-12-21 15:46
熔丝位没设置好吧
先确定单片机有没有工作先

单片机那是一个学习板,以前同学用别的软件调过,是好使的,现在我学是用IAR调,不知道要怎么设置才能用把程序下进单片机调试,上面我写的这个程序,用软仿进不了中断,表示看了好久了,寄存器的设置都是对的,但就是不进中断,我都快奔溃了。

使用特权

评论回复
地板
yklstudent| | 2012-12-22 08:47 | 只看该作者
IAR没用过 觉得还是GCC简单好用些
还要 你这个怎么看出来有没有进中断的?
搞很灯闪啊 那样直观点 你这个都没法看出来有没有进定时中断

使用特权

评论回复
5
Dreamtale07|  楼主 | 2012-12-22 09:13 | 只看该作者
yklstudent 发表于 2012-12-22 08:47
IAR没用过 觉得还是GCC简单好用些
还要 你这个怎么看出来有没有进中断的?
搞很灯闪啊 那样直观点 你这个都 ...

没办法,老师要求用IAR的
软仿的时候在中断程序里面设断点,没进去,所以我这不想着看看怎么能把程序用USB写到单片机上去,用别的程序测试一下看硬件能不能进中断。

使用特权

评论回复
6
Dreamtale07|  楼主 | 2012-12-24 16:56 | 只看该作者
那么多光看不回帖的啊,有会的帮忙指导下啦。。。。

使用特权

评论回复
7
bbslhb| | 2012-12-24 22:48 | 只看该作者
本帖最后由 bbslhb 于 2012-12-25 01:53 编辑

temp=SREG;

SREG=temp;
这个是干啥的?

没用过IAR,不过你在project中设置下processer类型试试。
再就是SREG_I=1;改为SREG=0x80;试试

使用特权

评论回复
8
251330577| | 2012-12-29 11:12 | 只看该作者
个人觉得你的中断服务程序没有中断号啊,还有就是SREG|=BIT(7);z这个是在使用任何中断之前都必须将全局中断使能位置1

使用特权

评论回复
9
251330577| | 2012-12-29 11:12 | 只看该作者
uchar temp;
temp=SREG;
这个是什么意思啊

使用特权

评论回复
10
Dreamtale07|  楼主 | 2013-1-1 12:04 | 只看该作者
251330577 发表于 2012-12-29 11:12
uchar temp;
temp=SREG;
这个是什么意思啊

SREG=0x80;不就已经开了全局中断了么   还需要特定的把7为置1?


然后temp的这个删了也不好使  = =!

使用特权

评论回复
11
qin552011373| | 2013-1-2 00:48 | 只看该作者
IAR很少把中断程序放在main上面的   你放下面试试  由于最近电脑重装系统   暂时没办法帮你确认程序的具体问题   你先试下咯

使用特权

评论回复
12
Dreamtale07|  楼主 | 2013-1-3 11:16 | 只看该作者
qin552011373 发表于 2013-1-2 00:48
IAR很少把中断程序放在main上面的   你放下面试试  由于最近电脑重装系统   暂时没办法帮你确认程序的具体 ...

震惊了   还有这一说   让我试试。。。

使用特权

评论回复
13
Dreamtale07|  楼主 | 2013-1-3 11:19 | 只看该作者
qin552011373 发表于 2013-1-2 00:48
IAR很少把中断程序放在main上面的   你放下面试试  由于最近电脑重装系统   暂时没办法帮你确认程序的具体 ...

大婶  方便的话加下我QQ  854589982  现在IAR让我设置得都各种不对了。。。

使用特权

评论回复
14
qin552011373| | 2013-1-3 12:39 | 只看该作者
Dreamtale07 发表于 2013-1-3 11:19
大婶  方便的话加下我QQ  854589982  现在IAR让我设置得都各种不对了。。。

你加我吧  我看看存的还有没有IAR的程序

使用特权

评论回复
15
Dreamtale07|  楼主 | 2013-1-3 13:33 | 只看该作者
qin552011373 发表于 2013-1-3 12:39
你加我吧  我看看存的还有没有IAR的程序

帅锅   你也要给我留个QQ我才能加啥

使用特权

评论回复
16
Dreamtale07|  楼主 | 2013-1-3 14:25 | 只看该作者
qin552011373 发表于 2013-1-3 12:39
你加我吧  我看看存的还有没有IAR的程序

你账号里的那堆数字就是QQ?

使用特权

评论回复
17
qin552011373| | 2013-1-3 15:03 | 只看该作者
Dreamtale07 发表于 2013-1-3 14:25
你账号里的那堆数字就是QQ?

不是  

使用特权

评论回复
18
qin552011373| | 2013-1-3 15:06 | 只看该作者
Dreamtale07 发表于 2013-1-3 14:25
你账号里的那堆数字就是QQ?

//定时器0溢出中断服务程序
#pragma vector = TIMER0_COMPA_vect
__interrupt void timer0_compa_isr(void)  //匹配中断
{
         ADC_Value=read_ADC();            //AD数码管显示
         f_adc=(3.3*ADC_Value)/1024;
         f_adc*=1000;
         ADC_Value=(unsigned int)f_adc;
         Dis_number(1,1,ADC_Value/1000);
         Dis_number(2,0,ADC_Value%1000/100);
         Dis_number(3,0,ADC_Value%1000%100/10);
         Dis_number(4,0,ADC_Value%1000%100%10);
}

使用特权

评论回复
19
qin552011373| | 2013-1-3 15:07 | 只看该作者
上面贴的是一段是定时采样的中断程序  放在主函数后面的

使用特权

评论回复
20
Dreamtale07|  楼主 | 2013-1-3 19:46 | 只看该作者
qin552011373 发表于 2013-1-3 15:07
上面贴的是一段是定时采样的中断程序  放在主函数后面的

收到   吃晚饭验证

使用特权

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

本版积分规则

0

主题

1

帖子

0

粉丝