位操作奇怪的問題

[复制链接]
2508|2
 楼主| lurker_soo 发表于 2007-8-28 16:32 | 显示全部楼层 |阅读模式
ST, TE, TI, ni, se
摘取其中的一部分程序如下:<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XDEF&nbsp;Entry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;export&nbsp;'Entry'&nbsp;symbol<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ABSENTRY&nbsp;Entry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;for&nbsp;absolute&nbsp;assembly:&nbsp;mark&nbsp;this&nbsp;as&nbsp;application&nbsp;entry&nbsp;point<br /><br />;&nbsp;include&nbsp;derivative&nbsp;specific&nbsp;macros<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INCLUDE&nbsp;'qy4_registers.inc'<br /><br /><br /><br />ORG&nbsp;&nbsp;&nbsp;&nbsp;RAMStart&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Insert&nbsp;here&nbsp;your&nbsp;data&nbsp;definition<br />;---------------Flag&nbsp;Register&nbsp;Block<br />FLAG1:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DS.B&nbsp;&nbsp;&nbsp;1<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ORG&nbsp;&nbsp;&nbsp;&nbsp;ROMStart<br />Entry:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDHX&nbsp;&nbsp;&nbsp;#RAMEnd+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;initialize&nbsp;the&nbsp;stack&nbsp;pointer<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TXS<br />;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RSP<br />;-----------------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BCLR&nbsp;&nbsp;&nbsp;&nbsp;0,FLAG1<br />;-----------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JSR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InstructionStudy<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JMP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$<br /><br />為什麼以上程序在軟件調試時,在執行到<br />BCLR&nbsp;&nbsp;&nbsp;&nbsp;0,FLAG1<br />這一行指令時,出現如下錯誤提示:<br /><br />Error:&nbsp;At&nbsp;location&nbsp;0080&nbsp;-&nbsp;<br />Error:&nbsp;Attempt&nbsp;to&nbsp;use&nbsp;invalid&nbsp;or&nbsp;uninitialized&nbsp;memory<br />STEPPED<br /><br />我所選用的MCU型號是:M68HC908QY4,$0080明明是RAM的超始地址,怎麼會:&quot;invalid&quot;<br /><br />如果將程序改為如下,則不再提示錯誤:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ORG&nbsp;&nbsp;&nbsp;&nbsp;ROMStart<br />Entry:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDHX&nbsp;&nbsp;&nbsp;#RAMEnd+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;initialize&nbsp;the&nbsp;stack&nbsp;pointer<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TXS<br />;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RSP<br />;-----------------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FLAG1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BSET&nbsp;&nbsp;&nbsp;&nbsp;0,FLAG1<br />;-----------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JMP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$<br /><br />請問為什麼?
JerryBJ 发表于 2007-8-28 18:05 | 显示全部楼层

simulator

在软仿真(simulation)时,若操作的RAM没有被初始化过,则会有这个错误发生。而在硬件调试时,则没有。<br />你若在memory窗口中把0x80修改为一个数,此错误也不会发生。<br />这也提醒你,所有的RAM都应该在复位后初始化。
 楼主| lurker_soo 发表于 2007-8-28 21:09 | 显示全部楼层

原来是初始化的问题

谢谢楼上的!<br />因为FLAG1是用来存放位变量的,所以为了程序看起来更明了,就用BSET和BCLR一位一位地初始化。结果在软仿真时出现那个错误提示。<br />所以按照你的说法,在实际硬件运行时,不应该会出错吧。还没有直接将程序烧录到MCU去验证过。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

19

帖子

0

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