Picproje Elektronik Sitesi

DERLEYİCİLER => PIC Assembly => Konuyu başlatan: ShooterLens - 20 Ekim 2019, 13:14:51

Başlık: p16f877 timer1 kesmesi sonucu led yanmama problemi.
Gönderen: ShooterLens - 20 Ekim 2019, 13:14:51
İ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.