kingkrosson 发表于 2013-5-21 22:54:52

请教这几个PIC指令的运用问题。看不懂教材的注释。求解...

本帖最后由 kingkrosson 于 2013-5-22 09:38 编辑

书上的一段代码,请高手指教。


movlw   high(M_bra) ; 获取M_bra地址高位字节

movwfPCLATH   ;设定PCLATH寄存器

movf   state,w    ;提取跳转控制字节

andlw   0x03         ; 确保跳转落在确定的范围内,w不超过3

addwf   PCL,f       ;


M_bragotostate0
          gotostate1
          gotostate2
          gotostate3


对上面这段指令,我有如下几个问题,求解答。

1,    movf   state,w      这个指令是什么作用? state的值是从哪儿来的啊。从哪儿提取的。

2,    andlw   0x03             为啥要与运算,这个与运算是怎么确保这个跳转范围的呢。具体是怎么个道理?真搞不明白啊 ^^;

      

lgg88 发表于 2013-5-22 07:48:54

光看这一段代码的确不知道STATE是干什么的。你先要看看这个STATE是什么寄存器。但是看下面你只有4种状态也就是0-3.所以STATE的值不能超过3,否则就要跑飞了。

kingkrosson 发表于 2013-5-22 09:42:21

lgg88 发表于 2013-5-22 07:48 static/image/common/back.gif
光看这一段代码的确不知道STATE是干什么的。你先要看看这个STATE是什么寄存器。但是看下面你只有4种状态也 ...

请问为什么要用 andlw   0x03 这个指令来判断,是否在0-3这个范围呢。怎么判断的。            

lgg88 发表于 2013-5-22 12:27:30

相与以后不就是最多0-3了吗?只有低2位有效。你下面的goto状态只有4个啊,所以必须保证w值不超过3,否则程序就跑飞了

kingkrosson 发表于 2013-5-22 14:04:34

{:victory:} 原来如此阿。 受教了,谢谢。
页: [1]
查看完整版本: 请教这几个PIC指令的运用问题。看不懂教材的注释。求解...