;PORTA.1 BUTON
;PORTB.1 LED
BASLA:
PORTB.1=1
PAUSE 5000
PORTB.1=0
PAUSE 5000
GOTO BASLA
5 saniyede bir yanıp sonen led olusturdum,kesme ile nasıl;butona basıldıgını gosterıp baska bir etikete gonderebılırım??
aslında basit bir "if" komutuyla porta ya basılıp basılmadıgını sorabılırım fakat bunu her 5sanıyee bir sormus olacak program,ben dongu donerken dısardan bi pulse gonderdıgımı nasıl gosterıp baska bir etikete gonderebılırım??
RB0 hardware interruptını kullanabilirsin.butonu RB0 a bağla.bu pinde değişme olduğunda kesme oluştur.
dostum bu aradığına benzer bir örnek pbp nun sample dizininde zaten var.
' On Interrupt - Interrupts in BASIC
' Turn LED on. Interrupt on PORTB.0 (INTE) turns LED off.
' Program waits .5 seconds and turns LED back on.
led var PORTB.7
OPTION_REG = $7f ' Enable PORTB pullups
On Interrupt Goto myint ' Define interrupt handler
INTCON = $90 ' Enable INTE interrupt
loop: High led ' Turn LED on
Goto loop ' Do it forever
' Interrupt handler
Disable ' No interrupts past this point
myint: Low led ' If we get here, turn LED off
Pause 500 ' Wait .5 seconds
INTCON.1 = 0 ' Clear interrupt flag
Resume ' Return to main program
Enable
list p=16F877
include p16f877.inc
org 00
goto main
org 04h
goto interrupt
include genel.inc
main bsf STATUS,5
movlw 01h ;portb 0 giriş diğerleri çıkış
movwf TRISB
movlw 0FFh
movwf OPTION_REG
bcf STATUS,5
bcf INTCON,1
bsf INTCON,7
bsf INTCON,4
flash bsf portb,1
waitms .255
bcf portb,1
waitms .255
goto flash
interrupt bcf INTCON,1
call done
retfie
done bsf portb,2
return
end
buda asm örneği