Este es un ejemplo para configurar la UART y comunicar el microcontrolador mC51 serialmente con otro dispositivo. Usa las rutinas anteriormente diseñadas D_LCD, TECLADO y ASCII4B. Este ejemplo recibe un dato enviado por otro dispositivo, por ejemplo una PC através de la hiperterminal de windows, recibe este dato y lo despliega en una pantalla LCD, además de leer un teclado matricial y enviar el código ascii de la tecla solicitada (0 a F) hacia un dispositivo externo que podría ser una PC para visualizarlo en la hiperterminal de windows. Esta debe ser configurada a 9600 bits por segundo, 8 bits de datos, sin paridad y 1 bit de stop.
;------------------------------------------------------------
org 0H
INI_PRG:
acall INI_UART
RECIBIR:
jnb RI,TECLA ;espera fin de recepción
clr RI
mov A,SBUF ;recibe dato de PC
acall D_LCD ;despliega información en LCD
TECLA:
acall TECLADO ;lee el teclado matricial
cjne A,#10H,ENVIAR ;hay alguna tecla?
sjmp RECIBIR
ENVIAR:
acall ASCII4B ;genera ascii de la tecla
mov SBUF,A ;transmite información a PC
jnb TI,RECIBIR ;espera fin de transmisión
clr TI ;prepara nueva transmisión
sjmp RECIBIR
;**********************************
; Rutina de configuracion de la UART
;---------------------------------------------
; Rutina de configuracion de la UART
;---------------------------------------------
INI_UART:
mov SCON,#50H ;transmisión en modo 1, habilita recepción serial
mov TMOD,#20H ;timer 1 en modo 2 autorrecargable
mov TH1,#0FDH ;baud_rate a 9600 @ 11.0592 MHz
mov TL1,#0FDH
setb TR1 ;inicia el baud_rate
ret
;---------------------------------------------
end