Mikrodenetleyici ile Seri İletişim
1 MİKRODENETLEYİCİ NEDİR?
Bir bilgisayarın sahip olduğu Ram ve I/O ünitesi bileşenlerinin tek bir chip içerisinde üretilmiş biçimine mikrodenetleyici (mikrokontroller) denir. Bilgisayar teknolojisinin gerekli olduğu uygulamalarda kullanılmak üzere üretilen mikrodenetleyiciler, mikroişlemcilere göre çok daha ucuzdur. Günümüzde televizyon, radyo, otomobil, buzdolabı gibi birçok alanda mikrodenetleyiciler kullanılmaktadır. Mikrodenetleyici üreten firmalar ürettikleri chiplere farklı isimler vermektedir. Üreticilerinin ürettikleri mikrodenetleyiciler birbirinin neredeyse aynısı olmasına rağmen farklı isimlerle adlandırılmaktadırlar. Mikrochip firması ürettiklerine pic adını verirken, parça numarası olarakta 16C84, 16F84, 12C508 gibi numaralar vermektedir. Aslında PIC16C84, PIC16F84 ve PIC16F84A aynı EEPROM belleğe ve özelliklere sahip olmalarına rağmen farklı adlarla anılmaktadırlar. PIC, adını ingilizcedeki Peripheral Interface Controller (Çevresel üniteleri destekleyen arabirim) cümlesinden almaktadır. Pic lamba, motor, sensör gibi üniteleri çok hızlı bir şekilde kontrol edebilmektedir. RISC (Reduced Instruction Set Computer) mimarisi adı verilen bir yöntem kullanılarak üretildiklerinden kullanılacak komutlar basit ve sayı olarakta azdır. PIC’lerin piyasada bulunan türleri çok farklı ambalajlara sahiptir. Örneğin PIC16F84 , 18 pinli standart DIP şeklinde ambalajlanmış ve PIC 0.3 inç genişliğindedir. Her iki yanında 0.1 inç aralıklarla yerleştirilmiş 9’ar pini bulunmaktadır. CMOS teknolojisi ile üretilmiş olan PIC16F84 çok az enerji harcar. RA0-RA3 pinleri ve RB0-RB7 pinleri giriş/çıkış pinleridir.
Senkrom İletişim
Senkron bilgi transferinde bilgi ile clock pals de transfer edilir.Bu durum start ve stop bitlerinin gereğini ortadan kaldırır. Aynı zamanda senkron iletişim karakter blokları bazında olduğu için asenkrona göre daha hızlıdır. Ancak daha karmaşık devreler içerir ve daha pahalıdır. Senkron iletişim alıcı ve vericinin eş zamanlı çalışması anlamına gelir. Clock pals ihtiyacı da bu durumdan ileri gelir.
İletime başlama şu şekilde olur. Önce gönderici taraf belirli bir karakter gönderir.Bu her iki tarafça bilinen iletişime başlama karakteridir.Alıcı taraf bu karakteri okursa iletişim kurulur. Verici bilgileri gönderir. Transfer işlemi veri bloğu tamamlanana yada alıcı verici arasındaki senkronizasyon kayboluncaya kadar devam eder.
1-Hata saptama ve koruması yapılır
2-Hız genellikle modemler tarafından saptanır.
3-Senkron terminaller asenkron terminallere göre daha hızlı ve pahalıdır.
4-Veriler bloklar halinde gönderilir.
5-Blok formatları kullanılan iletişim protokollerine göre değişir.
Tipik bir senkron verici bloğunu oluşturan kısımlar aşağıdaki gibidir.
1.2.2 Asenkrom İletişim
Asenkron iletişimin belirgin özellikleri şunlardır:
-Transferler karakter bazında yapılır.
-Her bir veri haberleşme cihazının parametreleri eş değerde olmalıdır. Şekil 1.1 de asenkron iletişimin basit şekli ile asenkron data bloğu görülmektedir. Bir asenkron karakter start biti, parity biti, veri bitleri ve stop bitlerinden oluşur.
Asenkron seri veri hatları veriyi ASCII kodlanmış karakter biçiminde kullanır. Asenkron iletişimde faydalı 7 bilgi bitini göndermek için toplam 10 veri bitine ihtiyaç duyulur. Bu da asenkron iletişimin belirli ölçüde verimsiz olmasına neden olmaktadır.
1.3 PIC16F84 Mikro Denetleyicisinin Haberleşmesi
Assembler da bir uygulama vermeden önce seri haberleşmenin kolay anlaşılması için TX (Transmit/Gönderme) ve RX(Recieve/Alma) algoritmaları aşağıdaki şekildedir.
TX Bölümü (Transmit)
Şekil 1.2 de TX algoritmasını görülmektedir. Buradaki 1 bit bekleme süresi uygun formül ile bulunur. Örnek olarak 2400 baud için bu süre 416 uS dir. Bu algortimanın Assembler kodları aşağıda verilmiştir.
RX Bölümü (Receive)
Veri alma bölümünün programı aşağıda ve blok diyagramı Şekil 1.3 te görülmektedir.
‘****** SERI HABERLEŞME *********
‘****** RX BÖLÜMÜ**************
‘******RX Pin=Portb.1************
Start
clrf RX_veri
btfsc portb,1
goto start
call delay_half
movlw .9
movwf sayac
RX_Loop:
bsf status,c
btfss portb,1
bcf status,c
rrf RX_veri,f
call delay_full
decfsz sayac,f
goto RX_Loop
call delay_half
STOP_Loop:
btfss portb,1
goto STOP_Loop
end
2 DEVRENİN İNCELENMESİ
Sistemde bir adet kontrol paneli ve üç adet de aygıt bulunmaktadır. Uygulamada aygıtların üzerindeki röle elemanının kontrolü yapılmakta ve 1.aygıta bir fan bağlanmış durumdadır.
KONTROL PANELİ
Panelde 6 adet buton bulunmakta ve bunlar 1., 2. ve 3. makineyi aktif hale geçiren ve pasif duruma geçiren butonlar olmak üzere çalışmaktadırlar. Butonlar mikrodenetleyicinin B portuna bağlı durumdadırlar. Ayrıca kontrol panelinden aygıtların durumunun gözlenebilmesi amaçlı kırmızı ve yeşil led göstergesi bulunmaktadır. Veri girişi ve +5V PIC besleme gerilimi devreye giriş yapmaktadır.
Eleman değerleri
R50=R51=R52=R53=R54=R55=3,3K
R56=R58=R60=2,2K
R67=10K
R65=R66=560
R63=100
D53=D55=D57=D59=Yeşil led
X1=4MHZ KRISTAL
C1=C2=28PF
D52=DIYOT
B1,B2,B3,B4,B5,B6=MERCIMEK BUTON
U1=PIC16F84
2.2 Kontrol edilen aygıt
Aygıt üzerindeki mikrodenetleyicinin A portundan veri girişi ve yine aynı porttan veri çıkışı gerçekleşmektedir. Devrede, veri girişi, +5V PIC besleme gerilimi, +12V röle bobin besleme gerilimi bağlantı noktaları bulunmaktadır.
R1=10K
R4=470
R2=560
R3=100
R6=1K
R7=2.2K
Q1=BC337 NPN
D2=DIYOT
X1=4MHZ KRISTAL
C1=C2=28PF
RELAY=5 PINLI 2 KONTAKLI RÖLE
U1=PIC16F84
D1=SARI, D3=KIRMIZI, D4=YEŞİL LED
2.3 Devrenin simülasyonu
Devrenin, proteus programı ile gerçekleştirilmiş simülasyonu Şekil-2.6 da görülmektedir. Kontrol paneli üzerinde butonları ve aygıtların konumlarını gösteren ledler görülmektedir. Aygıtlarda da rölenin çekmiş veya bırakmış konumda olduğunu gösteren ledler bulunmaktadır. Yeşil led rölenin çektiğini, kırmızı ise bıraktığını göstermektedir..
Şekil-2.6 Devrenin proteus programı ile gerçekleştirilen simülasyonu
2.4 Devrenin çalışması
Devre alıcı ve verici sistem olmak üzere iki şekilde çalışmaktadır. Başlangıçta verici kısım kontrol paneli, alıcı kısımda aygıtlar olurken, veri iletişimi esnasında kontrol paneli alıcı, aygıt ise verici konuma geçerek iletişimi tamamlamaktadırlar.
Kontrol paneli üzerindeki butonlar B portuna bağlı durumda bulunmaktadır. Butonlardan herhangi birine basıldığı anda PIC elemanının ilgili pin girişini sıfıra çekerek, daha önceden programlanmış veriyi göndermeye başlar. İlk olarak bir bitlik start bitini gönderir. Start bitini alan aygıtlar, okuma işlemine başlarlar. Bu işlemler eşzamanlı olarak gerçekleşir. Kontrol panelinden veri gönderme işlemi bittikten sonra, aygıtlar okuduğu veriyi kendi içlerindeki programlanmış görevlerle karşılaştırarak uyup uymadığına bakarlar. Eğer veri daha önceden programlanmış görevlerle uyuşuyorsa, yapması gereken işlemleri gerçekleştirir, uyuşmuyor ise bekleme konumuna geçerek, hiçbir işlem gerçekleştirmez.
Daha sonra kontrol paneli okumaya, aygıt ise yaptığı işlemi kontrol paneline bildirmek için veri göndermeye hazır konuma geçerler. Bu sefer başlangıçtaki veri gönderme işleminin aynısı tekrarlanır. Aygıt, start biti gönderir ve ardından da veriyi gönderir. Bu esnada kontrol paneli okuma işlemini gerçekleştirir. Okuduğu kodu karşılaştırarak yapması gereken işlemi gerçekleştirir. Devrede aygıtların aktif veya pasif olduğunu yeşil veya kırmızı ledleri yakarak göstermektedir.
Devrenin bu şekilde çalışması esnasında bizim için en önemli etken zamanlama işleminin istenilen hıza ayarlanarak, devrenin çalışma hızının en yüksek değerde tutulmasıdır. Uygulamada her bir peryot için 50 mikrosaniyelik zaman dilimi yeterli olmaktadır. Ancak uygulamanın gerçeğe uygunluğu açısından daha uzun kablo ve kapasitif etkiler dikkate alınarak her bir peryot yaklaşık 100 mikrosaniyelik zamanda gerçekleştirilmiştir. Kontrol panelinden veri gönderme ve geriye veri alma işlemi yaklaşık olarak 25 peryot sürmektedir. Buda 2.5 milisaniyelik bir zaman dilimine tekabül eder.
Sistemde kullanılan aygıtların kodları Tablo-2.1’deki şekildedir. 0,1,2,3 bitleri aygıtın yapması gereken işlemleri göstermektedir. 4,5,6,7 bitleri ise aygıtın kodunu göstermektedir.
Tablo-2.1 İletişim işleminde kullanılan aygıtlara ait kodlar
1.aygıt 2.aygıt 3.aygıt
Aktif hale geçir kodu 00010001 0010001 00110001
Pasif hale geçir kodu 00010000 0010000 00110000
2.5 Kontrol Paneli ve Aygıtlarda Kkullanılan PIC16F84 Mikrodenetleyicilerin Programlanması
2.5.1 Kontrol Panelinde Kullanılan PIC16F84 Mikrodenetleyicisi’nin Programlanması
Program aşağıdaki şekildedir
;*********************************
;*********Kontrol paneli************
;**********02/06/2004**************
LIST P=16F84 ;PIC16F84’ün tanıtılması
include P16F84.INC
__CONFIG_XT_OSC&_CP_OFF&_WDT_OFF&_PWRTE_ON
;*******Tanımlamalar***********
SAY EQU H’1C’
SAY1 EQU H’1D’
SAY2 EQU H’1E’
RP0 EQU H’05’
SAYAC EQU H’1f’
RVERI EQU H’21’
TVERI EQU H’22’
MAC1ON EQU H’24’
MAC2ON EQU H’25’
MAC3ON EQU H’26’
MAC1OF EQU H’27’
MAC2OF EQU H’28’
MAC3OF EQU H’29’
;*******Başlangıç*************
ORG 0
BSF STATUS,5 ;BANK1’E GEÇ
MOVLW B’11110000′
MOVWF H’85’ ;PORTA,0,1,2,3’NİN UCUNU ÇIKIŞ YAP
MOVLW B’11111111′
MOVWF H’86’ ;PORTB GİRİŞ YAP
BCF STATUS,5 ;BANK0’A GEÇ
CLRF PORTB ;PORTB’Yİ TEMİZLE
CLRF PORTA ;PORTA’YI TEMİZLE
BSF PORTA,0 ;PORTA,0 IN CIKISINI 1 YAP
;—————————————————-
MOVLW B’00010001′ ;1.MAKİNE AKTİF KODUNU TANIMLA
MOVWF MAC1ON ;MAC1ON(AKTIF)
MOVLW B’00010000′ ;1.MAKİNE PASİF KODUNU TANIMLA
MOVWF MAC1OF ;MAC1OFF(PASIF)
MOVLW B’00100001′ ;2.MAKİNE AKTİF KODUNU TANIMLA
MOVWF MAC2ON ;MAC2ON(AKTIF)
MOVLW B’00100000′ ;2.MAKİNE PASİF KODUNU TANIMLA
MOVWF MAC2OF ;MAC2OFF(PASIF)
MOVLW B’00110001′ ;3.MAKİNE AKTİF KODUNU TANIMLA
MOVWF MAC3ON ;MAC3ON(AKTIF)
MOVLW B’00110000′ ;3.MAKİNE PASİF KODUNU TANIMLA
MOVWF MAC3OF ;MAC3OFF(PASIF)
;—————HERHANGİ BİR BUTONA BASILDIMI?——–
BASLAT
BTFSS PORTB,0 ;PORTB,0 YE BASILDIMI
GOTO MAC11 ;BASILDIYSA 1.MAKINEYI HAREKETE GECIR
BTFSS PORTB,1 ;PORTB,1 YE BASILDIMI
GOTO MAC10 ;BASILDIYSA 1.MAKINEYI DURDUR
BTFSS PORTB,2 ;PORTB,2 YE BASILDIMI
GOTO MAC21 ;BASILDIYSA 2.MAKINEYI HAREKETE GECIR
BTFSS PORTB,3 ;PORTB,3 YE BASILDIMI
GOTO MAC20 ;BASILDIYSA 2.MAKINEYI DURDUR
BTFSS PORTB,4 ;PORTB,4 YE BASILDIMI
GOTO MAC31 ;BASILDIYSA 3.MAKINEYI HAREKETE GECIR
BTFSS PORTB,5 ;PORTB,5YE BASILDIMI
GOTO MAC30 ;BASILDIYSA 3.MAKINEYI DURDUR
GOTO BASLAT
;—————————————————-
MAC11
MOVLW B’00010001′
MOVWF TVERI ;VERIYE 1. MAKINEYI HAREKETE GECIRI YUKLE
GOTO START
;—————————————————-
MAC10 MOVLW B’00010000′
MOVWF TVERI ;VERIYE 1. MAKINEYI YUKLE
GOTO START
;—————————————————-
MAC21 MOVLW B’00100001′
MOVWF TVERI ;VERIYE 2. MAKINEYI HAREKETE GECIRI YUKLE
GOTO START
;—————————————————-
MAC20 MOVLW B’00100000′
MOVWF TVERI ;VERIYE 2. MAKINEYI YUKLE
GOTO START
;—————————————————-
MAC31 MOVLW B’00110001′
MOVWF TVERI ;VERIYE 3. MAKINEYI HAREKETE GECIRI YUKLE
GOTO START
;—————————————————-
MAC30 MOVLW B’00110000′
MOVWF TVERI ;VERIYE 3. MAKINEYI YUKLE
GOTO START
;————VERİ GÖNDERME İŞLEMİNE BAŞLIYOR———
START
CALL TX ;ALTPROGRAM
;————VERİ GÖNDERME İŞLEMİ BİTTİ————–
CALL BEKLE1S
CALL BEKLE1S
BCF PORTA,0 ;PORTA,0 I SIFIRLA
CALL BEKLE1S
CALL BEKLE1S
;————VERİ OKUMA İŞLEMİNE BAŞLIYOR————
CALL RX
;————VERİ OKUMA İŞLEMİ BİTTİ—————-
;—–OKUNAN KODUN KARŞILIĞI ARANIYOR—-
CALL CONTROL
;—————————————————-
CALL BEKLE1S
TEKRAR BTFSC PORTA,4
GOTO TEKRAR
BSF PORTA,0 ;PORTA,0 I TEKRAR AKTIF HALE GETIR
CALL BEKLE1S
CALL BEKLE1S
;—————————————————-
GOTO BASLAT
;———ALTPROGRAMLAR—————————–
;—————————————————-
TX
BCF PORTA,0 ;START BIT SEND
CALL BEKLE1S
MOVLW D’8′
MOVWF SAYAC
TX_LOOP
RRF TVERI,F
BTFSS STATUS,C
BCF PORTA,0
BTFSC STATUS,C
BSF PORTA,0
CALL BEKLE1S
DECFSZ SAYAC,F
GOTO TX_LOOP
BSF PORTA,0 ;STOP BIT SEND
RETURN
;—————————————————-
RX CLRF RVERI ;RVERI YI SIFIRLA
RXL BTFSC PORTA,4 ;PORTA,4 YI KONTROL ET,START BIT GELDIMI?
GOTO RXL
CALL BEKLE05S ;YARIM ZAMAN BEKLE
MOVLW D’9′
MOVWF SAYAC ;SAYACA 9 DEGERINI VER
RX_LOOP
BSF STATUS,C ;CARRY BITINI 1 YAP
BTFSS PORTA,4 ;PORTA,1 DEN 1 MI GELDI?
BCF STATUS,C ;GELMEDIYSE C’YI SIFIRLA
RRF RVERI,F ;VERIYI SAGA KAYDIR
CALL BEKLE1S ;BIRIM ZAMAN BEKLE
DECFSZ SAYAC,F ;SAYICIYI AZALT
GOTO RX_LOOP
RETURN
;—————————————————-
CONTROL
MOVF MAC1ON,W ;1.MAKINA AKTİF KODUNU W YA YUKLE
XORWF RVERI,W ;VERI ILE W YI EXOR LA
BTFSC STATUS,2 ;SONUC BIRMI?
GOTO M1ON
;—————
MOVF MAC1OF,W ;1.MAKINA PASİF KODUNU W YA YUKLE
XORWF RVERI,W ;VERI ILE W yI EXOR LA
BTFSC STATUS,2 ;SONUC BIRMI?
GOTO M1OF
;—————
MOVF MAC2ON,W ;2.MAKINA AKTİF KODUNU W YA YUKLE
XORWF RVERI,W ;VERI ILE W YI EXOR LA
BTFSC STATUS,2 ;SONUC BIRMI?
GOTO M2ON
;—————
MOVF MAC2OF,W ;2.MAKINA PASİF KODUNU W YA YUKLE
XORWF RVERI,W ;VERI ILE W yI EXOR LA
BTFSC STATUS,2 ;SONUC BIRMI?
GOTO M2OF
;—————
MOVF MAC3ON,W ;3.MAKINA AKTİF KODUNU W YA YUKLE
XORWF RVERI,W ;VERI ILE W YI EXOR LA
BTFSC STATUS,2 ;SONUC BIRMI?
GOTO M3ON
;—————
MOVF MAC3OF,W ;2.MAKINA PASİF KODUNU W YA YUKLE
XORWF RVERI,W ;VERI ILE W yI EXOR LA
BTFSC STATUS,2 ;SONUC BIRMI?
GOTO M3OF
;—————
GOTO PINRET
;—————
M1ON BSF PORTA,3 ;1.MAKİNE AKTİF LAMBASINI YAK
GOTO PINRET
M1OF BCF PORTA,3 ;1.MAKİNE PASİF LAMBASINI YAK
GOTO PINRET
M2ON BSF PORTA,2 ;2.MAKİNE AKTİF LAMBASINI YAK
GOTO PINRET
M2OF BCF PORTA,2 ;2.MAKİNE PASİF LAMBASINI YAK
GOTO PINRET
M3ON BSF PORTA,1 ;3.MAKİNE AKTİF LAMBASINI YAK
GOTO PINRET
M3OF BCF PORTA,1 ;3.MAKİNE PASİF LAMBASINI YAK
GOTO PINRET
PINRET RETURN
;—————————————————-
BEKLE1S ; TAM PERYOT GECİKME
MOVLW D’1′
MOVWF SAY
D1 MOVLW D’1′
MOVWF SAY1
D2 MOVLW D’100′
MOVWF SAY2
D3 NOP
DECFSZ SAY2,F
GOTO D3
DECFSZ SAY1,F
GOTO D2
DECFSZ SAY,F
GOTO D1
RETURN
;—————————————————-
BEKLE05S ;YARIM PERYOT GECİKME
MOVLW D’1′
MOVWF SAY
D4 MOVLW D’1′
MOVWF SAY1
D5 MOVLW D’50’
MOVWF SAY2
D6 NOP
DECFSZ SAY2,F
GOTO D6
DECFSZ SAY1,F
GOTO D5
DECFSZ SAY,F
GOTO D4
RETURN
;—————————————————-
END
;************************************
;************************************
2.5.2 Kontrol Edilen Aygıtta Kullanılan PIC16F84 Mikrodenetleyicisinin Programlanması
Programlama esnasında kontrol edilecek aygıtı tanımlayan kodların Tablo-1’den alınarak uygun olanları yazılmalıdır. Aşağıda 1.aygıtın kontrolü amaçlı program yazılmış bulunmaktadır
;************************************
;****KONTROL EDİLEN AYGIT********
;***********02/06/2004*****************
LIST P=16F84 ;PIC16F84’ÜN TANITILMASI
INCLUDE P16F84.INC
__CONFIG _XT_OSC&_CP_OFF&_WDT_OFF&_PWRTE_ON
;**********TANIMLAMALAR***********
SAY EQU H’1C’
SAY1 EQU H’1D’
SAY2 EQU H’1E’
RP0 EQU H’05’
RVERI EQU H’21’
TVERI EQU H’22’
SAYAC EQU H’23’
MAC1ON EQU H’24’
MAC1OF EQU H’25’
MAC1LON EQU H’26’
MAC1LOF EQU H’27’
MACL EQU H’28’
;*********BAŞLANGIÇ*****************
ORG 0
BSF STATUS,5 ;BANK1’E GEÇ
CLRF TRISB ;PORTB’NİN UÇLARINI ÇIKIŞ YAP
MOVLW B’11111101′
MOVWF H’85’ ;PORTA,1 U CIKIS YAP
BCF STATUS,5 ;BANK0’A GEÇ
CLRF PORTB ;PORTB YI TEMIZLE
CLRF PORTA
;—————————————————-
BASLAR
MOVLW B’00010001′ ;1.MAKINAYI HAREKETE GECIR KODUNU TANIMLA
MOVWF MAC1ON
MOVLW B’00010000′ ;1.MAKINAYI DURDUR KODUNU TANIMLA
MOVWF MAC1OF
BASLA
;——–VERİ OKUMA İŞLEMİ BAŞLIYOR——————-
RXR CALL RX
;——–OKUNAN VERİ KARŞILAŞTIRILIYOR—————–
MOVF MAC1ON,W ;1.MAKINAYI HAREKETE GECIR KODUNU W YA YUKLE
XORWF RVERI,W ;VERI ILE W YI EXOR LA
BTFSC STATUS,2 ;SONUC SIFIRMI?
GOTO MAC11
;—————
MOVF MAC1OF,W ;1.MAKINAYI DURDUR KODUNU W YA YUKLE
XORWF RVERI,W ;VERI ILE W YI EXOR LA
BTFSC STATUS,2 ;SONUC SIFIRMI?
GOTO MAC10
;—-DİĞER AYGITLARIN İŞLEM YAPTIĞI ZAMANDA BEKLEME KONUMUNA GEÇİYOR——————–
CALL BEKLE1S
CALL BEKLE1S
CALL BEKLE1S
CALL BEKLE1S
CALL BEKLE1S
CALL BEKLE1S
CALL BEKLE1S
CALL BEKLE1S
CALL BEKLE1S
CALL BEKLE1S
CALL BEKLE1S
CALL BEKLE1S
CALL BEKLE1S
CALL BEKLE1S
CALL BEKLE1S
CALL BEKLE1S
CALL BEKLE1S
CALL BEKLE05S
GOTO RXR
;—————————————————-
MAC11 BSF PORTB,0 ;PORTB,0 I HAREKETE GECIR MOVLW B’00010001′ ;1.MAKINA HAREKETE GECTI, LAMBA KODUNU TANIMLA
MOVWF MACL
GOTO TRANS
MAC10 BCF PORTB,0 ;PORTB,0 I DURDUR
MOVLW B’00010000′ ;1.MAKINA DURDU, LAMBA KODUNU TANIMLA
MOVWF MACL
GOTO TRANS
;—————————————————–
TRANS
BTFSC PORTA,0 ;KONTROL PANELİ VERİ OKUMA İŞLEMİNE BAŞLADIMI?
GOTO TRANS
CALL BEKLE1S
;—————————————————–
BSF PORTA,1 ;VERİ GÖNDERME İŞLEMİNE HAZIRLANIYOR.
CALL BEKLE1S
CALL BEKLE1S
;——–VERİ GÖNDERME İŞLEMİ BAŞLIYOR—————
CALL TX
;——–VERİ GÖNDERME İŞLEMİ BİTİYOR—————-
CALL BEKLE1S
CALL BEKLE1S
CLRF MACL ;MACL KODUNU SIFIRLA
BCF PORTA,1 ;VERİ OKUMA İŞLEMİNE BAŞLANIYOR
DONGU BTFSS PORTA,0
GOTO DONGU
;—————————————————-
GOTO BASLA
;—————————————————-
;————-ALTPROGRAMLAR————
RX
CLRF RVERI ;RVERI YI SIFIRLA
BTFSC PORTA,0 ;PORTA,0 YI KONTROL ET,START BIT GELDIMI?
GOTO RX
CALL BEKLE05S ;YARIM ZAMAN BEKLE
MOVLW D’9′
MOVWF SAYAC ;SAYACA 9 DEGERINI VER
RX_LOOP
BSF STATUS,C ;CARRY BITINI 1 YAP
BTFSS PORTA,0 ;PORTA,0 DEN 1 MI GELDI?
BCF STATUS,C ;GELMEDIYSE C’YI SIFIRLA
RRF RVERI,F ;VERIYI SAGA KAYDIR
CALL BEKLE1S ;BIRIM ZAMAN BEKLE
DECFSZ SAYAC,F ;SAYICIYI AZALT
GOTO RX_LOOP
RETURN
;—————————————————-
TX
BCF PORTA,1 ;START BİTİ GÖNDER PORTA,4
CALL BEKLE1S
MOVLW D’8′
MOVWF SAYAC
TX_LOOP
RRF MACL,F
BTFSS STATUS,C
BCF PORTA,1
BTFSC STATUS,C
BSF PORTA,1
CALL BEKLE1S
DECFSZ SAYAC,F
GOTO TX_LOOP
BSF PORTA,1 ;STOP BİTİ GÖNDER
RETURN
;—————————————————-
BEKLE1S ;TAM PERYOT GECİKME
MOVLW D’1′
MOVWF SAY
D1 MOVLW D’1′
MOVWF SAY1
D2 MOVLW D’100′
MOVWF SAY2
D3 NOP
DECFSZ SAY2,F
GOTO D3
DECFSZ SAY1,F
GOTO D2
DECFSZ SAY,F
GOTO D1
RETURN
;—————————————————-
BEKLE05S ;YARIM PERYOT GECİKME
MOVLW D’1′
MOVWF SAY
D4 MOVLW D’1′
MOVWF SAY1
D5 MOVLW D’50’
MOVWF SAY2
D6 NOP
DECFSZ SAY2,F
GOTO D6
DECFSZ SAY1,F
GOTO D5
DECFSZ SAY,F
GOTO D4
RETURN
;—————————————————-
END
;*************************************
;*************************************
2.6 Veri transferinin zamanlaması
Kontrol panelinden veri gönderilmeye başlandığı andan itibaren, verinin zamana bağlı olarak iletimi söz konusudur. Verinin çift yönlü iletiminin zamanlaması Şekil-2.7 de görülmektedir. Herbir peryot arasındaki geçen zaman yaklaşık 100 mikrosaniyedir.
3 SONUÇ
Mikrodenetleyici kullanılarak gerçekleştirilen seri haberleşmede, sistem sade ve karmaşadan uzak hale gelmesine karşılık, bit transfer oranı düşer. Bu uygulama basit bir kontrol sistemi uygulaması olduğundan dolayı PIC16F84 kullanılmıştır, ancak daha kompleks bir uygulama için seri port çıkışı bulunan bir mikrodenetleyici kullanılması, devrenin performansına büyük oranda katkı sağlayacaktır. PIC16F84’te veriyi seri forma dönüştürmek için çeşitli işlem basamakları uygulanmaktadır. Bu da zaman kaybı oluşturur. Bu nedenle uygulamada yüksek oranda bit transferinin gerçekleşmesi gereken sistemlerde paralel haberleşme kullanılmalıdır.
Devre yukarıdaki şekilde uygulanarak gerçeğe yakınlık sağlanmış ve sorunsuz olarak çalışmıştır. Eğer uygulamada tek hat seri iletişim kullanılmamış olsaydı, sistem daha karmaşık hale gelir ve maliyet de büyük oranda artardı. Devre üzerindeki döngülerin zamanlamaları kısaltılarak peryot zamanı düşürülebilir ve bu haliyle gerçek bir kontrol sistemi uygulaması yapılabilir.