打印

PIC汇编语句意思

[复制链接]
2125|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 是什么呢,为什么我找不到它,

使用特权

评论回复
5
vv123456|  楼主 | 2013-6-24 13:52 | 只看该作者
ZRL700424 发表于 2013-6-24 10:14
STATUS
地址为3的寄存器是STATUS(状态寄存器)

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

使用特权

评论回复
评论
ZRL700424 2013-6-24 17:07 回复TA
BNZ是PIC指令的另外一种助记符,在新的设计中不推荐使用这些伪指令。 BNZ SCAN2相当于: BTFSS STATUS,Z GOTO SCAN2 
6
ZRL700424| | 2013-6-24 15:41 | 只看该作者
vv123456 发表于 2013-6-24 13:52
XORWF        PP_ROOM,W                  
BNZ        SCAN2                    
GOTO        SCAN1

在伪指令里找

使用特权

评论回复
7
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内的地址吗还是???

使用特权

评论回复
评论
ZRL700424 2013-6-24 17:02 回复TA
当然是指RAM的地址啊 
8
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 这有什么用,是这个意思吗

使用特权

评论回复
9
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芯片来讲授的。

使用特权

评论回复
10
llqjmy| | 2013-6-25 22:41 | 只看该作者
这程序,真够乱的。是以前的程序吧!对着指令表和RAM表加ASM 用户手册分析...........

使用特权

评论回复
11
vv123456|  楼主 | 2013-6-27 09:15 | 只看该作者
llqjmy 发表于 2013-6-25 22:41
这程序,真够乱的。是以前的程序吧!对着指令表和RAM表加ASM 用户手册分析........... ...

是啊,是以前的人写的,好乱啊

使用特权

评论回复
12
ZRL700424| | 2013-6-28 09:31 | 只看该作者
没看出哪里乱,是你们不懂汇编吧?

使用特权

评论回复
13
NE5532| | 2013-6-28 11:19 | 只看该作者
估计楼主是在整反汇编,一般不会有人直接写地址写3的,肯定是写变量名。

使用特权

评论回复
14
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

粉丝