打印
[AVR单片机]

有用IAR的请进

[复制链接]
1701|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fox_kf|  楼主 | 2013-1-31 11:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
小白诚心请教
#include <iom16.h>
//#include <iomacro.h>
//#include <avr_macros.h>



void segg()
{
   DDRA|=(1<PA3);                //PA3设置为输出状态
   DDRA|=(1<<4);                //PA4设置为输出状态
   DDRB=0xff;                        //PB口设置为输出状态
   PORTB=0xff;                   //发送模码
   PORTA|=(1<<3);                //PA3输出高电平,DU拉高
   PORTA&=~(1<<3);        //PA3输出低电平,DU拉低,段选锁存
   
   PORTB=0xff;                        //发送为选  关掉数码管显示
   PORTA|=(1<<4);                //PA4输出高电平,WE拉高
   PORTA&=~(1<<4);        //PA4输出低电平,WE拉低,位选锁存
   
   DDRA|=(1<<2);                //PA2设置为输出状态 用于LED流水灯控制IO口
   PORTA&=~(1<<2);        //PA2输出低电平,DU拉低,段选LED流水灯锁存
}

//延迟函数
void Delay(int i) //
{
   unsigned long x=5000;
   x*=i;
   while(x--);
}

//主函数
void main()
{
   unsigned char i=0;  
   segg(); //关数码显示管函数
   while(1)
   {
      for(i=0;i<8;i++)
      {
        PORTB=~(1<<i);        //逐个PB口输出低电平?
        Delay(60);                //适当延迟
      }
      
   }
}


为什么DDRA|=(1<<PA3); 编译时会报错PA3未定义,但是在头文件明明是定义了PA3 的 啊。如果改为DDRA|=(1<<3),就通过了啊? 求指点

相关帖子

沙发
huangxz| | 2013-1-31 13:31 | 只看该作者
看来用iar for avr 的人不多啊:lol

使用特权

评论回复
板凳
yklstudent| | 2013-1-31 14:52 | 只看该作者
一直觉得ICC和GCC得人多

使用特权

评论回复
地板
dqyubsh| | 2013-2-4 13:20 | 只看该作者
你说头文件“分明定义了PA3”,而编译楞说没有定义,那就是见鬼了。在PA3定义之前一定有个编译选项,把这部分定义略过了。

你在#include <iom16.h>之前加上 #define ENABLE_BIT_DEFINITIONS 试试。

使用特权

评论回复
5
fox_kf|  楼主 | 2013-2-4 16:45 | 只看该作者
已经解决了,是编译器上面设置问题,下面那个选项未选上

使用特权

评论回复
6
韩野加油| | 2013-3-5 18:53 | 只看该作者
iar还有 avr的呢  支持下!

使用特权

评论回复
7
qin552011373| | 2013-3-6 20:52 | 只看该作者
韩野加油 发表于 2013-3-5 18:53
iar还有 avr的呢  支持下!

iar几乎支持所有的单片机

使用特权

评论回复
8
liulx14| | 2013-3-8 13:42 | 只看该作者
你好,刚看到你的帖子,我一直是用的IAR FOR AVR,感觉他比较方便,用的是USB AVR JTAG烧写工具,你的#define  PA3      3 是这样定义的DDRA |= (1<<PA3)我这里通过了,欢迎加群7528364探讨AVR问题

使用特权

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

本版积分规则

1

主题

6

帖子

0

粉丝