打印
[AVR单片机]

for(i=0;i<=PWLi;++Lti) k++; avrgcc 的汇编程序

[复制链接]
10053|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiajiean|  楼主 | 2012-6-21 09:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xiajiean 于 2012-6-21 09:49 编辑

for(i=0;i<=PWLi;++Lti) k++;   // 脉宽PWLi=255 PulseWidth;   cpu  atmega328 16MHz
  a6: 30 91 00 01   lds r19, 0x0100                       // 3      Rd ←  (k)
  aa: 90 91 03 01   lds r25, 0x0103                       // 3      Rd ←  (k)
  ae: 80 e0         ldi r24, 0x00 ; 0                     // 1      Rd ←  K
  b0: 02 c0         rjmp  .+4       ; 0xb6 <main+0x10>    // 2      PC ← PC + k + 1
  b2: 8f 5f         subi  r24, 0xFF ; 255                 // 1      Rd ←  Rd - K
  b4: 92 2f         mov r25, r18                          // 1      Rd ←  Rr       r25← r18
  b6: 29 2f         mov r18, r25                          // 1      Rd ←  Rr
  b8: 2f 5f         subi  r18, 0xFF ; 255                 // 1      Rd ←  Rd - K
  ba: 38 17         cp  r19, r24                          // 1      Rd - Rr   Compare
  bc: d0 f7         brcc  .-12      ; 0xb2 <main+0xc>     // 1/2    if (C = 0) then PC ← PC + k + 1
  be: 90 93 03 01   sts 0x0103, r25                       // 3      Store Direct to SRAM   (k) ← Rr
  c2: 80 93 02 01   sts 0x0102, r24

请问 brcc .-12 是跳到aa: 吗
另外一个循环大约是多少uS

其中变量定义为  unsigned char i, k,PWLi=255;

相关帖子

沙发
airwill| | 2012-6-21 12:51 | 只看该作者
brcc .-12 是跳到aa: 吗?   后面注释已经说明是 0xb2 呀

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
xiajiean + 1
板凳
xiajiean|  楼主 | 2012-6-22 10:51 | 只看该作者
谢谢你!
可能我计算错了,brcc .-12 如果回跳12直接的话,因该是跳到b0:去执行吧。

使用特权

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

本版积分规则

3

主题

17

帖子

0

粉丝