PIC汇编语句意思

[复制链接]
2683|13
 楼主| vv123456 发表于 2013-6-24 10:03 | 显示全部楼层 |阅读模式
这部分句子是什么意思        3代表什么呢 BCF                 3,0           ;   
                MOVLW                 0E2H         
                SUBWF                 FSR,W
                BTFSC                 3,0
                GOTO                 MM7       
                MOVLW                 0E1H
                MOVWF                 FSR
                MOVF                 RCREG,W
                MOVWF                 INDF
                BCF                 3,2
                MOVLW                 027H
                XORWF                 INDF,W       
                BTFSS                 3,2
yewuyi 发表于 2013-6-24 10:13 | 显示全部楼层
3代表的是一个地址,这个地址可能指向数据RAM区,也可能指向特殊寄存器。
ZRL700424 发表于 2013-6-24 10:14 | 显示全部楼层
STATUS
地址为3的寄存器是STATUS(状态寄存器)
 楼主| vv123456 发表于 2013-6-24 11:08 | 显示全部楼层
本帖最后由 vv123456 于 2013-6-24 11:22 编辑
ZRL700424 发表于 2013-6-24 10:14
STATUS
地址为3的寄存器是STATUS(状态寄存器)
              BSF                 STATUS,5                    ;设置STATUS为体3  1 1
                BSF                 STATUS,6
                MOVLW                 B'00000000'                        ;将立即数传送给W
                MOVWF                 ANSELA                     
                MOVLW                 B'00000000'
                MOVWF                 ANSELB
ANSELA 是什么呢,为什么我找不到它,
 楼主| vv123456 发表于 2013-6-24 13:52 | 显示全部楼层
ZRL700424 发表于 2013-6-24 10:14
STATUS
地址为3的寄存器是STATUS(状态寄存器)

XORWF        PP_ROOM,W                  
BNZ        SCAN2                    
GOTO        SCAN1
还有这个BNZ是什么意思,好像没有这个指令吧

评论

BNZ是PIC指令的另外一种助记符,在新的设计中不推荐使用这些伪指令。 BNZ SCAN2相当于: BTFSS STATUS,Z GOTO SCAN2  发表于 2013-6-24 17:07
ZRL700424 发表于 2013-6-24 15:41 | 显示全部楼层
vv123456 发表于 2013-6-24 13:52
XORWF        PP_ROOM,W                  
BNZ        SCAN2                    
GOTO        SCAN1

在伪指令里找
 楼主| vv123456 发表于 2013-6-24 16:16 | 显示全部楼层
ZRL700424 发表于 2013-6-24 15:41
在伪指令里找

ANSELA,这个呢,能不能加一下你QQ,有几个问题想不通
CALL                 HZ_RL34A             ;调用汉字
            MOVLW                 003H
            MOVWF                 ADDR0
            MOVLW                 BEGIN_ROOM
                ADDWF                 ADDR0
            MOVLW                 0C0H
这个0003H是表示在那里呢,FLASH内的地址吗还是???

评论

当然是指RAM的地址啊  发表于 2013-6-24 17:02
 楼主| vv123456 发表于 2013-6-24 17:44 | 显示全部楼层
vv123456 发表于 2013-6-24 16:16
ANSELA,这个呢,能不能加一下你QQ,有几个问题想不通
CALL                 HZ_RL34A             ;调用汉字
            MOVLW ...

例如这个有点不明MOVLW                 010H   这个是10H T1CON吧
                ADDWF                 ADDR0  然后W和ADDRO相加入这里放入F 这有什么用,是这个意思吗
micropower 发表于 2013-6-24 19:26 | 显示全部楼层
本帖最后由 micropower 于 2013-6-24 19:28 编辑

ANSELA应该是配置IO口AD转换模拟输入的寄存器,一些带AD功能的PIC单片机其复用了AD功能的那些IO引脚在上电默认的情况下都是做模拟输入的(即ANSELA=0xFF)。而很多新手往往会忽略了这个个, 配置完TRIS寄存器后就以为能对PORT进行操作了,但结果是怎么也不能做正确而的输出,就是不知道还有这个寄存器要配置。
而你找不到的原因是1:有的PIC只用了ANSEL这个名字,或其他的;2、而有的甚至没有这个寄存器。可能你看的数据手册并不是那个程序所用的芯片的。所以不一定会有这个名字。先确定你看的这段代码是具体那个型号的PIC单片机,然后上microchip官网找到对应的数据手册来看。
PIC的芯片繁多,而各个芯片之间因为外设和资源的区别,有些寄存器命名和用法都会不尽相同,所以玩PIC,最主要是对着相应的数据手册来看。如果你看的是教科书,那就要确认这个教科书所用的是哪款PIC芯片来讲授的。
llqjmy 发表于 2013-6-25 22:41 | 显示全部楼层
这程序,真够乱的。是以前的程序吧!对着指令表和RAM表加ASM 用户手册分析...........
 楼主| vv123456 发表于 2013-6-27 09:15 | 显示全部楼层
llqjmy 发表于 2013-6-25 22:41
这程序,真够乱的。是以前的程序吧!对着指令表和RAM表加ASM 用户手册分析........... ...

是啊,是以前的人写的,好乱啊
ZRL700424 发表于 2013-6-28 09:31 | 显示全部楼层
没看出哪里乱,是你们不懂汇编吧?
NE5532 发表于 2013-6-28 11:19 | 显示全部楼层
估计楼主是在整反汇编,一般不会有人直接写地址写3的,肯定是写变量名。
dongshan 发表于 2013-6-28 16:55 | 显示全部楼层
vv123456 发表于 2013-6-24 16:16
ANSELA,这个呢,能不能加一下你QQ,有几个问题想不通
CALL                 HZ_RL34A             ;调用汉字
            MOVLW ...

此处的003是立即数。
      MOVLW                 003H                     ;W =3;
            MOVWF                 ADDR0                  ;ADDR0 = W = 3
            MOVLW                 BEGIN_ROOM     ;  W = BEGIN_ROOM
            ADDWF                 ADDR0                  ;ADDR0 =ADDR0+BEGIN_ROOM
;以上四句其实就是 ADDR0 = BEGIN_ROOM+3,你在程序中找,BEGION_ROMM要么是一个标号,要么就是一个数据组的首地址
            MOVLW                 0C0H
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

722

帖子

1

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