********************************************************
* POPRAWIONA WERSJA PROGRAMU NA LABORKE *
* Prosty przyklad programu dla 68HC05 *
* Wcisniecie przelacznika zapala diode LED. *
* Ponowne wcisniecie gasi diode itd. *
* Przelacznik podlaczony jest do linii PA0, LED do PA7 *
********************************************************
PORTA EQU $00 ;Adres bezposredni portu A
DDRA EQU $04 ;Adres rejestru kontrolnego portu A
ORG $0200 ;Program startuje od $0200
INIT LDA #$80 ;Inicjalizacja
STA PORTA ;Dioda LED wylaczana
STA DDRA ;Ustawienie PA7 jako wyjscie
* Reszta portu A jest wejsciem
LOOP JSR TEST ;Wywolanie podprogramu sprawdzania stanu przelacznika
BCLR 7,PORTA ;Wlaczenie LED
JSR TEST2
JSR TEST
BSET 7,PORTA ;Wylaczenie LED
JSR TEST2
JMP LOOP
TEST LDA PORTA ;Czytanie stanu przelacznika na porcie A
AND #$01 ;Testowanie PA0
BEQ TEST ;Petla jesli PA0 = 0
RTS ;Powrot z podprogramu
TEST2 LDA PORTA
AND #$01
BEQ DALEJ
JMP TEST2
DALEJ RTS
ORG $03FE ;Przestrzen wektorow
FDB INIT ;Wektor "resetu" 68HC05
********************************************************
*PROGRAM ZLICZA IMPULSY I WYSYLA JE NA WYSWIETLACZ *
*(0 - 9) NA LINIE A0 A1 A2 A3 W KODZIE BCD, WCISNIECIE *
*PRZYCISKU POWODUJE ZE PROGRAM ZLICZA W DRUGA STRONE *
* *
********************************************************
PORTA EQU $00 ;Adres bezposredni portu A
DDRA EQU $04 ;Adres rejestru kontrolnego portu A
ORG $0200 ;Program startuje od $0200
INIT LDA #$0F ;Inicjalizacja
LDX #$00
STA PORTA ;NA WYSWIETLACZ PODANE 0
LDA #$0F
STA DDRA ;A0-A3 JAKO WYJSCIA
* Reszta portu A jest wejsciem
LOOP LDA #$00
ZWOLN INCA
CMP #$FF
BEQ POPE
JMP ZWOLN
POPE JSR TEST
JMP LOOP
TEST LDA PORTA ;Czytanie stanu przelacznika na porcie A
AND #$80 ;Testowanie PA7
CMP #$80
BEQ NIE ;Petla jesli PA7 = 0
TXA
CMP #$09 ;ZEROWANIE JESLI WART. > 9
BEQ ZEROJ
INCX
JMP JUZNIE
ZEROJ LDX #$00
JMP JUZNIE
NIE TXA
CMP #$00
BEQ USTAW
DECX
JMP JUZNIE
USTAW LDX #$09
JMP JUZNIE
JUZNIE TXA
STA PORTA
RTS
ORG $03FE ;Przestrzen wektorow
FDB INIT ;Wektor "resetu" 68HC05
*********************************************************
* Program wyswietla na wyswietlaczu siedmiosegmentowym *
* kolejne liczby dziesietne zaczynajac od 99 po,dojsciu *
* do 00 stan wyswietlacza ma ponownie wartosc 99 *
*********************************************************
PORTA EQU $00
DDRA EQU $04
ORG $0200
INIT LDA #$FF
STA DDRA
LDX #$99
STX PORTA
POCZ LDA #$00
SLOW INCA
CMP #$FF
BEQ POPE
JMP SLOW
POPE LDA #$01
SK1 INCA
CMP #$FF
BEQ POPE1
JMP SK1
POPE1 JSR TEST
JMP POCZ
TEST DECX
NOP
TXA
CMP #$FF
BEQ USTAW
AND #$0F
CMP #$0F
BEQ USTAW1
JMP SEND
USTAW LDX #$99
JMP SEND
USTAW1 TXA
SUB #$06
TAX
JMP SEND
SEND STX PORTA
RTS
ORG $03FE
FDB INIT
*********************************************************
* Program wyswietla na wyswietlaczu siedmiosegmentowym *
* kolejne liczby dziesietne zaczynajac od 00 po,dojsciu *
* do 99 stan wyswietlacza ma ponownie wartosc 00 *
*********************************************************
PORTA EQU $00
DDRA EQU $04
ORG $0200
INIT LDA #$FF
STA DDRA
LDX #$00
STX PORTA
POCZ LDA #$00
SLOW INCA
CMP #$FF
BEQ POPE
JMP SLOW
POPE LDA #$01
SK1 INCA
CMP #$FF
BEQ POPE1
JMP SK1
POPE1 JSR TEST
JMP POCZ
TEST INCX
NOP
TXA
CMP #$9A
BEQ USTAW
AND #$0F
CMP #$0A
BEQ USTAW1
JMP SEND
USTAW LDX #$00
JMP SEND
USTAW1 TXA
ADD #$10
AND #$0F0
TAX
JMP SEND
SEND STX PORTA
RTS
ORG $03FE
FDB INIT