Device 16F887
; Palabra de configuración
Reminders = Off
Config1 INTOSCIO,LVP_OFF,FCMEN_OFF,IESO_OFF,PWRTE_ON,WDTE_OFF
Config2 WRT_OFF,BOR21V
Reminders = On
Xtal 8MHz
Declare Create_Coff On ; Crear el archivo para depuración (.cof)
; Declaración de variables
Dim Valor_ADC As Word
Dim Temperatura As Float
Inicio:
OSCCON = %01110001 ; Configurar el oscilador interno a 8MHz.
; Configuración del ADC
ADCON1bits_ADFM = 1 ; Resultado con justificación a la derecha
Declare Adin_Res = 10 ; Resultado ADC a 10 bits
Declare Adin_Tad = FRC ; Reloj del ADC (FRC = Interno)
Declare Adin_Stime = 50 ; Tiempo de muestreo en uS
ANSEL = 1 ; Canal 0 análogico
ANSELH = 0 ; Puerto B Digital I/O (En vez de All_Digital)
; Configuración de la pantalla
Declare LCD_Type Alpha ; Alfanumérica
Declare LCD_DTPin PORTD.4 ; Bus de datos de RD4 a RD7
Declare LCD_RSPin PORTD.3 ; Pin RS en RD3
Declare LCD_ENPin PORTD.2 ; Pin E en RD2
Declare LCD_Interface 4 ; Modo a 4 Bits
Declare LCD_Lines 2 ; Pantalla de dos líneas
Cls ; Inicializar o limpiar la pantalla.
Print At 1,1, "Temperatura LM35"
Programa:
Valor_ADC = ADIn 0 ; Se lee el canal 0 y se guarda el valor en "Valor_ADC"
Temperatura = (150 * Valor_ADC) / 308; (308 = Valor que tendrá el ADC a 150 °C "1.5V")
; Mostrar el resultado en pantalla
Print At 2,1, Dec2 Temperatura, " ", 0xDF, "C "
GoTo Programa
End