;RUTINA PRUEBA DEL SERIE CON LCD CON EL 8051 ;Por vicente Martinez ;Datos LCD al puerto 1 del 8051 ;RS del LCD a P3 patilla 5 ;Enable del LCD a P3 patilla 4 ;WR del LCD a tierra ;Se recibira los datos por el puerto serie a 2400 baudios y los ;representa en el LCD. Tambien los vuelve a enviar por el puerto serie. DPORT: EQU 90H ;PUERTO DE DATOS P1 INITD: EQU 38H ;INICIALIZA DISPLAY LIMP: EQU 01H ;BORRA PANTALLA INICIO: EQU 02H ;POSICION INICIAL VISUA: EQU 0CH ;ENCIENDE Y CURSOR ESTATICO CPORT: EQU 0B0H ;DIRECCION PUERTO P3 STROBE: EQU 0B4H ;P3.4 PAT 14-ENABLED CTRL: EQU 0B5H ;P3.5 PAT 11-RS ACC: EQU 0E0H ;ACUMULADOR IE: EQU 0A8H ;HABILITACION INTERRUPCIONES SP: EQU 81H ;STACK PSW: EQU 0D0H ;PROGRAM STATUS WORD SCON: EQU 98H ;CONTROL SERIE TMOD: EQU 89H ;MODO TIMER TH1: EQU 8DH ;PARTE ALTA TIMER1 TL1: EQU 8BH ;PARTE BAJA TIMER1 TR1: EQU 08EH ;HABILITA TIMER1 SBUF: EQU 99H ;SEND BUFFER TI: EQU 099H ;BIT DE TRANSMISION RI: EQU 098H ;BIT DE RECEPCION ORG 0H PRIN: MOV IE,#0H ; MOV SP,#64H ;STACK A MITAD DE RAM MOV PSW,#0H ; MOV DPORT,#00H ;LIMPIA PUERTO 1 ACALL RETARDO ACALL LCDINI ACALL INIPORT MOV DPORT,#2DH ;"-" en ASCII ACALL ESCRIBE ;Mostramos - en el LCD PRIN2: ACALL RECEP ;Recibimos un dato MOV DPORT,A ;PONEMOS LO RECIBIDO ACALL ESCRIBE ;Mostramos lo recibido en el LCD ACALL ENVIO ;Devolvemos el dato via serie AJMP PRIN2 LCDINI: CLR STROBE ;A CERO STROBE CLR CTRL ;A CERO CTRL ACALL RETARDO ;RETRASO PARA EL LCD LCDLIM: MOV DPORT,#INITD ;ENCIENDE DISPLAY CURSOR ON ACALL CONTROL CLR CTRL MOV DPORT,#VISUA ;2 LINEAS DISPLAY ACALL CONTROL CLR CTRL MOV DPORT,#INICIO ;POSICION INICIAL ACALL CONTROL CLR CTRL MOV DPORT,#LIMP ;BORRA PANTALLA ACALL CONTROL CLR CTRL RET CONTROL: CLR CTRL SETB STROBE ACALL RETARDO CLR STROBE CLR CTRL RET ESCRIBE: SETB STROBE SETB CTRL ACALL RETARDO CLR STROBE CLR CTRL RET RETARDO: MOV R3,#100 RETAR1: MOV R2,#255 RETAR2: DJNZ R2,RETAR2 DJNZ R3,RETAR1 RET INIPORT: MOV SCON,#50H ;UART MODO 1 (8 BITS,1 PARO) MOV TMOD,#21H ;TIMER1 MODO2,TIMER0 MODO1 MOV TH1,#243 ;2400 BAUDIOS A 11.98080MHZ MOV TL1,#243 ;RECARGAR TIMER1 SETB TR1 ;HABILITA TIMER1 RET ENVIO: MOV SBUF,A ;LO COGEMOS DEL ACUMULADOR CLR TI EN_OK: JNB TI,EN_OK ;ESPERA A QUE EL DATO HA SIDO ENVIADO CLR TI RET RECEP: JNB RI,RECEP ;ESPERA A QUE UN DATO ENTRE CLR RI MOV A,SBUF ;LO PONEMOS EN EL ACUMULADOR RET END ;Para cristal de 11.095 Mhz y 2400 baudios, TH1 y TL1 = 244