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