Hoi co'ers

Ik heb een programma wat uit 2 gedeeltes bestaat nl :
-interrupt gestuurde multiplex.
-counter die pulsjes telt.

Waneer ik deze 2 onderdelen apart test werken ze goed.
Maar nu ik deze als één programma heb samengevoegd lijkt mijn ic geen input op RA0 te accepteren ?

Als ik in het programma "in init" een ; voor CLRF PORTA zet, tellen de displays door tot 9 "hierna krijg ik natuurlijk een overflow"
Maar waneer ik dit commando weglaat lijkt er niets meer te gebeuren

Ik heb ook andere inputs ra1 en ra2 geprobeerd maar ook deze werken niet.
Weet iemand hoe ik de input werkend krijg ?
Groeten beest.

#include <p16F690.inc>
 
    __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
 	errorlevel -302

		cblock	0x20
		puls			; counter register
		d1		        ; puls-width delay
		d2
		endc	

pclath_temp	equ	0x70
w_temp		equ	0x71
status_temp     equ	0x72
digcount	equ	0x73
digit1		equ	0x74
digit2		equ	0x75
digit3		equ	0x76
digit4		equ	0x77

maxdigits	equ		d'2' 		;max d'4'
      		org 	0x000
 			goto	Init

Irq		org	0x004	    ; interrupt vector location

		movwf	w_temp      ; save off current W register contents
		movf	status,w    ; move status register into W register
		movwf	status_temp ; save off contents of STATUS register
		movf	pclath,w    ; move pclath register into W register
		movwf	pclath_temp ; save off contents of PCLATH register

		movf	digcount,w		
 
		banksel	portb			
		call	digtab			; select digit
		movwf	portb
		movlw	digit1
		movwf	fsr
		movf	digcount,w
		addwf	fsr,f
		movf	indf,w
		call	segtab			; set segment data
		movwf	portc

		incf	digcount,f
		movf	digcount,w
		xorlw	maxdigits
		btfsc	status,z
		clrf	digcount
 
		bcf	intcon,t0if
		goto	restore
 
segtab		addwf	pcl,f
		dt	0x0c,0xe6,0x6e,0x2d,0x6b,0xeb,0x0e,0xef,0x6f,0xcf	; 0 t/m 9
 
digtab		addwf	pcl,f
		dt	0x20,0x40,0x80,0x10		; multiplex digit's
 
restore	
		movf	pclath_temp,w	; retrieve copy of PCLATH register
		movwf	pclath		; restore pre-isr PCLATH register contents	
		movf	status_temp,w	; retrieve copy of STATUS register
		movwf	status	        ; restore pre-isr STATUS register contents
		swapf	w_temp,f
		swapf	w_temp,w        ; restore pre-isr W register contents
		retfie		        ; return from interrupt
 
Init		
		banksel	tmr0
		clrf	tmr0
		clrf	digcount
		bsf		intcon,t0ie
		bsf		intcon,gie	
		bsf		intcon,peie
 
		banksel ansel
		clrf	ansel		; i/o digital
		clrf	anselh
		banksel option_reg
		movlw	b'10000011'			
		movwf	option_reg	; Set option reg.
 
		banksel trisa
		movlw	b'00000001'     ; RA0 = input
		movwf	trisa
		movlw	b'00000000'	; all other's output
		movwf	trisb	
		movlw	b'00000000'     ; set up ports	
		movwf	trisc
		
		clrf	porta		; clear porta
		clrf	puls		; clear counter register

e1		movlw	d'0'
		movwf	digit1
		movlw	d'9'
		movwf	digit2		; output value
		call	chsw

e2		incf	digit1,	f	; output value +1
		call	chsw		; repeat this
		goto	e2

pr		clrf	puls		;set counter register to zero
		return
lkagain	        call	delay		;pulswidth delay 
chsw	        movf	puls,	w	;put counter value in W
		btfsc	porta,	0	;is porta,0 1
		incf	puls,	f	;increment f+1
		xorlw	d'2'		;check of w=2
		btfsc	status,	z	;is w 2
		goto	pr	        ;goto pr
		goto	lkagain		;else look for 2nd pulse
	

lo		goto	lo	

;-----------delay 0,135s----------
delay
	movlw	0x76
	movwf	d1
	movlw	0x6A
	movwf	d2
Delay_01
	decfsz	d1, f
	goto	$+2
	decfsz	d2, f
	goto	Delay_01
	goto	$+1
	nop
	return
 
		end

Het zal waarschijnlijk een stuk beter werken als je na de TRIS instructies weer teruggaat naar de juiste bank (0)...

Dat was het probleem ja, nu werkt het progje goed :D
thnx