PIC单片机的程序没看懂请高手指教

2020-02-08 12:15发布

最近看了一个产品的程序,有几段一直没看明白,请高手指点。里面打问号的,看代码0X59,0X62似乎是一个寄存器,但看了该单片机的DATASHEET却没有找到是哪个?很是纳闷,使用PIC16F72的单片机,程序是好用的,已经验证过了。

Label_002C CLRF    STATUS         
            BCF     PORTB     , 00
            NOP
            BSF     PORTB     , 00
            RETURN
Label_009C  BCF STATUS  , RP0   
            BCF     0x62  , 03    ;??
            BTFSC  0x59   , 04    ;???
            RETURN
            BSF     0x59      , 04
            MOVLW   0x0C
            MOVWF   0x61
            RETURN
Label_0095  BCF   STATUS , RP0   
            BSF     0x62    , 03  ;???
            BTFSS   0x59   , 04    ;???
            RETURN
            BCF     0x59     , 04
            MOVLW   0x0C
            MOVWF   0x61
            RETURN


另外请教这个子函数的功能

Label_001B  CLRF    STATUS   
            BCF     PORTB     , 06
            BSF     STATUS    , RP0
            BCF     TRISB     , 06
            BSF     TRISB     , 07
            MOVLW   0x05
            CALL    Label_0012
            BSF     TRISB     , 06
            MOVLW   0x05
            CALL    Label_0012
            MOVLW   0x00
            BTFSC   TRISB     , 07  这一句是什么意思呢?
            MOVLW   0x01
            MOVWF   0x3C
            BCF     TRISB     , 06
            RETURN
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
16条回答
youmcu
2020-02-08 20:10
这个程序是反编译的吧,自己写程序一般都对寄存器作定义(取容易看懂的符号),
            BCF     0x62,03    ;??  BCF(置低)  62寄存器第3位
            BTFSC   0x59,04    ;??  BTFSC(测试)  59寄存器第4位,是0则跳过下条指令
            .
            .

            MOVLW   0x00
            BTFSC   TRISB,7     ;这一句是什么意思呢? 测试RB口方向寄存器第7位
            MOVLW   0x01        ;是0跳过这一句
            MOVWF   0x3C        ;若TRISB,7=0(将00) TRISB,7=1(将01) 数据写入3C寄存器

一周热门 更多>