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
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
lwg998
1楼-- · 2020-02-09 09:58
通过软件仿真看了一下,0x59,0x62这两个地址,出了上面的程序调用了,别的地方没有给这个地址赋值什么的,越发感到郁闷。按道理如果判断这两个地址内的数据,那一定会有个命令给这个地址传递数据,但看完整个程序没有找到相关的。
youmcu
2楼-- · 2020-02-09 11:58
start   movlw   .15          ; AD测量15次
        movwf   Count
        movlw   ADataR0      ; AD转换值暂存开始地址(已定义在0x50位置)
        movwf   FSR
stalop  movlw   B'01000001'  ; 选择AD通道  
        call    AdConvert    ; 开始AD转换
        movf    ADRESH,w
        movwf   INDF         ; 将转换数据存入RAM
        incf    FSR,f
        .
        decfsz  Count,f      ; 15次完了?
        goto    stalop
        .
这个程序对0x50到0x5e都写入了AD后的数据,看到有对具体寄存器操作了吗?
sos0514
3楼-- · 2020-02-09 16:51
 精彩回答 2  元偷偷看……
lwg998
4楼-- · 2020-02-09 20:01
movlw   ADataR0      ; AD转换值暂存开始地址(已定义在0x50位置)   这里不是将数据写进去了吗?但我那个程序没有写数据进这个地址,却偏偏要判断这个地址里面的数据。真搞不懂
youmcu
5楼-- · 2020-02-09 21:42
注意: 以上是对 0x50 到 0x5e 都写入数据!!!
lwg998
6楼-- · 2020-02-10 02:46
为了搞清楚,花重金请高手看程序!楼上的如果有意请和我联系,如果你能将整个程序看懂并且注释并将流程图搞出来,我愿出钱来学习!价钱好说!
我的QQ:104015445

一周热门 更多>