PIC başlangıç uygulaması. İki ledli flip-flop devresinin PIC ile yapılması.
AÇIKLAMALAR
Basit bir flip-flop uygulamasının pic işlemciler ile nasıl yapılacağını anlatan bu uygulama pic dünyasına ilk giriş için idealdir. Temel ve basit komutlar ile program kolayca hazırlanmaktadır. İhtiyaç olan PIC asembly derleyici ve PIC programlayıcıdır. Bunlar sitenin PIC bölümünde çeşitleriyle beraber bulunmaktadır.
Devrede PIC16F84 ün 6(PORTB,0) ve 7(PORTB,1) uçları birer 470 ohmluk koruma dirençleri ile LED lere bağlıdır. BCF ve BSF komutları ile bu uçlar "0" veya "1" yapılarak flip-flop algoritması gerçekleştirilmiştir. Devrede 4MHz lik kristal kullanılarak PIC kristal osilatörle çalıştırılmıştır. U2 (7805) entegresi PIC'in çalışma gerilimi olan(+2,,,+6V) 5V'u üretmektedir. R3 direnci ile /MCLR ucu +5V' verilmiştir
DEVRENİN AÇIK ŞEMASI
DEVRENİN BASKILI DEVRE ÇİZİMİ
DEVRENİN ASM PROGRAMI
;****************************************************************************
;PIC0001.ASM PIC16F84 ILE IKI LEDLI FLIP-FLOP UYGULAMASI
;01.2000 HUSEYIN SERIMER
;****************************************************************************
;****************************************************************************
; PROGRAM BASLANGICINDA ISLEMCI ILE ILGILI TANIMLAMALAR YAPILMALIDIR
;****************************************************************************
TANIMLAMALAR:
list p=16F84 ; DERLEYICIYE ISLEMCI TANITILIR
#include <p16F84.inc> ; PIC16F84 TANIMLAMA DOSYASI
__CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _XT_OSC
;****************************************************************************
; PROGRAMDA KULLANILAN DEGISKENLER TANIMLANMALIDIR
; DEGISKEN TANIMLARKEN DESISKENIN ALACAGI DEGER VEYA HANGI
; RAM HUCRESI OLDUGUNU GOSTERMEK YETERLIDIR
; EQU... ESITLE ANLAMINDADIR
;****************************************************************************
DEGISKENLER:
lsb equ H'0020'
msb equ H'0021'
BASLANGIC:
;****************************************************************************
; ISLEMCI RESETLENDIGINDE TUM UCLARI GIRIS DURUMUNDADIR
; ISLEMCI UCLARINI ISTENILEN DURUMA AYARLAMAK GEREKIR
; BU ISLEM GEREKTIGINDE PROGRAMIN BASKA ADIMLARINDA DA YAPILABILIR
; TRISA VE TRISB KAYDEDICILERI PIC16F84 UN RAM HAFIZA BOLGESININ IKINCI
; PORTA VE PORTB NIN UCLARININ HANGISININ GIRIS HANGISININ CIKIS
; OLACAGINI BELIRTIR 0=CIKIS, 1=GIRIS.
;****************************************************************************
PORTLARI_AYARLA:
CLRF PORTB ; RESET portb
CLRF PORTA ; RESET portA
BSF STATUS, RP0 ; BANK 1 GECILIR
MOVLW B'11111100' ; RB2-7=GIRIS VE RB0,1=CIKIS
MOVWF TRISB
MOVLW B'00011111' ; RA0-5=GIRIS
MOVWF TRISA
BCF STATUS, RP0 ; BANK 0 GECILIR
;****************************************************************************
; FLIP-FLOP ALGORITMASI
;****************************************************************************
FLIP_FLOP:
BCF PORTB,0 ;LED1 SONUK
BSF PORTB,1 ;LED2 YANIK
;veya
; MOVLW B'00000010'
; MOVWF PORTB
CALL BEKLET_100MS ; 0.5Sn ICIN 5 KERE TEKRARLANIR
CALL BEKLET_100MS
CALL BEKLET_100MS
CALL BEKLET_100MS
CALL BEKLET_100MS
BSF PORTB,0 ;LED1 YANIK
BCF PORTB,1 ;LED2 SONUK
;veya
; MOVLW B'00000001'
; MOVWF PORTB
CALL BEKLET_100MS ; 0.5Sn ICIN 5 KERE TEKRARLANIR
CALL BEKLET_100MS
CALL BEKLET_100MS
CALL BEKLET_100MS
CALL BEKLET_100MS
GOTO FLIP_FLOP ;FLIP_FLOP ALGORITMASI TEKRARLANIR
;****************************************************************************
; 4MHz CLOCK ICIN BEKLETME RUTINLERI
; BU RUTIN CALL ILE FLIP_FLOP DONGUSUNDEN CAGIRILIR
;****************************************************************************
BEKLET_100MS:
DLY_100MS ;YAKLASIK 100 MILI SANIYE
CLRWDT
movlw D'200'
movwf msb
GOTO DLY1
DLY1
movlw D'168'
movwf lsb
DLY2 ;YAKLASIK 3 MICRO SANIYE
decfsz lsb,F ;1 INS
goto DLY2 ;2 INS
decfsz msb,F ;1 INS
goto DLY1 ;2 INS
RETURN
;****************************************************************************
; PROGRAMI SONLANDIRMAK ICIN PROGRAM SONUNA END YAZILIR
;****************************************************************************
END