打印
[AVR单片机]

请各位大虾帮我分析一下ICC编程几个语法结构,谢谢!

[复制链接]
1528|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wuyunzdh|  楼主 | 2007-5-25 15:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

(1)ICC中冒号是什么含义,有什么特殊的用途如:
struct data{
    
   unsigned bit0:1
   unsigned bit1:1
   unsigned bit2:1
   unsigned bit3:1
   unsigned bit4:1
   unsigned bit5:1
   unsigned bit6:1
   unsigned bit7:1
}a,b;
  

(2)晶振为8M时用如下宏可以延时1us, #defined delay-1us() asn(“nop”);asn(“nop”);asn(“nop”)asn(“nop”);asn(“nop”);asn(“nop”);

但是,晶振为8M时用此函数也能延时1us :
void delay-1us(void)
  {
   asm("nop")
           } 我就不知道为什么了?


相关帖子

沙发
maomao40| | 2007-5-26 08:43 | 只看该作者

有空可以看生成的.s文件!

1,并末有见哪里有对冒号使用特别的说明;
2,函数调用和返回是需要时钟的,比如调用函数要4个时钟周期,
   建议有空的时候多看看ICC生成的.S文件,会对你理解有帮助!

使用特权

评论回复
板凳
simon21ic| | 2007-5-26 15:14 | 只看该作者

看下汇编

1,位定义,自己去看C的书
2,严格的说8M时,一个时钟是125ns,8条nop才是1us
用函数的话,估计编译器生成类似如下的代码
RCALL  delay-1us                ;3个时钟周期

delay-1us:
nop                             ;1个时钟周期
ret                             ;4个时钟周期

使用特权

评论回复
地板
wuyunzdh|  楼主 | 2007-5-26 20:00 | 只看该作者

谢谢回复


 我看了书了,但是我就死不知道unsigned bit0:1中这个“:”是什么意思?
我问了很多人,可都不知道!
谢谢!

使用特权

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

本版积分规则

24

主题

71

帖子

0

粉丝