Chinaunix首页 | 论坛 | 博客
  • 博客访问: 137804
  • 博文数量: 35
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 289
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-21 20:39
文章分类

全部博文(35)

文章存档

2010年(35)

我的朋友

分类: 嵌入式

2010-07-29 20:22:08

今天读程序遇到疑惑,以前一直没有细细研究
发现有这么两条语句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
阅读(12765) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~