You are on page 1of 2

********************************************************************************

*** ; *
; programa: termometro.asm * ; *
; este programa muestra el funcionamiento del conversor analgico - digital
que *
; contiene el pic16f877a. toma la seal analgica del sensor de temperatura y
la *
; convierte a digital. una vez hecha la conversin la despliega en la pantalla lcd
*
; dndonos como resultado la temperatura que hay en el ambiente. * ; *
; velocidad del reloj: 4mhz tipo de reloj: xt *
; perro guardin: deshabilitado proteccin del cdigo: off * ; *
;*******************************************************************************
****
list p=16f877a radix hex include "p16f877a.inc" ;declaracin de la librera
;*******************declaracin de los bits de configuracin*******************
__config _cp_off&_cpd_off&_lvp_off&_wdt_off&_xt_osc
;************************** declaracin de registros **************************
cblock 0x20 num1,num2,num3
;******************************************************************************
pointer ;registros utilizados en
unidades,decenas ;binbcd y en la adquisicin de
centenas,millares ;datos
datoh
unidadest,decenast
centenast,millarest
sample
shift
;******************************************************************************
promedio
contador
endc
cblock 0x70 ;se coloca a datol en una de las localidades de datol
;memoria que estn espejadas en banco0 y banco1
endc
;****************************************************************************** ;
****************declaracin de los pines de control de la lcd*****************
#define rs portc,2
#define en portc,1
;****************************************************************************** ;
**************puerto donde estarn los pines de datos de la lcd***************
portlcd equ portd
;****************************************************************************** ;
******************************************************************************
;comandos de la pantalla
limpiar equ b'00000001' ;limpia toda la pantalla

renglon1 equ b'10000000' ;coloca en el rengln 1


renglon2 equ b'11000000' ;coloca en el rengln 2
dison equ b'00001100' ;enciende el display
home equ b'00000010' ;va a la direccin 0
shiftdl equ b'00011100' ;rota el lcd a la izquierda
shiftdr equ b'00011000' ;rota el lcd a la derecha
shiftcl equ b'00010100' ;rota el cursor a la izquierda
shiftcr equ b'00010000' ;rota el cursor a la derecha
;******************************************************************************
org 0x00 ;vector de reset
goto inicio ;salto al inicio del cdigo
org 0x04 ;vector de interrupcin
;*******************tablas de datos para la subrutina binbcd*******************
tablau ;tabla de unidades
movf pointer,w
addwf pcl,f
retlw d'2'
retlw d'6'
retlw d'8'
retlw d'4'
retlw d'2'
retlw d'6'
retlw d'8'
retlw d'4'
retlw d'2'
retlw d'1'
tablad ;tabla de decenas
movf pointer,w
addwf pcl,f
retlw d'1'
retlw d'5'
retlw d'2'
retlw d'6'
retlw d'3'

You might also like