;************************************************************************** ;* * ;* Programovy modul RS-232 plny duplex pro 8x51/8x52 na realizaci * ;* serioveho prenosu dat * ;* ---------------------------------------------------------------- * ;* * ;* Obsahuje : * ;* INIT_UART: - inicializace UARTu RS-232 * ;* SEND_UART: - vyslani znaku na RS-232 * ;* RECV_UART: - prijem znaku z RS-232 * ;* SENDENT_UART: - vyslani znaku CR+LF na RS 232 * ;* STRING: - Vyslani textu na RS-232 * ;* * ;* Nutne externi nastaveni: * ;* Povoleni preruseni EA a ES pokud budeme vyuzivat rutiny * ;* pod prerusenim * ;* * ;* Definice externich parametru: * ;* * ;* Neni potrebne definovat externi parametry * ;* * ;*------------------------------------------------------------------------* ;* Brno : brezen 2001 sestavil: Doc.Ing.Rudolf Jalovecky,CSC * ;* e-mail : vyvoj@jalsoft.iol.cz * ;************************************************************************** ; ; lze pouzit jako INCLUDE(RS232_01.ASM) ; ;########################################################## ; Inicializace UART ;########################################################## ; vstup : v ACC je udavana rychlost prenosu podle ; udaju v TABULKA_RS232 ; vystup : - ; vola : - ; nastavi: parametry seriove linky, vcetne casovace T1 ; do rezimu MOD 2 ; zmeni : Acc,DPTR, ; vnoreni: 0 INIT_UART: MOV DPTR,#TABULKA_RS232 RL A PUSH ACC MOVC A,@A+DPTR ; cte PCON (SMOD) MOV PCON,A POP ACC INC A MOVC A,@A+DPTR ; cte TL1 MOV TH1,A ; horni i MOV TL1,A ; dolni stejne pro mod 2 SETB TR1 ; spusteni citani CT1 RET TABULKA_RS232: ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; PCON, TL1 Fosc=11.0592 MHz v Acc ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DB 00H, 0E8H ; 1200 Bd 0 DB 00H, 0F4H ; 2400 Bd 1 DB 80H, 0F4H ; 4800 Bd 2 DB 00H, 0FDH ; 9600 Bd 3 DB 80H, 0FDH ; 19200 Bd 4 ;########################################################## ; Vyslani znaku z Acc na RS 232 ;########################################################## ; vstup : Acc - vysilany znak ; vystup : - ; vola : - ; zmeni : - ; vnoreni: 0 SEND_UART: JNB TI,$ ;test prazdneho registru CLR TI ;jeho nulovani MOV SBUF,A ;zapis RET ;########################################################## ; Prijem znaku do Acc z RS 232 ;########################################################## ; vstup : - ; vystup : Acc - prijaty znak ; vola : - ; zmeni : Acc ; vnoreni: 0 RECV_UART: JNB RI,$ ;test volneho registru MOV A,SBUF ;zapis CLR RI ;jeho nulovani RET ;########################################################## ; Vyslani znaku CR+LF na RS 232 ;########################################################## ; vstup : - ; vystup : - ; vola : SEND_UART ; zmeni : - ; vnoreni: 2 (PUSH-POP) SENDENT_UART: PUSH ACC ;uklid Acc MOV A,#0DH ;vlozeni znaku CR CALL SEND_UART ;vyslani MOV A,#0AH ;vlozeni znaku LF CALL SEND_UART ;vyslani POP ACC ;vyzvednuti Acc RET ;########################################################## ; Vyslani textu na RS 232 ;########################################################## ; vstup : DPTR - adresa pocatku textu ; : na konci retezce musi byt znak OOH !!! ; vystup : ; vola : SEND_UART,SENDENT_UART ; zmeni : Acc ; vnoreni: 2 (PUSH-POP) STRING: CLR A ;nulovani Acc STRING_OP: PUSH ACC ;citac znaku MOVC A,@A+DPTR ;vyzvednuti znaku JZ STRING_K ;neni-li 0 pokracuj CALL SEND_UART ;vyslani znaku POP ACC INC A ;o znak dale JMP STRING_OP STRING_K: POP ACC ;fiktivni odebrani citace RET ;---------------- END modulu RS232_01.ASM -----------------