.
;-------- Прописка регистров -------- Cblock Temp ; Temp_1 Bit2_10 Reg_1 Reg_2 Reg_3 Led_U ; верхний байт результата. Led_H ; старший байт результата. Led_L ; младший байт результата. endc ;---------------Присвоение------------ ;------------------------------------- org 0 ; nop ; goto START ; ;---------------Инициализация-------- START clrf TRISC ; на выход SSS incf Temp_1 ; + 1 movff Temp_1,Bit2_10 ; Результат в регистр call BIN2_10 ; Вызов ПП преобразования movf Led_H,0 ; =Результат ст.байт movwf Temp ; в регистр Temp= swapf Led_L,0 ; Обмен местами полубайта мл.регистра результата xorwf Temp ; Исключающего ИЛИ (запись в ст.полубайт) movff Temp,PORTC ; Выводим на индикаторы bra Delya_1 ; Пауза для демонстрации показа. bra SSS ; Повтор ;---------------------------------------- ;ПП преобразования однобайтного двоичного ; числа в трёхзначное десятичное число ;---------------------------------------- BIN2_10 clrf Led_U ; Очистить верхний байт clrf Led_H ; Очистить старший байт clrf Led_L ; Очистить младший байт incf Led_U ; +1 movlw 9Ch ; Отнимаем .100 addwf Bit2_10 ; bc $-.6 ; Продолжаем отнимать. decf Led_U ; Коррекция movlw .100 ; Выделяем остаток десятков.. addwf Bit2_10 ; incf Led_H ; +1 movlw 0F6h ; Отнимаем .10 addwf Bit2_10 ; bc $-.6 ; Продолжаем отнимать. decf Led_H ; Коррекция movlw .10 ; Выделяем остаток единиц. addwf Bit2_10 ; movff Bit2_10,Led_L ; Загружаем остаток в единицы. return ; Возврат из ПП. ;---------------------------------------- ; Пауза. ;---------------------------------------- Delya_1 movlw .73 movwf Reg_1 movlw .10 movwf Reg_2 movlw .2 movwf Reg_3 decfsz Reg_1 bra $-2 decfsz Reg_2 bra $-6 decfsz Reg_3 bra $-.10 return end
Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2021 © ChipMK.ru
![]() |
|