;********************************************************************* ;--RESET VECTOR RES_VECT ORG 0x0000 ; processor reset vector GOTO init ; go to beginning of program ;********************************************************************* ;--HIGH PRIORITY INTERRUPT VECTOR ISRH ; Run the High Priority Interrupt Service Routine ORG 0x0008 GOTO high_isr ;********************************************************************* init: ;-----------8MHz interner Osc. ; XTAL EQU d'8' ;fosc=4MHz WC_MULT EQU XTAL/d'4' ;fosc/working cycles (wc) ; ;--INTOSC DS.16ff BANKSEL OSCCON ;default b'00110100' ; b7 =0 Device enters Sleep mode on SLEEP instruction ; b6-4=101 fosc=4MHz, 111=16MHz, 110=(MHz ; b3 =0 IntOsc in use ; b2 =0 Flag 1/0 HFINTOSC is/not stable ; b1-0=10 Internal oscillator block is selected movlw b'01110010' movwf OSCCON ; ;--TMR= als Taktgeber für 4ms-Interruptinterval ; ;--TMR0 Overflow is used for Interrupt DS.91 BANKSEL T0CON ;bank15 ;default b'11111111' ; b7 =1 Enable TMR0 ; b6 =1 1/0 TMR0 configured as 8/16Bit-Timer ; b5 =0 TMR= cloc souource is INTOSC ; b4 =0 unused ; b3 =0 TMR0 rescaler is assigned ; b2:0=011 1:16 prescaler value, 100 = 1:32, 101 = 1:64 movlw b'11000100' movwf T0CON ; movlw b'10100000' ;High/Low/Pheripheral interrupts enabled movwf INTCON ; ; ;********************************************************************* main: ; GOTO main ;********************************************************************* ;--HIGH PRIORITY-INTERRUPT SERVICE ROUTINE ;********************************************************************* CODE ;let linker place high ISR routine high_isr: ;Insert High Priority ISR Here bcf INTCON,T0IF ;b2=0 clear TMR0 overflow flag MOVFF .6,isrDelay h_isr_ajust: decfsz isrDelay GOTO h_isr_ajust nop nop nop ; movlw .7 ;Preset value TMR0 movwf TMR0 ;Preset Timer0 ; h_isr_clock: movlw .250 xorwf cntISR,w btfss STATUS,Z GOTO h_isr_display incf cntSekunden,f clrf cntISR ; movlw .60 xorwf cntSekunden,w btfss STATUS,Z GOTO h_isr_display incf cntMinuten,f clrf cntSekunden ; movlw .60 xorwf cntMinuten,w btfss STATUS,Z GOTO h_isr_display incf cntStunden,f clrf cntMinuten ; ; movlw .24 ;Tage könnten auch durch LED's symbolisiert ; xorwf cntStunden,w ;werden ; btfss STATUS,Z ; GOTO isr_debounce ; incf cntDays,f ; clrf cntStunden h_isr_end: RETFIE FAST ;*********************************************************************