2


#include ; definicje specyficzne dla mikrokontrolera
__CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF
UDATA
przyc RES 1 ;zmienna dla przycisku
tmp RES 1
pol equ 50
pol2 equ 51
char1 equ 52
char2 equ 53
char3 equ 54
char4 equ 55

RST CODE 0x000 ; wektor resetu procesora

pagesel main ; wybór strony pamięci programu
goto main ; skok do początku programu

PGM CODE
main
; Inicjalizacja niezbędnych komponentów
bcf STATUS, RP0 ; wybór banku 0
bcf STATUS, RP1
clrf PORTA ; inicjalizacja PORTA
bsf STATUS, RP0 ;bank 1
bcf OPTION_REG, NOT_RBPU ; włączenie pull-up na PORTB

movlw B'00000110' ; przełączenie wejść na cyfrowe
movwf ADCON1 ; poprzez odłączenie przetwornika A/C
clrf TRISA ; ustawienie PORTA na wyjścia
bcf STATUS, RP0 ;bank 0

; Rozwiązanie zadania
movlw 0xFF ; początkowy stan przycisków
movwf przyc ; zapisujemy ów stan
movlw 0
movwf char1
movlw 1
movwf char2
movlw 2
movwf char3
movlw 3
movwf char4
goto start

start:
bsf STATUS, RP0 ;bank 1
clrf TRISB ; ustawienie wyprowadzeń PORTB na wyjścia
bcf STATUS, RP0 ; bank 0


movf char1, W ; załaduj wartość
call convert ; wywołaj procedurę konwersji
movwf PORTB ; wysłanie na port PORTB
movlw B'00000001' ; włączenie wyświetlacza DS1
movwf PORTA
call pol3

movf char2, W ; załaduj wartość
call convert ; wywołaj procedurę konwersji
movwf PORTB ; wysłanie na port PORTB
movlw B'00000010' ; włączenie wyświetlacza DS2
movwf PORTA
call pol3

movf char3, W ; załaduj wartość
call convert ; wywołaj procedurę konwersji
movwf PORTB ; wysłanie na port PORTB
movlw B'00000100' ; włączenie wyświetlacza DS3
movwf PORTA
call pol3

movf char4, W ; załaduj wartość
call convert ; wywołaj procedurę konwersji
movwf PORTB ; wysłanie na port PORTB
movlw B'00001000' ; włączenie wyświetlacza DS4
movwf PORTA
call pol3


bsf STATUS, RP0 ;bank 1
movlw 0x0F ; PortB na wejście żeby obsłużyć przyciski
movwf TRISB
bcf STATUS, RP0 ; wybór banku 0
movf PORTB, W ; załaduj zawartość PORTB - stan przycisków
xorwf przyc, W ; sprawdź czy stan różni się od poprzedniego
andwf przyc, W ; i dodatkowo czy zmiana z 1 na 0
movwf tmp
movf PORTB, W ; zapamiętaj bieżący stan przycisków
movwf przyc
btfsc tmp, 0 ; czy wciśnięto przycisk S1?
goto nast_znak1 ; tak - obsłuż wciśnięcie
btfsc tmp, 1 ; czy wciśnięto przycisk S1?
goto nast_znak2 ; tak - obsłuż wciśnięcie
goto start

nast_znak1:
incf char1
incf char2
incf char3
incf char4
call pol3
call pol3
call pol3
call pol3

bsf STATUS, RP0 ;bank 1
clrf TRISB
bcf STATUS, RP0 ;bank 0
goto start

nast_znak2:
decf char1
decf char2
decf char3
decf char4
call pol3
call pol3
call pol3
call pol3

bsf STATUS, RP0 ;bank 1
clrf TRISB
bcf STATUS, RP0 ;bank 0
goto start

pol3
movlw 0xCB
movwf pol
movlw 0x08
movwf pol2
call pol3_pocz
return

pol3_pocz
decfsz pol, f
goto $+2
decfsz pol2, f
goto pol3_pocz
goto $+1
goto $+1
return

convert
addwf PCL, f

dt B'01110001' ; F
dt B'00000110' ; I
dt B'00111000' ; L
dt B'00000110' ; I
dt B'01110011' ; P
dt B'00000110' ; I

END

Wyszukiwarka

Podobne podstrony:
s 72
VOCAB TESTSBasia durlik 2
ZW nr 298 Kapitan Planeta
2
11972
Mysl Ekonomiczna i Polityczna 2 O Pietrewicz
page2
waterworld 2
page?2
page2
20012
byer?81101110454 oeb?2 r1

więcej podobnych podstron