list p=16f877A ;
#include "p16f877
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _WRT_OFF & _LVP_ON & _CPD_OFF
resultado1_adc equ 0x20
resultado2_adc equ 0x21
delay equ 0x22 ;
ORG 0x00
;
inicializacion del micro
bcf STATUS, RP0
bcf STATUS, RP1 ;seleccion Bank0
clrf PORTA
movlw 0x1F
movwf PORTB
bsf STATUS,RP0 ;seleccion Bank1
movlw 0x02
movwf ADCON1
movlw 0x1F
movwf TRISA
movlw 0xC0
movwf TRISB
bcf STATUS,RP0 ;seleccion Bank0
mainloop:
;senso ADC0
movlw 0x81
movwf ADCON0 ;
ADCS1=1 ,ADON=1
movlw 0x32
movwf delay
d0:
decfsz delay ;delay necesario para cumplir
goto d0 ;requisitos de Tadq
movlw 0x85
movwf ADCON0 ;
ADCS1=1 ,GO=1 ,ADON=1
espero_adc0:
nop
btfsc ADCON0 , 2
goto espero_adc0
;almaceno valor 1
movfw ADRESH
movwf resultado1_adc
;senso ADC1
movlw 0x89 ; ADCS1=1 ,CHS0=1 ,ADON=1
movwf ADCON0
movlw 0x32
movwf delay
d1:
decfsz delay ;delay necesario para cumplir
goto d1 ;requisitos de Tadq
movlw 0x8D ; ADCS1=1 ,CHS0=1 ,GO=1 ,ADON=1
movwf ADCON0
espero_adc1:
nop
btfsc ADCON0 , 2
goto espero_adc1
;almaceno valor 2
movfw ADRESH
movwf resultado2_adc
;proceso de comparacion
movfw resultado1_adc ;
bsf STATUS , C ;Set bit C,preparado para comparacion
subwf resultado2_adc
btfsc STATUS, Z
goto adc0_igual_adc1
btfsc STATUS , C
goto adc0_menor_adc1
;muestro resultado
;adc0 mayor a adc1(Vin<Vref)
bsf PORTB,0
bsf PORTB,1
bcf PORTB,2
goto sensa_adc2
adc0_menor_adc1:
bsf PORTB,2
bsf PORTB,1
bcf PORTB,0
goto sensa_adc2
adc0_igual_adc1:
bsf PORTB,0
bsf PORTB,2
bcf PORTB,1
;senso ADC2
sensa_adc2:
movlw 0x91
movwf ADCON0 ; ADCS1=1 ,CHS1=1 ,ADON=1
movlw 0x32
movwf delay
d2:
decfsz delay ;delay necesario para cumplir
goto d2 ;requisitos de Tadq
movlw 0x95
movwf ADCON0 ; ADCS1=1 ,CHS1=1 ,GO=1 ,ADON=1
espero_adc2:
nop
btfsc ADCON0 , 2
goto espero_adc2
;almaceno valor 1
movfw ADRESH
movwf resultado1_adc
;senso ADC3
movlw 0x99 ; ADCS1=1 ,CHS1=1 ,CHS0=1 ,ADON=1
movwf ADCON0
movlw 0x32
movwf delay
d3:
decfsz delay ;delay necesario para cumplir
goto d3 ;requisitos de Tadq
movlw 0x9D ; ADCS1=1 ,CHS1=1 ,CHS0=1 ,GO=1 ,ADON=1
movwf ADCON0
espero_adc3:
nop
btfsc ADCON0 , 2
goto espero_adc3
;almaceno valor 2
movfw ADRESH
movwf resultado2_adc
;comparo
movfw resultado1_adc ;
bsf STATUS , C ;Set bit C,preparado para comparacion
subwf resultado2_adc
btfsc STATUS, Z
goto adc2_igual_adc3
btfsc STATUS , C
goto adc2_menor_adc3
;muestro resultado
;adc2 mayor a adc3
bsf PORTB,3
bsf PORTB,4
bcf PORTB,5
goto mainloop
adc2_menor_adc3:
bsf PORTB,5
bsf PORTB,4
bcf PORTB,3
goto mainloop
adc2_igual_adc3:
bsf PORTB,3
bsf PORTB,5
bcf PORTB,4
goto mainloop ;
END