Moderadores: andre_luis, 51, guest2003, Renie
; COFIGURA OS PINOS QUE SERÃO USADOS COMO SAÍDA
#DEFINE DISPLAY PORTB
#DEFINE RS PORTA,0
#DEFINE ENABLE PORTA,2
;-----------------------------------------------------------------------------
; ROTINA DE DELAY POR INSTRUÇÃO
; ESPERA O VALOR PASSADO POR W
DELAY_MS
MOVWF TEMPO1
MOVLW .250
MOVWF TEMPO0
CLRWDT
DECFSZ TEMPO0,F ; FIM DE TEMPO0 ?
GOTO $-2 ; NÃO - VOLTA 2 INSTRUÇÕES
; SIM - PASSOU-SE 1MS
DECFSZ TEMPO1,F ; FIM DE TEMPO1 ?
GOTO $-6 ; NÃO - VOLTA 6 INSTRUÇÕES
; SIM
RETURN ; RETORNA
;-----------------------------------------------------------------------------
;ROTINA PARA ESCRITA NO LCD
ESCREVE
MOVWF DISPLAY ; ATUALIZA DISPLAY (PORTB)
NOP ; PERDE 1US PARA ESTABILIZAÇÃO
BSF ENABLE ; ENVIA UM PULSO DE ENABLE AO DISPLAY
GOTO $+1 ; .
BCF ENABLE ; .
MOVLW .1
CALL DELAY_MS ; DELAY DE 1MS
RETURN ; RETORNA
;-----------------------------------------------------------------------------
;ESTA ROTINA INICIALIZA O LCD
INICIALIZACAO_DISPLAY
BCF RS ; SELECIONA O DISPLAY P/ COMANDOS
MOVLW 0X30 ; ESCREVE COMANDO 0X30 PARA
CALL ESCREVE ; INICIALIZAÇÃO
MOVLW .3
CALL DELAY_MS ; DELAY DE 3MS (EXIGIDO PELO DISPLAY)
MOVLW 0X30 ; ESCREVE COMANDO 0X30 PARA
CALL ESCREVE ; INICIALIZAÇÃO
MOVLW 0X30 ; ESCREVE COMANDO 0X30 PARA
CALL ESCREVE ; INICIALIZAÇÃO
MOVLW B'00111000' ; ESCREVE COMANDO PARA
CALL ESCREVE ; INTERFACE DE 8 VIAS DE DADOS
MOVLW B'00000001' ; ESCREVE COMANDO PARA
CALL ESCREVE ; LIMPAR TODO O DISPLAY
MOVLW .1
CALL DELAY_MS ; DELAY DE 1MS
MOVLW B'00001100' ; ESCREVE COMANDO PARA
CALL ESCREVE ; LIGAR O DISPLAY SEM CURSOR
MOVLW B'00000110' ; ESCREVE COMANDO PARA INCREM.
CALL ESCREVE ; AUTOMÁTICO À DIREITA
BSF RS ; SELECIONA O DISPLAY P/ DADOS
RETURN
;-----------------------------------------------------------------------------
COMO FICA O PROGRAMA !!!
;VETOR DE RESET
ORG 0x000
GOTO CONFIG ; VAI CONFIGURAR O PIC
CONFIG
;CONFIGURA O PIC
;INICIALIZA O LCD
CALL INICIALIZACAO_DISPLAY
;ROTINA PRINCIPAL
MAIN
;COMANDOS PARA ESCRITA NO LCD
BCF RS ; SELECIONA O DISPLAY P/ COMANDOS
MOVLW 0X01
CALL ESCREVE ; COMANDO P/ LIMPAR A TELA
MOVLW .1
CALL DELAY_MS ; DELAY DE 1MS
MOVLW 0X80 ; COMANDO PARA POSICIONAR O CURSOR
; 0x80 PRIMEIRA LINHA E PRIMEIRA COLUNA
; 0x70 sEGUNDA LINHA E PRIMEIRA COLUNA
CALL ESCREVE ; LINHA 0 / COLUNA 0
BSF RS ; SELECIONA O DISPLAY P/ DADOS
; COMANDOS PARA ESCREVER AS
; LETRAS DE "TESTE L1"
MOVLW 'T'
CALL ESCREVE
MOVLW 'E'
CALL ESCREVE
MOVLW 'S'
CALL ESCREVE
MOVLW 'T'
CALL ESCREVE
MOVLW 'E'
CALL ESCREVE
MOVLW ' '
CALL ESCREVE
MOVLW 'L'
CALL ESCREVE
MOVLW '1'
CALL ESCREVE
BCF RS ; SELECIONA O DISPLAY P/ COMANDOS
MOVLW 0XC0 ; COMANDO PARA POSICIONAR O CURSOR
; 0x80 PRIMEIRA LINHA E PRIMEIRA COLUNA
; 0xC0 sEGUNDA LINHA E PRIMEIRA COLUNA
CALL ESCREVE ; LINHA 0 / COLUNA 0
BSF RS ; SELECIONA O DISPLAY P/ DADOS
; COMANDOS PARA ESCREVER AS
; LETRAS DE "TESTE L2"
MOVLW 'T'
CALL ESCREVE
MOVLW 'E'
CALL ESCREVE
MOVLW 'S'
CALL ESCREVE
MOVLW 'T'
CALL ESCREVE
MOVLW 'E'
CALL ESCREVE
MOVLW ' '
CALL ESCREVE
MOVLW 'L'
CALL ESCREVE
MOVLW '1'
CALL ESCREVE
;ESPERA UNS 500mS
GOTO MAIN
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante