Documentos de Académico
Documentos de Profesional
Documentos de Cultura
include <P16F877A.INC>
CBLOCK .32
AUX_XY
AUX_XZ
COMANDO
ENDC
ORG 00H
GOTO INICIO
CONVER
BSF
STATUS,RP0
BCF
STATUS,RP1
MOVLW B'10001110'; B0-B3 CONF CANALESD A/D Y VREF
;LO ANTERIOA ES A0 ANALOGO
;B4_B6: NO IMPLEMENTADO
;B7=1, 6 BITS DE > PESO EN ADRESSH SON IGUALES A 0
MOVWF
ADCON1
BCF
STATUS,RP0
CALL
RETARDO_20MICROS
BSF
ADCON0,2;ADCON0,GO = INICIA
INICIO
BSF
BCF
MOVLW
MOVWF
MOVLW
PREESCALER AL WDT
MOVWF
;
MOVLW
MOVWF
CLRF
;
MOVLW
;
MOVWF
BCF
MOVLW
MOVWF
STATUS,RP0
STATUS,RP1
D'6'
ADCON1
B'00111000' ; POR FLANCO DESCENDENTE,
OPTION_REG
B'00000001'
TRISC
TRISD
B'00010000'
TRISA
STATUS,RP0
B'00000111' ; EL B0 HABILITAR EL TMR1
T1CON
CLRF
goto
-------------------MOST
MOVLW
MOVWF mulcnd
MOVLW
MOVWF mulplr
COMANDO
dfgh
.250
.25
MOS
CALL
CALL
CALL
CALL
CALL
MOVLW
MOVWF mulcnd
.250
MOVLW
MOVWF mulplr
.25
INICIAR_PANTALLA
LCD_BORRA
LCD_CURSOR_INCREMENTO
LCD_CURSOR_OFF
LCD_LINEA1
CALL
Multip
MOVF
MOVWF
MOVF
MOVWF
CALL decdatohh
MOVF digh0,W
ADDLW
CALL
MOVF digh1,W
ADDLW
CALL
MOVF digh2,W
ADDLW
CALL
MOVF digh3,W
ADDLW
CALL
CALL
GOTO
l_byte,W
datol
h_byte,W
datoh
MOVLW
MOVWF
CALL
D'48'
LCD_ENVIA_CARACTER
D'48'
LCD_ENVIA_CARACTER
D'48'
LCD_ENVIA_CARACTER
D'48'
LCD_ENVIA_CARACTER
RETARDO_1S
MOS
B'10001000'
INTCON
ESPERAR_QUITAR_DEDO
dfgh
CALL
INICIAR_PANTALLA
CALL
LCD_BORRA
CALL LCD_CURSOR_INCREMENTO
CALL
LCD_CURSOR_OFF
CALL
LCD_LINEA1
MOVLW 'H'
CALL
LCD_ENVIA_CARACTER
MOVLW 'U'
CALL
LCD_ENVIA_CARACTER
MOVLW 'M'
CALL
LCD_ENVIA_CARACTER
MOVLW 'E'
CALL
LCD_ENVIA_CARACTER
MOVLW 'D'
CALL
LCD_ENVIA_CARACTER
MOVLW 'A'
CALL
LCD_ENVIA_CARACTER
MOVLW 'D'
CALL
LCD_ENVIA_CARACTER
MOVLW ':'
CALL
LCD_ENVIA_CARACTER
MOSTRAR_DATO_LCD
CALL
LCD_LINEA2
CLRF TMR1L
CLRF TMR1H
CALL
RETARDO_1S
MOVF
TMR1L,W
MOVWF AUX_XY
MOVF
TMR1H,W
MOVWF AUX_XZ
CALL
MOVF
MOVWF
MOVF
MOVWF
CALL decdatohh
MOVF digh0,W
SUBLW
BTFSS
GOTO
CLRF
movlw
addwf
LCD_LINEA3
AUX_XY,W
datol
AUX_XZ,W
datoh
MOVF
MOVWF mulcnd
MOVLW
MOVWF mulplr
CALL
MOVF h_byte ,W
MOVWF AUX1
MOVF l_byte ,W
MOVWF AUX2
digh1
MOVF digh2,W
MOVWF mulcnd
MOVLW
MOVWF mulplr
CALL
MOVF l_byte ,W
MOVWF AUX3
MOVF
ADDWF
ADDWF
MOVF
;
.100
Multip
.10
NOP
NOP
NOP
NOP
NOP
ESPERAR_CONVERSION
BTFSC
ADCON0,2; TERMINO DE CONVERTIR?
GOTO
ESPERAR_CONVERSION
;YA TERMINA SE PUIEDEN LEER LOS RESULTADOS
MOVF
ADRESH, W
MOVWF datoh
BSF
STATUS,RP0
BCF
STATUS,RP1
MOVF
ADRESL,W
BCF
STATUS,RP0
MOVWF
datol
RETURN
INICIO
BSF
STATUS,RP0
BCF
STATUS,RP1
MOVLW D'14' ; solo A0 es analogo
MOVWF
ADCON1
clrf
TRISC
CLRF
TRISD
MOVLW B'000001101'
MOVWF TRISA
BCF
STATUS,RP0
CALL
INICIAR_PANTALLA
CALL
LCD_BORRA
CALL
LCD_CURSOR_INCREMENTO
CALL
LCD_CURSOR_OFF
CALL
LCD_LINEA1
MOVLW 'T'
CALL
LCD_ENVIA_CARACTER
MOVLW 'E'
CALL
LCD_ENVIA_CARACTER
MOVLW 'M'
CALL
LCD_ENVIA_CARACTER
MOVLW 'P'
CALL
LCD_ENVIA_CARACTER
MOVLW 'E'
CALL
LCD_ENVIA_CARACTER
MOVLW 'R'
CALL
LCD_ENVIA_CARACTER
MOVLW 'A'
CALL
LCD_ENVIA_CARACTER
MOVLW 'T'
CALL
LCD_ENVIA_CARACTER
MOVLW 'U'
CALL
LCD_ENVIA_CARACTER
MOVLW 'R'
CALL
LCD_ENVIA_CARACTER
MOVLW 'A'
CALL
LCD_ENVIA_CARACTER
MOVLW ':'
CALL
LCD_ENVIA_CARACTER
MOSTRAR_DATO_LCD
CALL
LCD_LINEA2
; LEER EL CANAL 0
MOVLW B'10000001'
;B0=1 ENCIENDE MODULO AD ;B1=X NO IMPLEMENTADO
;B2=0 NO INICIE CONVERTIDOR ; B3-B5= SELECCION A0
;B6-B7=FREC CONVER (1:32)
MOVWF
ADCON0
CALL
CONVER
CALL
decdatohh; calcula millar,centena,decena y
unidad
; requiere valores en datol y datoh
MOVF digh0,W ;digh0 =millar
ADDLW D'48' ;
CALL
LCD_ENVIA_CARACTER
MOVF digh1,W;digh1 =centena
ADDLW D'48'
CALL
LCD_ENVIA_CARACTER
MOVF digh2,W; ;digh2 =decena
ADDLW D'48'
CALL
LCD_ENVIA_CARACTER
MOVF digh3,W ; ;digh3 =unidad
ADDLW D'48'
CALL
LCD_ENVIA_CARACTER
CALL LCD_LINEA3
MOVF ADRESH,W
MOVWF
dividendoh
BSF
STATUS,RP0
Movf
ADRESL,W
BCF
STATUS,RP0
MOVWF dividendol
movlw d'2'
movwf divisor
CALL
divi1
movf cocienteh,w
movwf datoh
movf cocientel,w
movwf datol
CALL
unidad
; requiere valores en datol y datoh
MOVF digh0,W ;digh0 =millar
ADDLW D'48' ;
CALL
LCD_ENVIA_CARACTER
MOVF digh1,W;digh1 =centena
ADDLW D'48'
CALL
LCD_ENVIA_CARACTER
MOVF digh2,W; ;digh2 =decena
ADDLW D'48'
CALL
LCD_ENVIA_CARACTER
MOVF digh3,W ; ;digh3 =unidad
ADDLW D'48'
CALL
LCD_ENVIA_CARACTER
CALL
GOTO
INCLUDE <P16F877.INC>
CBLOCK
.32
CONTADOR
CONTADOR2
BH
BL
ENDC
#DEFINE DCEN PORTC,0
#DEFINE DDEC PORTC,1
#DEFINE DUNI PORTC,2
ORG
00H
GOTO INICIO
TABLA_7SEG_ANODO
ADDWF
RETLW B'11000000';0
RETLW B'11111001';1
RETLW B'10100100';2
RETLW B'10110000';3
RETLW B'10011001';4
RETLW
RETLW
RETLW
RETLW
RETLW
B'10010010';5
B'10000011';6
B'11111000';7
B'10000000';8
B'10011000';9
CONVERSION
BSF
STATUS,RP0
BCF
STATUS,RP1
MOVLW B'10001110'
MOVWF
ADCON1
BCF
STATUS,RP0
BSF
ADCON0,2
CALL
RETARDO_20MICROS
ESPERAR_CONVERSION
BTFSC ADCON0,2
GOTO ESPERAR_CONVERSION
;SALTA A ESTE PUNTO UNA VEZ TERMINA
; LUEGO YA PUEDO LEER ADRESSH Y ADRESSL
; COMO EXISTE UNA SUBRUTINA
;QUE CALUCULA MILLAR,CENTENA,DECENA Y UNIDAD
; EL RESULTADO LO ASIGNAMOS A BH Y BL
;BH<-- ADRESSH
;BL<-- ADRESSL
MOVF
ADRESH,W
MOVWF BH
BSF
STATUS,RP0
BCF
STATUS,RP1
MOVF
ADRESL,W
BCF
STATUS,RP0
MOVWF BL
BCF
ADCON0,0;APAGA EL MODULO A/D
RETURN
INICIO
BSF
STATUS,RP0
BCF
STATUS,RP1
;SOLO REQUIERO A0 SEA ANALOGO
MOVLW D'14'
MOVWF
ADCON1
MOVLW B'00000001'
MOVWF TRISA
CLRF
TRISB
CLRF
TRISC
BCF
STATUS,RP0
BSF
DCEN
BSF
DDEC
BSF
DUNI
MOVLW D'0'
MOVWF PORTB
LEER_TEMPERATURA
; LO PRIMERO ES CONFIGURAR ADCON0
MOVLW B'10000001'
MOVWF
ADCON0
CALL
CONVERSION
; EL RESULTADO BAJO LO TINE BL
; ES NECESARIO CALCULAR:CEN,DEC,UNI
RETARDO_1S
MOSTRAR_DATO_LCD
INCLUDE <MATEMATICAS.INC>
INCLUDE <RETARDOS.INC>
INCLUDE <LCD_8BIT_4F.INC>
END
digh3,W
RETARDO_1S
MOSTRAR_DATO_LCD
digh0,W
INCLUDE
INCLUDE
INCLUDE
INCLUDE
INCLUDE
END
PCL,F
RETARDO_20MICROS ;2 CM
MOVLW
D'4'
;
1CM
MOVWF
CONTADOR;1CM =K
CICLO_INT
NOP
;K
DECFSZ
CONTADOR,F;(K-1)+2
GOTO
CICLO_INT; (K-1)*2
RETURN
;2CM
; 4+K+K+1+2K-2+2=5+4K
; SI DESEA 20 MICROS k DEBE SER 4
RETARDO_10MS ;2CM
MOVLW D'100' ;1CM
MOVWF
CONTADOR;1CM CONTADOR= k
CICLO_EXT_10MS
MOVLW D'24'
;K VECES
MOVWF CONTADOR2;CONTADOR2=T ;K VECES
CICLO_INT_10MS
NOP
;KT
DECFSZ
CONTADOR2,F ; ((T-1)+2)K=TK+K
GOTO
CICLO_INT_10MS; ((T-1)*2)k=2TK-2K
DECFSZ
CONTADOR,F ;(K-1)+2=K+1
GOTO
CICLO_EXT_10MS ; (K1)*2=2K-2
RETURN ;2CM
;4+2K+KT+KT+K+2KT-2K+K+1+2K-2+2
;=5+4K+4KT SI K=100 ENTONCES =5+400+400T
;10000-405=400T
9595/400=T T=24
; TIEMPO=5+400+400*24=405+9600=10005
Multip
AUX2,W
AUX3,W
CALL
GOTO
MOVF
.7
STATUS,Z
RES6
digh0
.2
digh1,f
CONVERSION
<RETARDOS.INC>
<LCD_8BIT_4F.INC>
<MATEMATICAS.INC>
<TECLADO.INC>
<EEPROM.INC>
MOVF CEN,W
CALL
MOVWF
BCF
BSF
BSF
CALL
TABLA_7SEG_ANODO
PORTB
DCEN
DDEC
DUNI
RETARDO_10MS
MOVF DEC,W
CALL
MOVWF
BSF
BCF
BSF
CALL
TABLA_7SEG_ANODO
PORTB
DCEN
DDEC
DUNI
RETARDO_10MS
MOVF UNI,W
CALL
MOVWF
BSF
BSF
BCF
CALL
TABLA_7SEG_ANODO
PORTB
DCEN
DDEC
DUNI
RETARDO_10MS
GOTO LEER_TEMPERATURA
INCLUDE <MATEMATICAS.INC>
END