Define CONFIG1L = 0x00
Define CONFIG1H = 0x08
Define CONFIG2L = 0x0e
Define CONFIG2H = 0x00
Define CONFIG3L = 0x00
Define CONFIG3H = 0x00
Define CONFIG4L = 0x80
Define CONFIG4H = 0x00
Define CONFIG5L = 0x03
Define CONFIG5H = 0xc0
Define CONFIG6L = 0x03
Define CONFIG6H = 0xe0
Define CONFIG7L = 0x03
Define CONFIG7H = 0x40
Define CLOCK_FREQUENCY = 8
'NOMBRE:18F1320_PicEBasic_LCD
'MICRO: PIC18F1320/8Mhz reloj interno
'Uso del LCD con bus de datos a 4Bit y sin pin de RW
'Configuracion del modulo ADC
'************************************************************************************************
'-------------------------------------Puertos del LCD---------------------------------------------
Define LCD_BITS = 4 'indicamos que el bus de datos del lcd sera de 4bit
Define LCD_DREG = PORTA 'el bus de datos sera el puerto A
Define LCD_DBIT = 0 'el bus de datos seran los 4 bit menos significativos del puerto A
Define LCD_RSREG = PORTB 'el bit de control RS sera del puerto B
Define LCD_RSBIT = 7 'se usara el RB7 como RS
Define LCD_EREG = PORTB 'el bit de control E sera del puerto B
Define LCD_EBIT = 6 'se usara el RB6 como E
Define LCD_COMMANDUS = 2000 'Tiempo de espera despues de ejecutar un comand del lcd en uSeg.
Define LCD_DATAUS = 50 'Tiempo de espera despues de enviar un dato al LCD en uSeg.
Define LCD_INITMS = 50 'Tiempo de espera despues de inicializar el Display, solo se ejecuta una vez en mSeg., trucado para simulacion
'------------------------------------------------------------------------------------------------------
'Define SIMULATION_WAITMS_VALUE = 1 'suprime los tiempos de espera Waitms, solo activar esta linea en simulacion
'------------------------------------Definicion de puertos------------------------------------------
ADCON1 = %1101111 'Configuracion pin, 1= digitales, 0 = analogicos (AN4)
OSCCON = 0x7e 'Set intrc To 8mhz, se usara reloj interno a 8Mhz
TRISA = 0x00 'Configuracion puerto A
TRISB = %00000001 'Puerto B como salidas, AN4 input
ADCON0 = %00010001 'Vref = AVdd y AVss, CH4, ADC ON
ADCON2 = %10101001 '10Bit, 11Tad, Fosc/8 (8Mhz=1Tad=1.6uSeg.)
'ADCON2 = %10101010 '10Bit, 11Tad, Fosc/32 (20Mhz=1Tad=1.6uSeg.)
'Variables
Dim _getadc As Word
Dim gat As Word
'------------------------------------Inicio------------------------------------------------------------
Lcdinit 'Inicializa el lcd sin cursor
WaitMs 500 'Pausa para estabilizar
main: 'Comienza el programa principal
'ADCON0.chs3 = 0 'Este micro no tiene CHS3
ADCON0.CHS2 = 1
ADCON0.CHS1 = 0 'Seleccion canal 4
ADCON0.CHS0 = 0
ADCON2.ADFM = 1 'Seleccion 10 bits
'WaitUs 10 'Aquí normalmente, en la serie 16F, hace falta hacer una pausa de unos pocos uSegundos
'para dar tiempo a que se configure el ADC con los nuevos datos, sin embargo en este micro
'trabajando a 8Mhz no he observado que fuera necesario
ADCON0.GO = 1
While ADCON0.GO = 1 'Espera que termine la lectura del módulo ADC
Wend
gat.HB = ADRESH
gat.LB = ADRESL
Lcdcmdout LcdLine1Home
Lcdout "ADC AN4: ", #gat, " "
Goto main 'Impide que termine el programa principal
End