Arkadaşlar basit bir uygulama, faydalı olabilir. ;)
;************************************************************
; PIC18F4550 İLE YAPILMIŞ ÖRNEK BİR LED-BUTON UYGULAMASI
;
; BAŞLIK: buton ile aralıklı yanıp sönen led P18F4550
; YAPIM TARİHİ: 19.10.2014 19:03
; YAPAN: İDO2323
; FREKANS: 4MHz(HS)
;************************************************************
; BU PROGRAM A PORTUNUN 4. PİNİNE BAĞLANMIŞ BUTON İLE LED KONTROLÜNÜ BETİMLER.
;
; PORTB NİN 7. PİNİ 1 ADET LED İE 100 OHM'LUK DİRENCE BAĞLANMIŞTIR.
; A PORTUNUN 4. BİTİ İSE 10K'LIK BİR DİRENÇLE BUTONA BAĞLANMIŞTIR.
; BU PROGRAM BUTONA BASILDIĞINDA LEDİ ARALIKLI YANIP SÖNDÜRECEKTİR.
; TEKRAR BUTONA BASILDIĞINDA İSE LEDİ SÖNDÜRECEKTİR.
;
list p=18f4550
#include <P18F4550.INC>
CONFIG FOSC = HS
;************************************************************
; DEĞİŞKENLER
Count equ 0x000
sayac1 equ 0x002
sayac2 equ 0x004
;************************************************************
org 00000h ; Reset noktası
goto Start
;************************************************************
;program kodu burada çalışıyor.
org 00020h ; Programın başlangıç adresi
Start
MOVLW 0Fh ; Configure A/D
MOVWF ADCON1 ; for digital inputs
MOVLW 07h ; Configure comparators
MOVWF CMCON ; for digital input
clrf LATB ; Portb'nin çıkışlarını sıfırla
clrf TRISB ; Portb'nin bütün pinlerini çıkış olarak ayarla
clrf Count ; count değişkeninini
;------------------------------------------------
nod
test
btfsc PORTA,4 ;PORTA'nın 4. biti o ise gecikme çağır
goto test
call GECIKME
test1
btfss PORTA,4 ;PORTA'nın 4. biti 1 ise ise gecikme çağır
goto test1
call GECIKME
;--------------------------------------------------
asd
bsf LATB,7 ;Portb'nin 7. bitini 1 yap
call GECIKME
bcf LATB,7 ;Portb'nin 7. bitini 0 yap
call GECIKME
btfss PORTA,4 ;PORTA'nın 4. biti 1 ise ise gecikme çağır
goto asd
call GECIKME
goto nod ; nod'a geri dön
; GECİKME ALT PROGRAMININ BAŞLANGICI
;----------------------------------------
GECIKME
movlw h'ff'
MOVWF sayac1
DONGU11
movlw h'ff'
MOVWF sayac2
DONGU12
DECFSZ sayac2,F
;sayac2'nin değerini 1 azalt sıfır olursa "DECFSZ sayac1,F" komutuna atla
GOTO DONGU12
DECFSZ sayac1,F
;sayac1'nin değerini 1 azalt sıfır olursa "DECFSZ sayac1,F" döngüden çık
GOTO DONGU11
RETURN
;--------------------------------------------
END