Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .org 0x00
- ljmp INIT
- .org 0x03
- ljmp EXT_IRQ
- .org 0x23
- ljmp SERIAL_IRQ
- .org 0x100
- INIT
- setb ES; // zezwolenie na przerwania na porcie szeregowym
- setb EA; // zezwolenie na przerwania
- setb IT0; // przerwanie zewnetrzne 0, aktywacja na zbocze opadajace
- setb REN; // zezwolenie na przyjecie bajtu na porcie szeregowym
- ORL PCON, #0x80; // SMOD = 1
- clr SM0;
- setb SM1; // mode 1 portu szeregowego
- setb SM2; // podobno jest to zalecane dla transmisji a synchronicznej
- setb PX0; // ustawienie priorytetu przerwania zewnetrznego jako najwyzszego
- mov TMOD, #20H; pierwsze tryb timera
- mov TH1, #FDH;
- mov TL1, #FDH; // prędkość 9600
- setb TR1; // uruchomienie timera
- mov P1, #FFH; // ustawianie portu 1 jako wejscia
- setb P3.4 // ustawienie bitu jako wejscia
- setb EX0; // zezwolenie na zewnetrzne przerwanie 0
- MAIN
- ljmp MAIN
- EXT_IRQ
- PUSH Acc;
- mov A, P1;
- mov R0, A; //Zapisujemy DATA_C do R0
- mov A, P2;
- add A, R0; // W akumulatorze mamy DATA_C + DATA_ADC
- mov DPTR, #0x6321;
- movx @DPTR, A; //Pod podany adres wrzucamy wartość SUMY
- mov SBUF, A; //Wysyłamy wartość sumy po serialu
- POP Acc;
- reti;
- SERIAL_IRQ
- jbc TI, SEND; //To sie wykona po zakończeniu wysyłania
- jbc RI, RECIVE; //To sie wykona po odebraniu transmisji
- SEND
- clr TI; //Wyczyszczenie TI
- reti;
- RECIVE
- PUSH Acc;
- clr RI; // Wyczyszczenie RI
- mov A, SBUF; //Wartość transmisji z serialu do A
- mov R2, A; //Do R2
- mov A, @R2
- mov DPTR, #0x5041
- mov @DPTR, A
- POP Acc;
- reti;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement