- Al final del programa (en lugar del SLEEP)dejé ciclado al micro, parpadeando RA6
- RA1 parpadea con cada comando enviado al LCD
- RA2 parpadea con cada dato enviado al LCD
- Esas pausas adicionales creo hacen mas evidente la ejecucion del programa
- Hay un error en el parametro de configuracion BOREN (yo puse BODEN ayer)
;
; LCD del picsim
;
; ZONA DE DATOS **********************************************************************
LIST P=16F628A
INCLUDE
__CONFIG _INTOSC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BOREN_OFF & _LVP_OFF
CBLOCK 0x20
ctr
val
ENDC
; ZONA DE CÓDIGOS ********************************************************************
BANCO0 MACRO
BCF STATUS,RP0
BCF STATUS,RP1
ENDM
BANCO1 MACRO
BSF STATUS,RP0
BCF STATUS,RP1
ENDM
PUERTOS MACRO
BANCO1
CLRF VRCON
MOVLW H'30'
MOVWF TRISA
MOVLW H'E7'
MOVWF TRISB
BANCO0
MOVLW 7
MOVWF CMCON
CLRF PORTA
CLRF PORTB
ENDM
ORG 0
PUERTOS
call lcd_init
movlw H'4A'
movwf val
call lcd_dat
movlw H'4F'
movwf val
call lcd_dat
movlw H'52'
movwf val
call lcd_dat
movlw H'47'
movwf val
call lcd_dat
movlw H'45'
movwf val
call lcd_dat
fin
bsf PORTA,6
call Retardo_500ms
bcf PORTA,6
call Retardo_500ms
goto fin
; Inicializacion de LCD
lcd_init
bcf PORTA,0
bcf PORTB,3 ;
call Retardo_20ms
bsf PORTA,0 ;
;
movlw H'30'
movwf val
call lcd_cmd
call Retardo_5ms
;
movlw H'30'
movwf val
call lcd_cmd
call Retardo_1ms
;
movlw H'38'
movwf val
call lcd_cmd
;
movlw H'08'
movwf val
call lcd_cmd
;
movlw H'0F'
movwf val
call lcd_cmd
;
movlw H'01'
movwf val
call lcd_cmd
;
movlw H'38'
movwf val
call lcd_cmd
;
movlw H'80'
movwf val
call lcd_cmd
return
; envia comando
lcd_cmd
bsf PORTA,0 ;
call lcd_wr ;
bcf PORTB,3
call Retardo_2ms
call Retardo_1ms
bcf PORTA,0
call Retardo_2ms
call Retardo_1ms
bsf PORTA,0
bsf PORTA,1
call Retardo_500ms
bcf PORTA,1
call Retardo_500ms
return
; envia dato
lcd_dat
bsf PORTA,0 ;
call lcd_wr ;
bsf PORTB,3
call Retardo_2ms
call Retardo_1ms
bcf PORTA,0
call Retardo_2ms
call Retardo_1ms
bsf PORTA,0
bsf PORTA,2
call Retardo_500ms
bcf PORTA,2
call Retardo_500ms
return
; escribe al LCD
lcd_wr ;
bcf PORTB,4 ;
movlw d'8' ;
movwf ctr ;
again
btfsc val,7
goto envia1
bcf PORTB,3
goto rota
envia1
bsf PORTB,3 ;
rota
rlf val,F
bsf PORTB,4 ;
bcf PORTB,4 ;
decfsz ctr,F ;
goto again
return
;
INCLUDE
END