Тема: Шматок програми BIN2DEC4SSD для PIC16/PIC18
Це лише фрагмент, тож вважати готовою програмою не можна. Його призначення перевести з двійкового числа в ціле десятинне, яке після легких маніпуляцій можна вивести на семи-сегментний індикатор. Тобто є один вхідний байт і три на виході, чому виходить так пояснювати людям, що знають схемотехнічне рішення немає сенсу.
.DATA
IN EQU 0x0Ch
OUT1 EQU 0x0Dh
OUT2 EQU 0x0Eh
OUT3 EQU 0x0Fh
.CODE
BIN2DEC MOVF IN,W
ANDLW b'00001111'
MOVWF OUT1
MOVF IN,W
ANDLW b'11110000'
MOVWF OUT2
RRF OUT2,F
RRF OUT2,F
RRF OUT2,F
RRF OUT2,F
BTFSS OUT1,3
GOTO L1
MOVF OUT1,W
SUBLW 0x0A
MOVWF OUT1
INCF OUT2,F
L1 BTFSS OUT2,4
GOTO L2
INCF OUT3,F
MOVLW b'00001111'
MOVWF OUT2
L2 BTFSS OUT2,3
GOTO L3
MOVF OUT2,W
SUBLW 0x0A
MOVWF OUT2
INCF OUT3,F
L3 MOVF OUT1,W
CALL TABLE
MOVWF OUT1
MOVF OUT2,W
CALL TABLE
MOVWF OUT2
MOVF OUT3,W
CALL TABLE
MOVWF OUT3
TABLE addwf PCL,f
RETLW b'11111100'
RETLW b'01100000'
RETLW b'11011010'
RETLW b'11110010'
RETLW b'01100110'
RETLW b'10110110'
RETLW b'10111110'
RETLW b'11100000'
RETLW b'11111110'
RETLW b'11110110'