Mikrodenetleyici ile Seri İletişim

Mikrodenetleyici ile Seri İletişim

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.

  • Control field(Kontrol sahası) :Transfere başlama ve kontrol bilgileri içerir.Bu bilgiler arasında hata düzeltme bilgileri de vardır.
  • Header(Başlık) :Gönderilmek istenen terminalin adres bilgilerini içeren başlık.
  • Squence number(Sıra num.) :Verilerin kaybolup kaybolmadığının anlaşılması için gelen ve giden bilgilerin hayıt numaraları
  • Data(veri) :Bilgi yada yönetici data
  • Error check(Hata saptama) :Transfer edilen veri bloğundan üretilen hata kontrol bilgisi gönderilir. Alıcı taraf aynı şekilde eline geçen veri bloğundan hata kontrol bilgisini üretir ve aldığı hata kotrol bilgisiyle kendi türettiğini karşılaştırır. Eğer farklılık varsa hata üretir.
  • 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.

  • Start bit: Bir karakterin gönderilmeye başlandığını bildirmek için kullanılır. Her zaman transferin ilk biti olarak gönderilir.
  • Data bits: Veri bitlerini oluşturan gruplar bütün karakterlerden ve klavyedeki diğer tuşlardan oluşur.
  • Parity bit: Transfer edilen karakterlerin karşı tarafa doğru gönderilip gönderilmediğini kontrol etmek için kullanılan bittir. Eğer alıcı, alınan parity biti ile hesaplanan parity bitinin eşit olmadığını tespit ederse, hata verir ve o andaki karakteri kabul etmez.
  • Stop bit: Karakterin bittiğini gösterir. Karakterler arasında boş ya da ölü zamanlar sağlar. Stop biti gönderildikten sonra sonra istenildiği zaman yeni bilgi gönderilebilir.
  • Baud: Bit/sn olarak ifade edilen bit iletişim hızı birimidir. Anolog sinyaldeki değişim hızıdır.
  • 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.

    Bu konuya oyver
    [Toplam: 0 Ortalama: 0]
    (Toplam19 , 1 bugün)

    ilgili konular

    Leave a Comment