Elektronik / Mikrodenetleyici Projeleri/

PIC16F84 ile Buton Kontrollü Led Efekt Devresi

Sponsorlu Bağlantılar

Basit bir uygulama PIc ile Buton Kontrolü konusunda faydalı olabilcek bir kaynak

Program temel olarak PORTA ya bağlı 4 adet butonu sırası ile kontrol edip
butonlara basılıp basılmadığını kontrol ediyor. Herhangi bir butona basıldığı zaman
programlama aşamasında bizim tasarladığımız komutları yerine getiriyor(ilk 4 ledi yak, son 4 ledi yak vb)

Ledlerin flaş sayısını her BUTON için farklı farklı yapabilirsiniz.Bunun için;

MOVLW 0X03
MOVWF KNT

komut satırlarında yer alan ‘0x03’ değeri yerine istedğiniz değeri(0XA3) yazmanız gerekecek.

Flaş sayısın en fazla 255 kere tekrarlatabilirsinz. Çünkü 0x03 yerine
yazacağınız en büyük değer 0xFF dir bunun karşılığıda 255’e denk gelir.

Uygulamanın kod ve simülasyon dosyalar: PIC16F84 ile Buton Kontrollü Led Efekt Devresi

Dosya indirme LINK listesi (TXT formatında) link-1373.zip şifre-pass: 320volt.com

Akış Diagramı

akis_diagrami

	;PIC16F84 İLE 
	;BUTON KONTROLLÜ LED EFEKT DEVRESİ
	;-------------------------------------
	;WWW.320VOLT.COM
	;-------------------------------------
	LIST	 P=16F84		;PIC16F84' Tanıt	
	INCLUDE	 "P16F84.INC"	;PIC'in INCLUDE DOSYALARI TANIT
SAY1	EQU	0X0C			
SAY2	EQU	0X0D
KNT		EQU	0X0E			
	BSF		STATUS,5		;BANK1'E GEÇ
	CLRF	TRISB			;TRIB'Yİ TEMİZLE(PORTB ÇIKIŞ)
	MOVLW	0XFF			;W'YE h'FF' YÜKLE
	MOVWF	TRISA			;W'Yİ TRISA'YA YÜKLE(PORTA GİRİŞ)
	BCF		STATUS,5		;BANK0'A GEÇ
	CLRF	PORTB			;PORTB'Yİ TEMİZLE
BIR_TEST
	BTFSC	PORTA,0			;PORTA'NIN 0. BİTİ '0' MI?
	GOTO	IKI_TEST		;HAYIR. IKI_TEST ETİKETİNE GİT
	MOVLW	0X03			;EVET.	W'YE h'03' YÜKLE
	MOVWF	KNT				;W'Yİ KNT'YE YÜKLE
BIR
	MOVLW	0X0F			;W'YE h'0F' YÜKLE
	MOVWF	PORTB			;W'Yİ PORTB'DEN ÇIK
	CALL	ZAMAN			;ZAMAN ALT PROGRAMINI ÇAĞIR
	CLRF	PORTB			;PORTB'Yİ TEMİZLE
	CALL	ZAMAN			;ZAMAN ALT PROGRAMINI ÇAĞIR
	DECFSZ	KNT,F			;KNT'DEN '1' ÇIKAR KNT'YE YÜKLE. KNT '0' Mİ?
	GOTO	BIR				;HAYIR. BIR ETİKETİNE GİT
	GOTO	BIR_TEST		;EVET. BIR_TEST ETİKETİNE GİT
IKI_TEST
	BTFSC	PORTA,1			;PORTA'NIN 1. BİTİ 'O' MI?
	GOTO	UC_TEST			;HAYIR. UC_TEST ETİKETİNE GİT
	MOVLW	0X03			;EVET. W'YE h'03' YÜKLE
	MOVWF	KNT				;W'Yİ KNT'YE YÜKLE
