buton ile aralıklı yanıp sönen led P18F4550

Başlatan ido2323, 19 Ekim 2014, 19:15:12

ido2323

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