Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CSEG AT 0
- AJMP reset
- CSEG AT 23h
- AJMP serial_interrupt
- CSEG AT 30h
- reset:
- MOV SCON,#50h ; uart w trybie 1 (8 bit), REN=1
- MOV TMOD,#20h ; licznik 1 w trybie 2
- MOV TH1,#0FDh ; 9600 Bds at 11.0592MHz
- SETB TR1 ; uruchomienie licznika
- CLR TI ; wyzerowanie flagi wyslania
- SETB ES
- SETB EA
- JMP set_encoding_mode
- loop:
- JNB P3.6, set_decoding_mode
- JNB P3.7, set_encoding_mode
- JMP common_return
- set_encoding_mode:
- MOV R4, #0
- CLR P2.7
- SETB P2.6
- DEC A
- JMP common_return
- set_decoding_mode:
- MOV R4, #1
- CLR P2.6
- SETB P2.7
- INC A
- common_return:
- JMP loop
- serial_interrupt:
- JNB RI,$ ; sprawdzenie flagi odbioru
- MOV A,SBUF ; czytanie z uarta
- CLR RI ; zerowanie flagi odbioru
- select_mode:
- CJNE R4, #0, encode
- JMP decode
- decode:
- DEC A
- JMP transmission_done
- encode:
- INC A
- JMP transmission_done
- transmission_done:
- MOV SBUF,A ; zapis do uarta
- JNB TI,$
- CLR TI
- RETI
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement