list p=18F1320
include <p18F1320.inc>
CONFIG OSC = INTIO2, WDT = OFF, LVP = OFF
cblock 0x00
advtemp
L2T
endc
LED macro x,y ;MACRO LED <PORTA>, <TRISA>
movlw x
movwf LATA ;LATA = x
movlw y
movwf TRISA ;TRISA = y
call Delay ;call the Delay subroutine
endm ;end macro
Count equ 0 ;delay loop counter
org 0x00 ; reset vector
goto Main
org 0x08 ; ISR Low vector
goto ISR
org 0x18 ; ISR Low vector
goto ISR
Main
; bsf ADCON1,0 ;make RA0 digital
CLRF PORTB ;Initialize PORTB by clearing output data latches
CLRF LATB ;Alternate method to clear output data latches
MOVLW 0x10 ;b'00010001' ; Set RB0
MOVWF ADCON1 ;digital I/O pin
MOVLW b'11001111' ;0xCF ;Value used to initialize data direction
MOVWF TRISB ;Set RB<3:0> as inputs RB<5:4> as outputs RB<7:6> as inputs
MOVLW b'11111000' ;b'11011000'
MOVWF INTCON
MOVLW b'01110000' ;b'11110101'
MOVWF INTCON2
MOVLW b'00011000' ;b'00001000'
MOVWF INTCON3
movlw b'00010101' ;enable A/D, AN5
movwf ADCON0
StartUp bsf ADCON0,GO ;go do a/d conversion
adloop btfsc ADCON0,DONE
goto adloop
;movff ADRESH,advtemp
; MOVLW 0x80
;NoChange CPFSGT ADRESH
;goto Check1
;goto adloop ;loop forever
MOVLW 0x02
MOVWF L2T
Check1 MOVLW 0x80
CPFSEQ ADRESH
goto Check2
goto LED2T
Check2 MOVLW 0x00
CPFSEQ ADRESH
goto StartUp
goto LED1T
LED1T
LED b'00000001',b'10111110'
LED b'01000000',b'10111110'
LED b'01000000',b'00111111'
LED b'10000000',b'00111111'
LED b'10000000',b'01111110'
LED b'00000001',b'01111110'
goto StartUp
LED2T
LED b'00000001',b'10111110'
LED b'01000000',b'10111110'
LED b'01000000',b'00111111'
LED b'10000000',b'00111111'
LED b'10000000',b'01111110'
LED b'00000001',b'01111110'
DECFSZ L2T
goto LED2T
goto StartUp ;loop forever
Delay decfsz Count,f ;decrement Count and skip when zero
goto $-2 ;not zero? repeat
return
ISR BCF INTCON3, 0
BCF INTCON3, 1
BCF INTCON, 0
BCF INTCON, 1
BCF INTCON, 2
call Delay
LED b'00000001',b'01111110'
call Delay
retfie
END