Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CharStart DATA 30h
- CharEnd DATA 40h
- CharSize EQU 16 ; rozmiar tablicy
- CSEG AT 0h
- AJMP loop
- CSEG AT 23h ; pod adresem 23h umieszczamy
- AJMP przerwanie ; procedure obslugi przerwania
- CSEG AT 100h
- loop:
- MOV CharStart, #CharSize
- MOV SCON, #50h ; uart w trybie 1 (8 bit), REN=1
- MOV TMOD, #20h ; licznik 1 w trybie 2 (8 bit auto reload)
- MOV TH1, #0FDh ; 9600 Bds at 11.0592MHz
- SETB TR1 ; uruchomienie licznika
- SETB ES ; zezwolenie na przerwanie z portu szeregowego
- SETB EA ;uruchomienie przerwania globalnie
- SJMP $
- przerwanie:
- CLR RI // zerowanie flagi odbiioru
- MOV B, SBUF ;do B wstawiamy wprowadzony znak
- MOV A, #CharEnd ; przenosimy do a charend
- CLR C ; czyscimy carry zeby nie bylo bledu w odejmowaniu
- SUBB A, CharStart ; a= a-charstart
- MOV R1, A ;do r1 przenosimy a
- MOV @R1, B ; do @r1 przenosimy B
- DJNZ CharStart, koniecprzerwania ;dekrementujemy i jesli charstart!=0 idziemy do koniecprzerwania
- MOV CharStart, #CharSize ;przechodzimy do poczatku tablicy
- koniecprzerwania:
- RETI
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement