p16f877 timer1 kesmesi sonucu led yanmama problemi.

Başlatan ShooterLens, 20 Ekim 2019, 13:14:51

ShooterLens

İlk önce herkese iyi günler dilerim,mikroişlemciler dersimizde p16f877 kullaniyoruz.
Yapmak istediğim şey timer1 kesmesi kullanarak 1 saniye yanip 1 saniye sönen led yapmak.
MPLAB programinda portb ye 1 gönderdiğim gözükmesine rağmen,PROTEUS da led yanmiyor,3 gündür uğraşmama rağmen sorunu çözemedim.
Kesme oluşmadan önce istediğim ledi yakip söndürebiliyorum,ancak program kesmeye girdikten sonra port müdahalesi kapaniyor.
Datasheeti kurcaliyorum ancak pic programlamada tecrübem olmadığı için datasheetin tam olarak nasil kullanilmasi gerektiğini de tam bilmiyorum.
Kodum şudur:
   
#INCLUDE<P16F877A.INC>

    org 0x0000
	goto setup
	org 0x0004
	goto kesme
	
    
    
    loop
	goto loop
    
    setup
	banksel	PIR1
	bcf	PIR1,7
	banksel	INTCON
	bsf	INTCON,7
	bsf	INTCON,6
	bcf	INTCON,4
	bcf	INTCON,3
	bcf	INTCON,1
	bcf	INTCON,0
	banksel	PORTB
	clrf	PORTB
	banksel	TRISB
	bcf		TRISB,0
	banksel tmr1if
	clrf	0x22
	int200 equ 0x22
	clrf	0x23
	int100 equ 0x23
	clrw	
	movlw d'2'
	movwf	int200
	clrw
	movlw d'1'
	movwf	int100
	clrw
	interrupt equ 8Ch
	tmr1if	equ 0Ch
    banksel T1CON
	bcf T1CON,5
	bcf T1CON,4
	bsf	T1CON,3
	bcf	T1CON,2
	bcf	T1CON,1
	banksel	TMR1H
	clrf	TMR1H
	clrf	TMR1L
	clrw
	movlw	b'11111110'
	movwf	TMR1L
	clrw
	movlw	b'11111110'
	movwf	TMR1H
	clrw
	banksel interrupt
	bsf interrupt,0
	banksel INTCON
	bsf	INTCON,7
	bsf	INTCON,6
	banksel T1CON
	bsf	T1CON,7
	bsf	T1CON,6
	bsf	T1CON,0
    goto loop
    

    kesme
	bsf	PORTB,0
	banksel	T1CON
	bcf	T1CON,0
	bcf	interrupt,0
	banksel	PORTB
	clrf	PORTB
	banksel tmr1if
	bcf	tmr1if,0
	banksel INTCON
	bcf	INTCON,INTF
	
	banksel	TMR1H
	clrf	TMR1H
	clrf	TMR1L

	clrw
	movlw	b'11111110'
	movwf	TMR1L
	clrw
	movlw	b'11111110'
	movwf	TMR1H
	clrw
	banksel	T1CON
	bsf	T1CON,0
	banksel int200

	decfsz	int200,1
    retfie
	incf int200,1	
	decfsz	int100,1
	retfie
	incf int100,1
	goto led_yak

	led_yak
	call setup2
	call portbyak
	
	retfie

	portbyak
	banksel	PORTB
	movfw	PORTB
	xorlw	d'1'
	movwf	PORTB
	
	return

	setup2
	clrw	
	movlw d'2'
	movwf	int200
	clrw
	movlw d'1'
	movwf	int100
	clrw
	return
	

    end
Timerlere ledi rahat görmem için küçük değerler verdim,dediğim gibi portb ye 1 gönderdiği gözüküyor ancak led yanmiyor.
Saçlarimi yolmak üzereyim.