; ------------------------------------------------------ ; PROGRAMA EXEMPLO ; ; Este programa funciona em qualquer microcontrolador ; da familia 18F. ; ; Para usar outro microprocessador,modifique o codigo ; nas duas diretivas abaixo. ; ; ------------------------------------------------------ LIST P=18F4620 #include #include "familias.inc" ; ; ------------------------------------------------------ ; CONFIGURATION BITS ; ------------------------------------------------------ CONFIG WDT = OFF CONFIG MCLRE = ON CONFIG debug = OFF CONFIG LVP = OFF CONFIG OSC = HS CONFIG CP0 = OFF CONFIG CP1 = OFF CONFIG CP2 = OFF CONFIG CP3 = OFF CONFIG CPB = OFF CONFIG CPD = OFF CONFIG WRT0 = OFF CONFIG WRT1 = OFF CONFIG WRT2 = OFF CONFIG WRT3 = OFF CONFIG WRTC = OFF CONFIG WRTB = OFF CONFIG WRTD = OFF ; ------------------------------------------------------ ; REGISTRADORES E SIMBOLOS NA MEMORIA DE DADOS ; ------------------------------------------------------ UDATA 0x80 delay_temp res 1 ; para serviço de delay CLOCK equ 20000000 ; Fosc=20MHZ ; SR_1 RES 1 ; registrador auxiliar 1 SR_2 RES 1 ; registrador auxiliar 2 SR_3 RES 1 ; registrador auxiliar 3 SR_4 RES 1 ; registrador auxiliar 4 SR_5 RES 1 ; registrador auxiliar 5 LCD_COMMAND RES 1 ; buffer de comando e dados SR_TIPO RES 1 ; tipo de LCD SR_CLK equ 2 ; em TRISx este bit deve ser saida SR_DAT equ 1 ; em TRISx este bit deve ser saida SR_CHARS equ 0 ; 0 - caracteres 5x7 1 - caracteres 5x10 #define SR_TRIS TRISD #define SR_DATA LATD,SR_DAT ; DATA #define SR_CLOCK LATD,SR_CLK ; CLOCK ; ; ------------------------------------------------------ ; Vetores de interrupções ; ------------------------------------------------------ rstvec CODE 0x0000 goto inicio inth CODE 0x0008 retfie ; ------------------------------------------------------ ; Inicio da area de codigo ; ------------------------------------------------------ MAIN CODE #include "delay_services.inc" #include "lcd_services.inc" LCD_LINES 0216 ; dimensoes do LCD ; ------------------------------------------------------ ; Entrada principal ; ------------------------------------------------------ inicio movlw 0x0F ; movwf ADCON1 ; todas as portas digitais clrf PORTD ; PORTD = 0x00 clrf TRISD ; PORTD -> Saida call SR_4BITS ; configura o LCD loop call SR_LCDCLEAR ; limpa o LCD call tempo ; aguarda 1 segundo SET_CURSOR .1,.1,"i" ; posiciona linha 1, coluna 1 call msg001 ; envia mensagem ao LCD call tempo ; tempo para visualizacao SET_CURSOR .2,.1,"i" ; posiciona linha 2, coluna 1 call msg002 ; envia mensagem ao LCD call tempo ; tempo para visualizacao goto loop ; ------------------------------------------------------ ; Mensagens fixas ; ------------------------------------------------------ msg001 LCD_WRITE "PROGRAMA EXEMPLO" return ; msg002 LCD_WRITE "LCD@18F4620.LAB" return ; ------------------------------------------------------ ; Retardo de 1 segundo ; ------------------------------------------------------ tempo movlw .250 call delay_ms movlw .250 call delay_ms movlw .250 call delay_ms movlw .250 call delay_ms return END