IKI
	MOVLW	0XF0			;W'YE h'F0' YÜKLE
	MOVWF	PORTB			;W'Yİ PORTB'DEN ÇIK
	CALL	ZAMAN			;ZAMAN ALT PROGRAMINI ÇAĞIR
	CLRF	PORTB			;PORTB'Yİ TEMİZLE
	CALL	ZAMAN			;ZAMAN ALT PROGRAMINI ÇAĞIR
	DECFSZ	KNT,F			;KNT'DEN '1' ÇIKAR KNT'YE YÜKLE. KNT '0' Mİ?
	GOTO	IKI				;HAYIR. IKI ETİKETİNE GİT
	GOTO	BIR_TEST		;EVET. BIR_TEST ETİKETİNE GİT
UC_TEST
	BTFSC	PORTA,2			;PORTA'NIN 2. BİTİ 'O' MI?
	GOTO	DORT_TEST		;HAYIR. DORT_TEST ETİKETİNE GİT
	MOVLW	0X03			;EVET. W'YE h'03' YÜKLE
	MOVWF	KNTQ			;W'Yİ KNT'YE YÜKLE
UC
	MOVLW	0XFF			;W'YE h'FF' YÜKLE
	MOVWF	PORTB			;W'Yİ PORTB'DEN ÇIK
	CALL	ZAMAN			;ZAMAN ALT PROGRAMINI ÇAĞIR
	CLRF	PORTB			;PORTB'Yİ TEMİZLE
	CALL	ZAMAN			;ZAMAN ALT PROGRAMINI ÇAĞIR
	DECFSZ	KNT,F			;KNT'DEN '1' ÇIKAR KNT'YE YÜKLE. KNT '0' Mİ?
	GOTO	UC				;HAYIR. UC ETİKETİNE GİT
	GOTO	BIR_TEST		;EVET. BIR_TEST ETİKETİNE GİT
DORT_TEST
	BTFSC	PORTA,3			;PORTA'NIN 3. BİTİ 'O' MI?
	GOTO	BIR_TEST		;HAYIR. BIR_TEST ETİKETİNE GİT
	MOVLW	0X03			;EVET. W'YE h'03' YÜKLE
	MOVWF	KNT				;W'Yİ KNT'YE YÜKLE
DORT
	MOVLW	0X0F			;W'YE h'0F' YÜKLE
	MOVWF	PORTB			;W'Yİ PORTB'DEN ÇIK
	CALL	ZAMAN			;ZAMAN ALT PROGRAMINI ÇAĞIR
	MOVLW	0XF0			;W'YE h'F0' YÜKLE
	MOVWF	PORTB			;W'Yİ PORTB'DEN ÇIK
	CALL	ZAMAN			;ZAMAN ALT PROGRAMINI ÇAĞIR
	DECFSZ	KNT,F			;KNT'DEN '1' ÇIKAR KNT'YE YÜKLE. KNT '0' Mİ?
	GOTO	DORT			;HAYIR. UC ETİKETİNE GİT
	CLRF	PORTB			;EVET. PORTB'Yİ TEMİZLE
	GOTO	BIR_TEST		;BIR_TEST ETİKETİNE GİT
ZAMAN		
	MOVLW	0XFF			;W'YE h'FF' YÜKLE
	MOVWF	SAY1			;W'Yİ SAY1'E YÜKLE 
TEK1
	MOVLW	0XFF			;W'YE h'FF' YÜKLE
	MOVWF	SAY2			;W'Yİ SAY2'E YÜKLE 
TEK2		
	DECFSZ	SAY2,F			;SAY2'DEN '1' ÇIKAR SAY2'YE YÜKLE. SAY2 '0' Mİ?		
	GOTO	TEK2			;HAYIR. TEK2 ETİKETİNE GİT
	DECFSZ	SAY1,F			;EVET. SAY1'DEN '1' ÇIKAR SAY1'YE YÜKLE. SAY1 '0' Mİ?	
	GOTO	TEK1			;HAYIR. TEK1 ETİKETİNE GİT
	RETURN					;EVET. ALT PROGRAMIN SONU 	
	END						;PROGRAMIN SONU 


  • kprm

    iyi günler hocam burada bir iki sorum olacak acaba bu videoda kullandığınız kristal 4mhz mi? ayrıca pic 16f84a yı programlarken configuration ayarları ne olmalı