;=======SECONDS.ASM=================================9/30/02==
list p=16f870
#include "p16f870.inc" ;processor specific variable definitions
__config h'3f71'
radix hex
;------------------------------------------------------------
;seconds demo
; external oscillator, 32768 Hz, timer 1, prescaler 1:1
;------------------------------------------------------------
; cpu equates (memory map)
;------------------------------------------------------------
;------------------------------------------------------------
org 0x000
goto start ;skip over location pointed to by
; interrupt vector
org 0x004
goto iserv
;
start:
bsf STATUS, RP0 ;switch to bank 1
movlw b'00000000' ;port B outputs
movwf TRISB
movlw b'00000110' ;turn off A/D, port A
movwf ADCON1
bcf STATUS, RP0 ;switch back to bank 0
movlw b'00000000' ;port B lines low
movwf PORTB
bcf INTCON, 7 ;disable global interrupts
bcf INTCON, 6 ;disable peripheral interrupts
bsf STATUS, RP0 ;bank 1
bcf PIE1, 0 ;disable tmr1 interrupts
bcf STATUS, RP0 ;bank 0
bcf PIR1, 0 ;clear timer 1 interrupt flag
movlw b'00001010' ;prescaler and tmr1 setup,
movwf T1CON ; tmr1 off
clrf TMR1H ;clear timer 1 high
clrf TMR1L ;clear timer 1 low, clear prescaler
bsf INTCON, 7 ;enable global interrupts
bsf INTCON, 6 ;enable peripheral interrupts
bsf STATUS, RP0 ;bank 1
bsf PIE1, 0 ;enable tmr1 interrupts
bcf STATUS, RP0 ;bank 0
bsf T1CON, 0 ;timer 1 on
circle:
goto circle
;------------------------------------------------------------
iserv:
bcf PIR1, 0 ;clear timer 1 interrupt flag
bsf TMR1H, 7 ;set up timer 1 to roll over at
; 32,768 counts
btfss PORTB, 0 ;port B, bit 0 STATUS?
goto setbit ;bit is clear
clrbit:
bcf PORTB, 0 ;clear port B, bit 0
retfie ;return from interrupt
setbit:
bsf PORTB, 0 ;set port B, bit 0
retfie ;return from interrupt
;------------------------------------------------------------
end
;------------------------------------------------------------
;at device programming time, select:
; memory unprotected
; watchdog timer disabled (default is enabled)
; standard crystal XT (using 4 MHz osc for test)
; power-up timer on
; brown-out reset enabled
; lvp disabled
; debug mode disabled