Você está na página 1de 6

;-----------------------------------------------------;aplicacion10

;-----------------------------------------------------list p=16f877a
;se selleciona un PIC de la lista.
include<p16f877a.inc> ;incluye los registros propios del PIC.
include<macro16f877.inc> ;Macro general para las intrucciones del programa.
__config 0x3f32 ;oscilador 20MHz/Reset ON.
cblock 0x20
;los registros se guardaran a a partir de la direccion 20h.
primero1
;guarda las unidades del primer producto de la multiplicacion.
primero2
;guarda las decenas del primer producto de la multiplicacion.
primero3
;guarda las centenas del primer producto de la multiplicacion.
segundo1
;guarda las unidades del segundo productoparcial de la multiplic
acion.
segundo2
;guarda las decenas del segundo productoparcial de la multiplica
cion.
segundo3
;guarda las centenas del segundo producto de la multiplicacion.
unidad1
;guarda las unidades del producto final de la multiplicacion.
decena1
;guarda las decenas del producto final de la multiplicacion.
centena1
;guarda las centenas del producto final de la multiplicacion.
aumenta
;cuenta para la multiplicaion por 9
unidad2
;guarda las unidades del registro RegADC1
decena2
;guarda las decenas del registro RegADC1
centena2
;guarda las centenas del registro RegADC1
unidad3
;ejecuta la suma sucesiva delas unidades
decena3
;ejecuta la suma sucesiva delas unidades
centena3
;ejecuta la suma sucesiva delas unidades
acarreo1
;guarda un numero que se lleva en la multiplicacion.
acarreo2
;guarda un numero que se lleva en la multiplicacion.
unidad4
;guarda las unidades que se generan en la multiplicacion.
aumenta2
;cuenta para la multiplicaion por 9
producto
;guarda los millares del producto final de la multiplicacion.
aumenta3
;cuenta para la multiplicaion por 9
acarreo3
;guarda un numero que se lleva luego de primera suma
acarreo4
;guarda un numero que se lleva luego de primera suma
producto2
;guarda el millar del producto final de la multiplicacion.
endc
;cierra el bloque de direcciones de registro.
org
0000h
;programa empieza en la direccion 0.
;--------------------------------banco 1
;ingreso al banco 1
clrf
trisc ;colocamos como salida todo el PUERTO B
banco 0
;regreso al banco 0
clrf
portc ;puerto B inicialmente en OFF
movlw .0
;w=0
call
Inicio_ADC ;llama a la rutina para iniciar el conversor A-D (canal 0)
call
Inicio_lcd ;iniciamos al LCD(PUERTO D)
comienzo
clrf primero1
;estado incial 0
clrf primero2
;estado incial 0
clrf primero3
;estado incial 0
clrf segundo1
;estado incial 0
clrf segundo2
;estado incial 0
clrf segundo3
;estado incial 0
clrf unidad1
;estado incial 0
clrf decena1
;estado incial 0
clrf centena1
;estado incial 0
clrf aumenta
;estado incial 0
clrf unidad2
;estado incial 0
clrf decena2
;estado incial 0
clrf centena2
;estado incial 0
clrf unidad3
;estado incial 0

clrf
clrf
clrf
clrf
clrf
clrf
clrf
clrf
clrf
clrf
clrf

decena3
centena3
acarreo1
acarreo2
unidad4
aumenta2
producto
aumenta3
acarreo3
acarreo4
producto2

;estado incial 0
;estado incial 0
;estado incial 0
;estado incial 0
;estado incial 0
;estado incial 0
;estado incial 0
;estado incial 0
;estado incial 0
;estado incial 0
;estado incial 0

call ADC8Bits
;testea y da como resultado el valor binario cada 1 miliseg
undo.
movf
RegADC1,0 ;copia el valor que se encuentra en RegADC1 al registro de tr
abajo
movwf portc
;copia el valor del registro de trabajo al PUERTO B
borrarlcd
cursor off
mensaje 1
enter
csmai RegADC1,.53,Voltios
csi RegADC1,.0,cero
goto milivoltios
milivoltios
primer_producto
movf
RegADC1,0 ;copia el valor que se encuentra en RegADC1 al registro de tr
abajo
call bin_to_bcd
moverregistros unidad2,BCD_unidades
moverregistros decena2,BCD_decenas
moverregistros centena2,BCD_centenas
moverregistros unidad3,BCD_unidades
moverregistros decena3,BCD_decenas
moverregistros centena3,BCD_centenas
primero11
movf unidad2,0
addwf BDC_unidades,1
incf aumenta
csi aumenta,.8,segundo11
goto primero11
segundo11
movf BCD_unidades,0
call bin_to_bcd
moverregistros unidad4,BCD_unidades
moverregistros acarreo1,BCD_decenas
primero22
movf decena2,0
addwf decena3,1
incf aumenta2
csi aumenta2,.8,segundo22
goto primero22
segundo22
movf acarreo1,0
addwf decenas3,0

