Понедельник, Май 25, 2020

Двоичные в двоичнодесятичные PIC ASM

;В предыдущем примере мы передвигались по таблице числами от 0 до 9.Нам нужно преобразовать любое число в этот формат.Например число 1234=0000 0100 1101 0010 - нужно сначала вывести 1 потом 2,3 и 4.
            LIST        P=16F628A
            INCLUDE     P16F628A.INC
            CBLOCK      20H
            LED3:1,LED2:1,LED1:1,LED0:1
            TEMPL:1,TEMPH:1
            COUNT:1,MEM:1
            ENDC
            ORG         0
MAIN        MOVLW       B'00000100'
            MOVWF       TEMPH       ;Загружаем старший байт
            MOVLW       B'11010010'
            MOVWF       TEMPL       ;Загружаем младший байт
            CALL        BIN2BCD     ;На выходе в LED0-LED3 наше число в BCD
            GOTO        MAIN
            
BIN2BCD     MOVLW       .16
            MOVWF       COUNT
            CLRF        LED0
            CLRF        LED1
            CLRF        LED2
            CLRF        LED3
LOOP8       RLF         TEMPL,F
            RLF         TEMPH,F
            RLF         LED0,F
            RLF         LED1,F
            DECFSZ      COUNT,F
            GOTO        ADJDEC
            
            SWAPF       LED1,W
            ANDLW       0FH
            MOVWF       LED3
            
            MOVFW       LED1
            ANDLW       0FH
            MOVWF       LED2
            
            SWAPF       LED0,W
            ANDLW       0FH
            MOVWF       LED1
            
            MOVFW       LED0
            ANDLW       0FH
            MOVWF       LED0
            RETURN
ADJDEC      MOVLW       LED0
            MOVWF       FSR
            CALL        ADJBCD
            MOVLW       LED1
            MOVWF       FSR
            CALL        ADJBCD
            GOTO        LOOP8
ADJBCD      MOVLW       3
            ADDWF       INDF,W
            MOVWF       MEM
            BTFSC       MEM,3
            MOVWF       INDF
            MOVLW       30H
            ADDWF       INDF,W
            MOVWF       MEM
            BTFSC       MEM,7
            MOVWF       INDF
            RETLW       0
            END



НАЗАД                                        Cи ATtiny2313                                   ASSEMBLER ATtiny2313                             ДАЛЕЕ


Back to Top