[AVR单片机] AVR程序求解释

[复制链接]
3871|17
 楼主| LYB911 发表于 2010-10-16 19:25 | 显示全部楼层 |阅读模式
void main()
{                                        刚开始学习AVR,对一些基础性知识,不太理解
   uchar k;-------将此句放到PORTD=0XFF;后为什么就编译不过去了啊,
   DDRD=0XFF;//设置PD口为输出
   PORTD=0XFF;
   
while(1)
   {
   for(k=0;k<8;k++)
   {
   PORTD&=~BIT(k);
   delay(500);
   
   PORTD|=BIT(k);
   delay(500);
   }
   }
}
NE5532 发表于 2010-10-16 22:13 | 显示全部楼层
C语言不能边写语句边定义变量,你的问题与AVR没有任何关系,提刀杀你的C语言老师去。
tyj_3 发表于 2010-10-17 14:36 | 显示全部楼层
这个与使用的编译器有关。
areshan 发表于 2010-10-19 10:29 | 显示全部楼层
ICC的编译器只能把变量定义在每个函数的最开头,其它的编译器不是这样的!
宇宙飞船 发表于 2010-10-19 14:12 | 显示全部楼层
记那么多规则干嘛,能编译通过就接着写,不通过就改写呗。
zhaoyu2005 发表于 2010-10-19 17:33 | 显示全部楼层
4# areshan
这个可不是ICC AVR一家的,好多是这样的,好像C语言规定的:定义变量必须在函数开始,不能在中间
C++好像能随时定义(以前在哪儿看过,如果记错了,请一笑而过)
qingqiu647 发表于 2010-10-20 14:58 | 显示全部楼层
PORTD&=~BIT(k);需改一下
hackerzw 发表于 2010-10-20 22:33 | 显示全部楼层
C语言根本没入门啊。
chenczy 发表于 2010-10-25 10:39 | 显示全部楼层
哈哈,我写C还从没试过在后面定义的,还真不知道这个问题,飘过.....................
john_lee 发表于 2010-10-25 12:21 | 显示全部楼层
C89标准要求变量定义必须在程序块的开头,而C99标准允许变量定义在作用域内,访问变量语句之前的任何位置。
宇宙飞船 发表于 2010-10-25 22:27 | 显示全部楼层
还是10楼 john_lee 老兄功力深厚。知其所以然。
老鱼探戈 发表于 2010-10-26 12:24 | 显示全部楼层
习惯就好

先定义再使用是一定没有问题的
375485114 发表于 2010-10-26 15:14 | 显示全部楼层
定义变量必须在函数开始,不能在中间
jujishoudong 发表于 2010-10-30 11:42 | 显示全部楼层
这个貌似在avr单片机中所有的变量都要在程序最开始的时候定义的
jujishoudong 发表于 2010-10-30 11:42 | 显示全部楼层
这个貌似在avr单片机中所有的变量都要在程序最开始的时候定义的
mxh0506 发表于 2010-11-3 16:58 | 显示全部楼层
改成这样试试,不放在开头应该也行:
void main()
{                                        刚开始学习AVR,对一些基础性知识,不太理解
   DDRD=0XFF;//设置PD口为输出
   PORTD=0XFF;
     while(1)
     {
           uchar k;-------将此句放到PORTD=0XFF;后为什么就编译不过去了啊,
       for( k=0 ...
     }
}
believe0815 发表于 2010-11-7 18:18 | 显示全部楼层
好像IAR可以的,大哥非要中间定义就用IAR吧
achesser 发表于 2010-11-19 11:40 | 显示全部楼层
IAR 当然可以,局部(临时)变量就是用了再定义,用完就扔吧!
有过就知道IAR的好!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

67

帖子

1

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