今天读程序遇到疑惑,以前一直没有细细研究
发现有这么两条语句MOVF CL,0; 这个是将CL值送入W,书上送W的语句,MOVF f,d;将寄存器f内容送至W(d=0)或f(d=1)。
MOVF CL,w;这个呢?按照上下程序连贯起来,应该也是这个功能。
我现在就弄不明白,这两句有区别吗?
具体程序段
实现两数相加:1)MOVF CL,0;
ADDWF BL,1;
2)MOVF CL,w;
ADDWF BL.1;程序中读到的,注释中和实际看编写者意识也是实现CL+BL-->BL
//------------------------------------------------------------------
W EQU H'0000'
F EQU H'0001'
LZ看一下 .INC 文件
//------------------------------------------------------------------
知道一样心里就踏实了,不影响应用了,呵呵,恩版主说的对 ,看看INC。
w一直给我的感觉是PIC特殊的寄存器,里面存储的应该是一个事先赋值的8位也就是1个字节二进制码,比如00001111这样,所以MOVF CL,w;把它安到MOVF这条语句的解释时候,解释不通。
就没有想到winner版主说的w equ 0000,那么我又有疑问了,这个w MOVF CL,w;里表示的是0,也就是将CL值送入w。 那么如果事先给w赋值了,比如
MOVF A,0;此时w=A
MOVF CL,w;这句怎末理解呢?不管w中已经赋值的A,而理解为w=0.然后将CL赋值给w....
有点晕。。
//------------------------------------------------------------------
楼主请注意:W EQU 00 这条语句是给“W”这个字符赋值,而不是给 W 寄存器赋值。
请看下面这段程序,最后三句语句实际上执行的是完全相同的操作,都是把B口的内容读入W寄存器。
X EQU 00
MOVF POTRB,W
MOVF PORTB,X
MOVF PORTB,0
阅读(12754) | 评论(0) | 转发(0) |