Advertisement
Guest User

Untitled

a guest
Nov 25th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CharStart DATA 30h
  2. CharEnd DATA 40h
  3. CharSize EQU 16 ; rozmiar tablicy
  4.  
  5. CSEG AT 0h
  6. AJMP loop
  7.    
  8. CSEG AT 23h     ; pod adresem 23h umieszczamy
  9. AJMP przerwanie  ; procedure obslugi przerwania
  10.  
  11. CSEG AT 100h
  12. loop:
  13.     MOV CharStart, #CharSize
  14.     MOV SCON, #50h ; uart w trybie 1 (8 bit), REN=1
  15.     MOV TMOD, #20h ; licznik 1 w trybie 2 (8 bit auto reload)
  16.     MOV TH1, #0FDh ; 9600 Bds at 11.0592MHz
  17.     SETB TR1 ; uruchomienie licznika
  18.     SETB ES ; zezwolenie na przerwanie z portu szeregowego
  19.     SETB EA ;uruchomienie przerwania globalnie
  20.     SJMP $
  21.  
  22. przerwanie:
  23.     CLR RI // zerowanie flagi odbiioru 
  24.     MOV B, SBUF ;do B wstawiamy wprowadzony znak
  25.     MOV A, #CharEnd ; przenosimy do a charend
  26.     CLR C ; czyscimy carry zeby nie bylo bledu w odejmowaniu
  27.     SUBB A, CharStart ; a= a-charstart
  28.     MOV R1, A   ;do r1 przenosimy a
  29.     MOV @R1, B ; do @r1 przenosimy B
  30.     DJNZ CharStart, koniecprzerwania ;dekrementujemy i jesli charstart!=0 idziemy do koniecprzerwania
  31.     MOV CharStart, #CharSize ;przechodzimy do poczatku tablicy
  32. koniecprzerwania:
  33.     RETI
  34.    
  35. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement