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.
Akış Diagramı
;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
Uygulamanın kod ve simülasyon dosyaları;
Şifre-Pass: 320volt.com
Yayım tarihi: 2008/05/31 Etiketler: buton, efekt, kontrol, led uygulamaları, microchip pic projeleri, PIC16F84 örnekleri
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ı