LIST P=12C671 TMR0 equ 0x01 STATUS equ 0x03 GPIO equ 0x05 INTCON equ 0x0b PIR1 equ 0x0c ADRES equ 0x1e ADCON0 equ 0x1f ADCON1 equ 0x9f OPT equ 0x81 port_dir equ 0x85 high_data equ 0x21 low_data equ 0x22 out_status equ 0x23 temp equ 0x24 org 0x0 ; goto main ; ; org 0x4 ; movf GPIO, 0 ; movwf temp ; rrf temp, 1 ; rrf temp, 1 ; rrf temp, 1 ; movf temp, 0 ; andlw 0x07 ; addlw 0x80 ; option ; btfss out_status, 0 ; goto set_high ; goto set_low ; set_high ; bsf out_status, 0 ; bsf GPIO, 2 ; movlw 0x41 ; A/D input from AN0 movwf ADCON0 ; call delay ; data acquisition bsf ADCON0, 2 ; start A/D conversion loop_1 btfsc ADCON0, 2 ; goto loop_1 ; movf ADRES, 0 ; movwf TMR0 ; bcf INTCON, 2 ; clear TMR0 interrupt flag retfie ; set_low ; bcf out_status, 0 ; bcf GPIO, 2 ; movlw 0x49 ; A/D input from AN1 movwf ADCON0 ; call delay ; data acquisition bsf ADCON0, 2 ; start A/D conversion loop_2 btfsc ADCON0, 2 ; goto loop_2 ; movf ADRES, 0 ; movwf TMR0 ; bcf INTCON, 2 ; clear TMR0 interrupt flag retfie ; ; delay ; movlw 0x03 ; movwf temp ; dly_lp decfsz temp, 1 ; goto dly_lp ; return ; ; main ; clrf GPIO ; bsf STATUS, 5 ; bank 1 movlw 0x85 ; movwf OPT ; movlw 0x0b ; movwf port_dir ; movlw 0x04 ; movwf ADCON1 ; bcf STATUS, 5 ; bank 0 movlw 0xa0 ; movwf INTCON ; loop ; endless loop goto loop ; ; end