call bin_to_bcd
moverregistros primero1,unidad4
moverregistros primero2,BCD_unidades
moverregistros primero3,BCD_decenas
movf RegADC1,0
call bin_to_do
moverregistros segundo1,BCD_unidades
moverregistros segundo2,BCD_decenas
moverregistros segundo3,BCD_centenas
tercero33
moverregistros unidad1,unidad4
movf primero2,0
addwf segundo1,0
movwf decena1
call bin_to_bcd
moverregistros decena1,BCD_unidades
moverregistros acarreo2,BCD_decenas
movf acarreo2,0
addwf primero3,0
addwf segundo2,0
movwf centena1
csi centena1,.0,No_se_escribe
goto Escritura
No_se_escribe
mensaje 2
movf decena1,0
call numdec_to_numascii
call EnviaCarLCD
movf unidad1,0
call numdec_to_numascii
call EnviaCarLCD
movlw ' '
call EnviaCarLCD
movlw 'm'
call EnviaCarLCD
movlw 'v'
call EnviaCarLCD
milisegundo .150
goto comienzo
Escritura
mensaje 2
movf centena1,0
call numdec_to_numascii
call EnviaCarLCD
movf decena1,0
call numdec_to_numascii
call EnviaCarLCD
movf unidad1,0
call numdec_to_numascii
call EnviaCarLCD
movlw ' '
call EnviaCarLCD
movlw 'm'
call EnviaCarLCD
movlw 'v'
call EnviaCarLCD

mmilisegundo .150
goto comienzo
nada
mensaje 2
movlw '0'
call EnviaCarLCD
movlw ' '
call EnviaCarLCD
movlw 'v'
call EnviaCarLCD
mmilisegundo .150
goto comienzo
voltio
csi RegADC1,.255,cinco
primer_producto2
movf
RegADC1,0 ;copia el valor que se encuentra en RegADC1 al registro de tr
abajo
call bin_to_bcd
moverregistros unidad2,BCD_unidades
moverregistros decena2,BCD_decenas
moverregistros centena2,BCD_centenas
moverregistros unidad3,BCD_unidades
moverregistros decena3,BCD_decenas
moverregistros centena3,BCD_centenas
primero111
movf unidad2,0
addwf BDC_unidades,1
incf aumenta
csi aumenta,.8,segundo111
goto primero111
segundo111
movf BCD_unidades,0
call bin_to_bcd
moverregistros unidad4,BCD_unidades
moverregistros primero1,BCD_unidades
moverregistros acarreo1,BCD_decenas
primero222
movf decena2,0
addwf decena3,1
incf aumenta2
csi aumenta2,.8,segundo222
goto primero222
segundo222
movf decena3,0
addwf acarreo1,0
call bin_to_bcd
moverregistros primero2,BCD_unidades
moverregistros acarreo2,BCD_decenas
tercero333
movf centena2,0
addwf centena3,0
movwf aumenta3
csi aumenta3,.8,tercero3333

goto tercero333
tercero3333
movf centena3,0
addwf acarreo2,0
call bin_to_bcd
moverregistros primero3,BCD_unidades
moverregistros producto2,BCD_decenas
movf RegADC1,0
call bin_to_do
moverregistros segundo1,BCD_unidades
moverregistros segundo2,BCD_decenas
moverregistros segundo3,BCD_centenas
producto_2
moverregistros unidad1,unidad4
movf primero2,0
addwf segundo1,0
movwf decena1
call bin_to_bcd
moverregistros decena1,BCD_unidades
moverregistros acarreo3,BCD_decenas
movf acarreo3,0
addwf primero3,0
addwf segundo2,0
movwf centena1
call bin_to_bcd
moverregistros centena1,BCD_unidades
moverregistros acarreo4,BCD_decenas
movf acarreo4,0
addwf producto2,0
addwf segundo3,0
movwf producto
Escritura
mensaje 2
movf producto,0
call numdec_to_numascii
call EnviaCarLCD
movlw '.'
call EnviaCarLCD
movf centena1,0
call numdec_to_numascii
call EnviaCarLCD
movf decena1,0
call numdec_to_numascii
call EnviaCarLCD
movf unidad1,0
call numdec_to_numascii
call EnviaCarLCD
movlw ' '
call EnviaCarLCD
movlw 'v'
call EnviaCarLCD
mmilisegundo .150
goto comienzo
todo
mensaje 2

movlw '5'
call EnviaCarLCD
movlw ' '
call EnviaCarLCD
movlw 'v'
call EnviaCarLCD
mmilisegundo .150
goto comienzo
;--------------------------------include<electronicpic16f877.asm> ;libreria conteniente de generacion de retardos
include<adc.asm>
;rutinas que incluyen rutinasy registro par
a la conversion A-D
include<lcd.asm>
include<mensaje.asm>
include<conversion.asm>
end
;fin del programa

Você também pode gostar