; PCDB9-EVOLUPICLCD comunica teclado de PC con LCD en tarjeta ; EVOLUPIC por puerto serie DB9 a 2400 bauds ; => 2400 8-N-1 processor 16F628 include __config _XT_OSC & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF #DEFINE BANCO0 BCF STATUS,RP0 #DEFINE BANCO1 BSF STATUS,RP0 DATO EQU H'20' ;caracter recibido BANDA EQU H'21' ;banderas en bits K EQU H'22' ;variable subrutina delay L EQU H'23' ;variable subrutina delay M EQU H'24' ;variable para checar tecla liberada N EQU H'25' ;valor columna (salida en puerto B, RB0...RB3) PALA EQU H'26' ;caracter recibido de PC SALTO EQU 0X27 LISTA1 EQU 0X28 LCD MACRO BANCO1 MOVLW 0XF9 MOVWF TRISA MOVLW 0X0 MOVWF TRISB BANCO0 MOVLW 0X0 MOVWF PALA MOVWF SALTO MOVWF BANDA MOVLW 0X5 MOVWF LISTA1 MOVLW 0X0 MOVWF PORTA ; RS=0 => empiezan comandos movlw 0x30 ; despierta LCD movwf PORTB call EPULSO call DELAY call EPULSO call DELAY call EPULSO call DELAY CALL CICLO ENDM ; Programa INICIO org 0 CALL DELAY LCD RECICLA BANCO1 MOVLW 02H ;B1/RX entrada, B2/TX salida MOVWF TRISB ; MOVLW 0X19 ;x=25(10)=19(16) en formula de baud rate MOVWF SPBRG ;para 2400 bauds, modo sincrono MOVLW 00H ;BRG=0, SYNC=0, TXEN=0, TX9=0 MOVWF TXSTA ;baja Vel., asincrono, NO habilita Tx, 8 bits de datos BANCO0 TECLA MOVLW 090H ;SPEN=1, CREN=1, ADEN=0 MOVWF RCSTA ;recepcion continua asincrona, no detecta direccion RECIBE BTFSS PIR1,5 ;si RCIF se pone a uno termino la recepcion GOTO RECIBE MOVFW RCREG ;leo lo que llego MOVWF DATO ;lo guardo temporalmente BAMCO1 MOVLW 0XF9 MOVWF PORTA MOVLW 0X0 MOVWF PORTB BANCO0 MOVLW 0X2 MOVWF PORTA ; RS=1 para recibir datos bsf BANDA,0 MOVFW DATO MOVWF PALA PARTIDA MOVLW 0XF0 ANDWF PALA,W MOVWF PORTB CALL EPULSA CALL DELAY MOVLW 0X0F ANDWF PALA,F SWAPF PALA,W MOVWF PORTB CALL EPULSA CALL DELAY BTFSS BANDA,0 RETURN MOVLW 0X0 MOVWF PORTA ; RS=0 termina recepcion de dato GOTO RECICLA CICLO CALL JEFE INCF SALTO,F DECFSZ LISTA1,F GOTO CICLO CLRF SALTO RETURN PARTIDO MOVLW 0XF0 ANDWF PALA,W MOVWF PORTB CALL EPULSO CALL DELAY MOVLW 0X0F ANDWF PALA,F SWAPF PALA,W MOVWF PORTB CALL EPULSO CALL DELAY RETURN JEFE MOVLW ORDEN ADDWF SALTO,W CALL ATENTO MOVWF PALA CALL PARTIDO RETURN ATENTO MOVWF PCL ORDEN RETLW 0X2 ; 4 bits mas significativos RETLW 0X28 ; 2 renglones RETLW 0X0E ; pantalla y cursor ON RETLW 0X01 ; cursor al inicio RETLW 0X06 ; avance de cursor a la derecha RETLW 0XC0 ; segundo renglon EPULSO MOVLW 0X4 MOVWF PORTA call DELAY MOVLW 0X0 MOVWF PORTA return EPULSA MOVLW 0X6 MOVWF PORTA call DELAY MOVLW 0X2 MOVWF PORTA return DELAY movlw 0X7F ; 48.769 milisegundos movwf M mallaM: movwf L mallaL: decfsz L,f goto mallaL decfsz M,f goto mallaM return END