Advertisement
Guest User

Untitled

a guest
Jan 4th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .org 0x00
  2. ljmp INIT
  3. .org 0x03
  4. ljmp EXT_IRQ
  5. .org 0x23
  6. ljmp SERIAL_IRQ
  7. .org 0x100
  8. INIT
  9.   setb ES;  // zezwolenie na przerwania na porcie szeregowym
  10.   setb EA;  // zezwolenie na przerwania
  11.   setb IT0; // przerwanie zewnetrzne 0, aktywacja na zbocze opadajace
  12.   setb REN; // zezwolenie na przyjecie bajtu na porcie szeregowym
  13.   ORL PCON, #0x80; // SMOD = 1
  14.   clr SM0;
  15.   setb SM1; // mode 1 portu szeregowego
  16.   setb SM2; // podobno jest to zalecane dla transmisji a synchronicznej
  17.   setb PX0; // ustawienie priorytetu przerwania zewnetrznego jako najwyzszego
  18.   mov TMOD, #20H; pierwsze tryb timera
  19.   mov TH1, #FDH;
  20.   mov TL1, #FDH; // prędkość 9600
  21.   setb TR1; // uruchomienie timera
  22.   mov P1, #FFH;  // ustawianie portu 1 jako wejscia
  23.   setb P3.4 // ustawienie bitu jako wejscia
  24.   setb EX0; // zezwolenie na zewnetrzne przerwanie 0
  25. MAIN
  26. ljmp MAIN
  27.  
  28. EXT_IRQ
  29.   PUSH Acc;
  30.   mov A, P1;
  31.   mov R0, A; //Zapisujemy DATA_C do R0
  32.   mov A, P2;
  33.   add A, R0; // W akumulatorze mamy DATA_C + DATA_ADC
  34.   mov DPTR, #0x6321;
  35.   movx @DPTR, A; //Pod podany adres wrzucamy wartość SUMY
  36.   mov SBUF, A; //Wysyłamy wartość sumy po serialu
  37.   POP Acc;
  38.   reti;
  39.  
  40. SERIAL_IRQ
  41.   jbc TI, SEND; //To sie wykona po zakończeniu wysyłania
  42.   jbc RI, RECIVE; //To sie wykona po odebraniu transmisji
  43.  
  44. SEND
  45.   clr TI; //Wyczyszczenie TI
  46.   reti;
  47.  
  48. RECIVE
  49.   PUSH Acc;
  50.   clr RI;   // Wyczyszczenie RI
  51.   mov A, SBUF; //Wartość transmisji z serialu do A
  52.   mov R2, A; //Do R2
  53.   mov A, @R2
  54.   mov DPTR, #0x5041
  55.   mov @DPTR, A
  56.   POP Acc;
  57.   reti;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement