ПП стат. индикации 7-сиг. индикатора (1 порт, 2 знака).

Автор: Super User Просмотров: 965

 

 

semis 2 1

 

 

 

 

;-------- Прописка регистров --------
            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

 

Скачать проект MPLAB+Протеус.


Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru