PICC16 8.05 嵌入汇编,奇怪问题

[复制链接]
 楼主| mumuyou 发表于 2007-1-13 08:28 | 显示全部楼层 |阅读模式
bit&nbsp;EvenParity(unsigned&nbsp;char&nbsp;data)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;//data&nbsp;&nbsp;&nbsp;&nbsp;+=&nbsp;3;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[注]<br />&nbsp;&nbsp;&nbsp;&nbsp;#asm<br />&nbsp;&nbsp;&nbsp;&nbsp;swapf&nbsp;?a_EvenParity+0,w&nbsp;//入口参数data&nbsp;的寻址符为?a_EvenParity+0<br />&nbsp;&nbsp;&nbsp;&nbsp;xorwf&nbsp;?a_EvenParity+0,f<br />&nbsp;&nbsp;&nbsp;&nbsp;rrf&nbsp;?a_EvenParity+0,w<br />&nbsp;&nbsp;&nbsp;&nbsp;xorwf&nbsp;?a_EvenParity+0,f<br />&nbsp;&nbsp;&nbsp;&nbsp;btfsc&nbsp;?a_EvenParity+0,2<br />&nbsp;&nbsp;&nbsp;&nbsp;incf&nbsp;?a_EvenParity+0,f<br />&nbsp;&nbsp;&nbsp;&nbsp;#endasm<br />&nbsp;&nbsp;&nbsp;&nbsp;//至此,data&nbsp;的最低位即为偶校验位<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(data&0x01)&nbsp;return(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;return(0);<br />}<br />注意//data&nbsp;+=&nbsp;3行,不要这一航的时候计算结果是错误的。察看编译后的汇编指令,发现参数data没有正确导入。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />有data&nbsp;+=&nbsp;3时:<br />&nbsp;&nbsp;062E&nbsp;&nbsp;&nbsp;&nbsp;0183&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLRF&nbsp;0x3<br />&nbsp;&nbsp;062F&nbsp;&nbsp;&nbsp;&nbsp;00B8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOVWF&nbsp;0x38&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//*参数传递近来<br />293:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data&nbsp;&nbsp;&nbsp;&nbsp;+=&nbsp;3;<br />&nbsp;&nbsp;0630&nbsp;&nbsp;&nbsp;&nbsp;3003&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOVLW&nbsp;0x3<br />&nbsp;&nbsp;0631&nbsp;&nbsp;&nbsp;&nbsp;07B8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ADDWF&nbsp;0x38,&nbsp;F<br /><br />没有data&nbsp;+=&nbsp;3时:<br />291:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bit&nbsp;EvenParity(unsigned&nbsp;char&nbsp;data)<br />292:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />293:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;data&nbsp;&nbsp;&nbsp;&nbsp;+=&nbsp;3;<br />294:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#asm<br />295:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swapf&nbsp;?a_EvenParity+0,w&nbsp;//入口参数data&nbsp;的寻址符为?a_EvenParity+0<br />&nbsp;&nbsp;062F&nbsp;&nbsp;&nbsp;&nbsp;0E38&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SWAPF&nbsp;0x38,&nbsp;W&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//*没有参数传递,直接就用了<br />296:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xorwf&nbsp;?a_EvenParity+0,f<br />&nbsp;&nbsp;0630&nbsp;&nbsp;&nbsp;&nbsp;06B8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XORWF&nbsp;0x38,&nbsp;F<br /><br />请问是不是有什么地方设置的不对,使用的MPLAB是7.31的,PICC8.05<br /><br />另外使用memecpy(),&nbsp;等指令时,不能从低两Bank,拷贝数据到&nbsp;高两Bank,是否正常??<br /><br />新用PICC16,望高手不吝赐教:)<br />
兰天白云 发表于 2007-1-17 17:39 | 显示全部楼层

可能是调用时的问题

你是怎么调用的?
c2u 发表于 2007-1-24 12:20 | 显示全部楼层

?

?a_EvenParity<br /><br />这个调用PICC中的变量用的吗,我怎么记得是&nbsp;_a_EvenParity&nbsp;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

23

帖子

0

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