打印

PICC16 8.05 嵌入汇编,奇怪问题

[复制链接]
2702|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mumuyou|  楼主 | 2007-1-13 08:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
bit EvenParity(unsigned char data)
{
    //data    += 3;       [注]
    #asm
    swapf ?a_EvenParity+0,w //入口参数data 的寻址符为?a_EvenParity+0
    xorwf ?a_EvenParity+0,f
    rrf ?a_EvenParity+0,w
    xorwf ?a_EvenParity+0,f
    btfsc ?a_EvenParity+0,2
    incf ?a_EvenParity+0,f
    #endasm
    //至此,data 的最低位即为偶校验位
    if (data&0x01) return(1);
    else return(0);
}
注意//data += 3行,不要这一航的时候计算结果是错误的。察看编译后的汇编指令,发现参数data没有正确导入。
      
有data += 3时:
  062E    0183     CLRF 0x3
  062F    00B8     MOVWF 0x38                //*参数传递近来
293:                   data    += 3;
  0630    3003     MOVLW 0x3
  0631    07B8     ADDWF 0x38, F

没有data += 3时:
291:               bit EvenParity(unsigned char data)
292:               {
293:               //    data    += 3;
294:                   #asm
295:                   swapf ?a_EvenParity+0,w //入口参数data 的寻址符为?a_EvenParity+0
  062F    0E38     SWAPF 0x38, W                //*没有参数传递,直接就用了
296:                   xorwf ?a_EvenParity+0,f
  0630    06B8     XORWF 0x38, F

请问是不是有什么地方设置的不对,使用的MPLAB是7.31的,PICC8.05

另外使用memecpy(), 等指令时,不能从低两Bank,拷贝数据到 高两Bank,是否正常??

新用PICC16,望高手不吝赐教:)
沙发
兰天白云| | 2007-1-17 17:39 | 只看该作者

可能是调用时的问题

你是怎么调用的?

使用特权

评论回复
板凳
c2u| | 2007-1-24 12:20 | 只看该作者

?

?a_EvenParity

这个调用PICC中的变量用的吗,我怎么记得是 _a_EvenParity 

使用特权

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

本版积分规则

7

主题

23

帖子

0

粉丝