[AVR单片机] 求高人指导设置AVR

[复制链接]
3683|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简单好用些
还要 你这个怎么看出来有没有进中断的?
搞很灯闪啊 那样直观点 你这个都没法看出来有没有进定时中断
 楼主| Dreamtale07 发表于 2012-12-22 09:13 | 显示全部楼层
yklstudent 发表于 2012-12-22 08:47
IAR没用过 觉得还是GCC简单好用些
还要 你这个怎么看出来有没有进中断的?
搞很灯闪啊 那样直观点 你这个都 ...

没办法,老师要求用IAR的
软仿的时候在中断程序里面设断点,没进去,所以我这不想着看看怎么能把程序用USB写到单片机上去,用别的程序测试一下看硬件能不能进中断。
 楼主| Dreamtale07 发表于 2012-12-24 16:56 | 显示全部楼层
那么多光看不回帖的啊,有会的帮忙指导下啦。。。。
bbslhb 发表于 2012-12-24 22:48 | 显示全部楼层
本帖最后由 bbslhb 于 2012-12-25 01:53 编辑

temp=SREG;

SREG=temp;
这个是干啥的?

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

251330577 发表于 2012-12-29 11:12 | 显示全部楼层
个人觉得你的中断服务程序没有中断号啊,还有就是SREG|=BIT(7);z这个是在使用任何中断之前都必须将全局中断使能位置1
251330577 发表于 2012-12-29 11:12 | 显示全部楼层
uchar temp;
temp=SREG;
这个是什么意思啊
 楼主| Dreamtale07 发表于 2013-1-1 12:04 | 显示全部楼层
251330577 发表于 2012-12-29 11:12
uchar temp;
temp=SREG;
这个是什么意思啊

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


然后temp的这个删了也不好使  = =!
qin552011373 发表于 2013-1-2 00:48 | 显示全部楼层
IAR很少把中断程序放在main上面的   你放下面试试  由于最近电脑重装系统   暂时没办法帮你确认程序的具体问题   你先试下咯
 楼主| Dreamtale07 发表于 2013-1-3 11:16 | 显示全部楼层
qin552011373 发表于 2013-1-2 00:48
IAR很少把中断程序放在main上面的   你放下面试试  由于最近电脑重装系统   暂时没办法帮你确认程序的具体 ...

震惊了   还有这一说   让我试试。。。
 楼主| Dreamtale07 发表于 2013-1-3 11:19 | 显示全部楼层
qin552011373 发表于 2013-1-2 00:48
IAR很少把中断程序放在main上面的   你放下面试试  由于最近电脑重装系统   暂时没办法帮你确认程序的具体 ...

大婶  方便的话加下我QQ  854589982  现在IAR让我设置得都各种不对了。。。
qin552011373 发表于 2013-1-3 12:39 | 显示全部楼层
Dreamtale07 发表于 2013-1-3 11:19
大婶  方便的话加下我QQ  854589982  现在IAR让我设置得都各种不对了。。。

你加我吧  我看看存的还有没有IAR的程序
 楼主| Dreamtale07 发表于 2013-1-3 13:33 | 显示全部楼层
qin552011373 发表于 2013-1-3 12:39
你加我吧  我看看存的还有没有IAR的程序

帅锅   你也要给我留个QQ我才能加啥
 楼主| Dreamtale07 发表于 2013-1-3 14:25 | 显示全部楼层
qin552011373 发表于 2013-1-3 12:39
你加我吧  我看看存的还有没有IAR的程序

你账号里的那堆数字就是QQ?
qin552011373 发表于 2013-1-3 15:03 | 显示全部楼层
Dreamtale07 发表于 2013-1-3 14:25
你账号里的那堆数字就是QQ?

不是  
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);
}
qin552011373 发表于 2013-1-3 15:07 | 显示全部楼层
上面贴的是一段是定时采样的中断程序  放在主函数后面的
 楼主| Dreamtale07 发表于 2013-1-3 19:46 | 显示全部楼层
qin552011373 发表于 2013-1-3 15:07
上面贴的是一段是定时采样的中断程序  放在主函数后面的

收到   吃晚饭验证
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

1

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部