搜索
bottom↓
回复: 3

对与 “建立一个属于自己的AVR的RTOS (作者:hjc800323)” 里面 R3 使用的疑问 (R3 被改

[复制链接]

出0入0汤圆

发表于 2010-3-17 12:25:08 | 显示全部楼层 |阅读模式
对与 “建立一个属于自己的AVR的RTOS (作者:hjc800323)” 里面OSTaskRunningPrio ( R3 )使用的疑问


使用 WINAVR 20090313 编译

为了简单起见,我将任务一更改为如下:

源码:
void Task0(void)
{
  unsigned int j=0;
  DDRB = 0xff;
  while(1)
  {            
    //PORTB= PORTB+1;
    //OSTimeDly(2);
    OSRdyTbl &= ~(0x01<<OSTaskRunningPrio);    //挂起当前任务
    OSSched();
   
  }
}

生成汇编:

@00000119: Task0
+00000119:   93CF        PUSH      R28            Push register on stack
+0000011A:   93DF        PUSH      R29            Push register on stack
153:        DDRB = 0xff;
+0000011B:   EF8F        SER       R24            Set Register
+0000011C:   BB87        OUT       0x17,R24       Out to I/O location
159:          OSRdyTbl &= ~(0x01<<OSTaskRunningPrio);    //挂起当前任务
+0000011D:   E0C1        LDI       R28,0x01       Load immediate
+0000011E:   E0D0        LDI       R29,0x00       Load immediate
+0000011F:   01CE        MOVW      R24,R28        Copy register pair
+00000120:   C002        RJMP      PC+0x0003      Relative jump
+00000121:   0F88        LSL       R24            Logical Shift Left
+00000122:   1F99        ROL       R25            Rotate Left Through Carry
+00000123:   943A        DEC       R3             Decrement
+00000124:   F7E2        BRPL      PC-0x03        Branch if plus
+00000125:   9580        LAT       R24            Load and Toggle
+00000126:   2228        AND       R2,R24         Logical AND
162:          OSSched();
+00000127:   DF2D        RCALL     PC-0x00D2      Relative call subroutine
+00000128:   CFF6        RJMP      PC-0x0009      Relative jump


发现编译后,是直接使用R3的, 这样一来就导致R3被改变了,


请问,是不是编译的什么地方有问题??谢谢!

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2010-3-17 12:42:48 | 显示全部楼层
我试过,这么有会出错,还是改成一般全局变量吧

出0入0汤圆

发表于 2010-3-17 12:52:45 | 显示全部楼层
回复【楼主位】hubertboy
-----------------------------------------------------------------------

可能是编译器版本的问题,或者是优化不对。
因为作者的这个系统里的汇编部分很多直接操作寄存器的,对特定的编译器依赖很强。
你可以看看你用的编译器生成的汇编是怎么样的,然后自己改一改。

出0入0汤圆

 楼主| 发表于 2010-3-17 13:23:40 | 显示全部楼层
回复【1楼】wswh2o 水之影
-----------------------------------------------------------------------

改为一般全局变量后是可以的!




回复【2楼】lbc___
-----------------------------------------------------------------------

lbc___  我是使用WINAVR 20090313编译的,与作者的使用版本不一样, 能否指点下,怎么设置编译器参数?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 15:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表