UYGULAMA-2 1. ÖZET 2. UYGULAMALAR. 2.1 PORT2 nin kullanımı



Benzer belgeler
Y. Müh. Ayhan Yüksel. (Son güncelleme: Zafer Đşcan) Tıbbi Enstrumantasyon Tasarım & Uygulamaları ( )

Ad Soyad: Öğrenci No:

ADCCON1: MD1 EXT_REF CK1 CK0 AQ1 AQ0 T2C

BÖLÜM 6 Seri Port Đşlemleri

BÖLÜM 7 XTAL2 XTAL1. Vss. Şekil Mikrodenetleyicisi osilatör bağlantı şekli. Bir Makine Çevrimi = 12 Osilatör Periyodu

Mikroişlemcili Sistemler ve Laboratuvarı

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

Mikroişlemcili Sistemler ve Laboratuvarı 6.Hafta

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

BÖLÜM 7 Kesmeler.

KOMUT TABLOSU İLE İLGİLİ AÇIKLAMALAR:

İLERI MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

Ayhan Yüksel. (Son güncelleme: Berat Doğan) Tıbbi Enstrumantasyon Tasarım & Uygulamaları ( )

ADUC841 MİKRODENETLEYİCİ TABANLI GELİŞTİRME KARTININ TANITIMI:

Mikroişlemci ile Analog-Sayısal Dönüştürücü (ADC)

BÖLÜM Mikrodenetleyicisine Giriş

8051 Ailesi MCS51 ailesinin orijinal bir üyesidir ve bu ailenin çekirdeğini oluşturur çekirdeğinin temel özellikkleri aşağıda verilmiştir:

İLERI MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

BÖLÜM in Bellek Organizasyonu

Paralel ve Seri İletişim. Asenkron/Senkron İletişim. Şekil 2: İletişim Modları

Kesmeler (Interrupts)

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

CP1E KM-N2-FLK MODBUS HABERLEŞMESİ

BM-311 Bilgisayar Mimarisi

NB Ekran Seri Port Üzerinden Veri Okuma/Yazma. Genel Bilgi Protokol Oluşturma Veri Okuma Veri Yazma

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

Program Kodları. void main() { trisb=0; portb=0; while(1) { portb.b5=1; delay_ms(1000); portb.b5=0; delay_ms(1000); } }

DERS 12 PIC 16F84 ile KESME (INTERRUPT) KULLANIMI İÇERİK

8051 Ailesi MCS51 ailesinin orijinal bir üyesidir ve bu ailenin çekirdeğini oluşturur çekirdeğinin temel özellikkleri aşağıda verilmiştir:

SAÜ, EEM-437 Mikroişlemciler I Ders Notları

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

MİKROİŞLEMCİ İLE A/D DÖNÜŞÜMÜ

MikroiĢlemci ile Analog-Sayısal DönüĢtürücü (ADC)

PULSE ÇIKIŞI İLE SERVO MOTOR KONTROLÜ. Giriş PLS2 Komutunun Açıklanması CP1H ve Smart Step 2 Kablo Bağlantıları Sonuç

Deney 10: Analog - Dijital Dönüştürücüler (Analog to Digital Converters - ADC) Giriş

1. LİNEER PCM KODLAMA

HAFTA 1 KALICI OLMAYAN HAFIZA RAM SRAM DRAM DDRAM KALICI HAFIZA ROM PROM EPROM EEPROM FLASH HARDDISK

DENEY NO : 1 DENEY ADI : Analog Sinyallerin Sayısal Sinyallere Dönüştürülmesi

BQ Modbus Analog Giriş Kartı 6 Kanal PT100 - PT1000. Kullanım Kılavuzu. Doküman Versiyon: BQTEK

CP1E-ARGOX AS8000-R SERI PORT HABERLEŞMESİ GENEL BILGI BAĞLANTI ŞEMASI HABERLEŞME AYARLARI RXD KOMUTU HABERLEŞME PROGRAMI

MICROPROCESSORS ESA 86/88-3 KULLANIM KLAVUZU

EC-100. Ethernet RS232/422/485 Çevirici. İstanbul Yazılım ve Elektronik Teknolojileri

icono Kullanıcı Kılavuzu

MĐKROĐŞLEMCĐLĐ FONKSĐYON ÜRETECĐ

DENEY NO : 2 DENEY ADI : Sayısal Sinyallerin Analog Sinyallere Dönüştürülmesi

8051 DONANIM ÖZELLİKLERİ

Analog Sayısal Dönüşüm

BQ Modbus Analog Giriş Kartı 6 Kanal 4 20mA. Kullanım Kılavuzu. Doküman Versiyon: BQTEK

Şekil 3-1 Ses ve PWM işaretleri arasındaki ilişki

Bölüm 9 A/D Çeviriciler

6. Osiloskop. Periyodik ve periyodik olmayan elektriksel işaretlerin gözlenmesi ve ölçülmesini sağlayan elektronik bir cihazdır.

Bölüm 14 FSK Demodülatörleri

Code Composer Studio İndirilmesi ve Kurulması

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER

Mikrobilgisayar Donanımı

B.Ç. / E.B. MİKROİŞLEMCİLER

Tek kararlı(monostable) multivibratör devresi

BLGM423 Gömülü Sistem Tasarımı

Mikroişlemcili Sistemler ve Laboratuvarı 8.Hafta

KOCAELİ ÜNİVERSİTESİ ELEKTRONİK VE HABERLEŞME MÜHENDİSLİĞİ ELEKTRONİK LAB 1 DERSİ İŞLEMSEL KUVVETLENDİRİCİ - 2 DENEYİ

Fatih Üniversitesi Elektrik ve Elektronik Mühendisliği Bölümü EEM 316 Haberleşme I LAB SINAVI DARBE GENLİK MODÜLASYONU (PWM)

PLS2 KOMUTU. Giriş PLS2 Komutunun Açıklanması Sonuç

ANALOG SAYISAL DÖNÜŞTÜRÜCÜ DENEYİ TÜMLEŞİK (ENTEGRE) ADC DEVRESİ İLE

KASIRGA 4. GELİŞME RAPORU

Bölüm 14 Temel Opamp Karakteristikleri Deneyleri

İÇİNDEKİLER 1. KLAVYE KLAVYE RB KLAVYE RBHIGH DİSPLAY... 31

DIGIAC 2000 Deney Seti PAT İŞLEMCİ KARTI :

BETİ GSM/GPRS MODEM KULLANIM KILAVUZU

WiFi RS232 Converter Sayfa 1 / 12. WiFi RS232 Converter. Teknik Döküman

Trafik Işık Kontrolü

Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar

Elektriksel-Fiziksel Özellikler... 2 Kullanım... 3 Uygulama Örnekleri... 7

Kantar Otomasyonu Özellikler Kullanım Satış Kamyon Hareketleri Ağırlık Bilgisi... 9

TECO N3 SERĐSĐ HIZ KONTROL CĐHAZI HIZLI BAŞLAT DÖKÜMANI. ADIM 1: Sürücü beslemesini ve motor uçlarını bağlama

Deney 1: Saat darbesi üretici devresi

DENEY II RAPORU MİKROİŞLEMCİ UYGULAMALARI LABORATUVARI

Sistem Programlama. Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir.

İLERI MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

8051 Mikrokontrolcü Ailesi

Deney 2. Kesme Uygulamaları

Bilgisayar ile Dijital Devrelerin Haberleşmesi. FT232R ve MAX232 Entegreleri. Çalışma Raporu

EEM 202 DENEY 9 Ad&Soyad: No: RC DEVRELERİ-II DEĞİŞKEN BİR FREKANSTA RC DEVRELERİ (FİLTRELER)

Erzurum Teknik Üniversitesi RobETÜ Kulübü Robot Eğitimleri. ARDUİNO EĞİTİMLERİ I Arş. Gör. Nurullah Gülmüş

FRENIC MEGA ÖZET KULLANIM KLAVUZU

Haftalık Ders Saati Okul Eğitimi Süresi

MİKROİŞLEMCİLER LABORATUVARI İÇİN PROGRAM DERLEME VE YÜKLEME DOKÜMANI

LCD EKRANIN SÜRÜLMESİ VE FLASH/EE HAFIZASININ KULLANILMASI

4. 8 adet breadboard kablosu, 6 adet timsah kablo

DC motorların sürülmesi ve sürücü devreleri

(5 soru seçerek cevaplandırınız. Seçilen soru numaralarını yukarıdaki çizelgede işaretleyiniz) Sınav süresi 100 dakikadır. Başarılar dileriz.

SIMAN KULLANIM KILAVUZU

TUŞ TAKIMI (KEYPAD) UYGULAMALARI

FRENIC MULTİ ÖZET KULLANIM KLAVUZU

BQ351 Modbus Röle Kontrol Ünitesi. Kullanım Kılavuzu. Doküman Versiyon: BQTEK

DENEY-2. SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ

FPGA İLE UYGULAMA ÖRNEKLERİ FPGA ile Seri Haberleşme (RS232) Uygulaması

DY-45 OSĐLOSKOP KĐTĐ. Kullanma Kılavuzu

DENEY 5: GENLİK KAYDIRMALI ANAHTARLAMA (ASK) TEMELLERİNİN İNCELENMESİ

UYGULAMA 1 24V START CPU V LO. Verilen PLC bağlantısına göre; START butonuna basıldığında Q0.0 çıkışını aktif yapan PLC programını yazınız.

Transkript:

UYGULAMA-2 1. ÖZET Bu uygulamada ADuC 841 µ-denetleyicisine ait ASM komutlarının, zamanlama biriminin, ADC / DAC birimlerinin, seri portun ve kesmelerin kullanımı ile ilgili çalışmalar yapılacaktır. Bu amaçla aşağıdaki uygulamalar gerçeklenecektir. Çeşitli birimlerin programlanması ve kontrolüne ilişkin özet bilgi EK kısmında bulunmaktadır. EK kısmında, çevre birimlerinin programlanmasına ilişkin özet bilgiler bulunmaktadır. Yardımcı olması için sunumda görülen örneklerin kopyasını yanınızda bulundurmanız önerilir. 2. UYGULAMALAR 2.1 PORT2 nin kullanımı Giriş PORT2, çift yönlü bir giriş çıkış portudur. PORT2 bacaklarının değerleri P2.0 - P2.7 bitlerine 1 ya da 0 yazılarak değiştirilir. Ayrıca PORT2 uçlarına uygulanan lojik değer bu bitlerin değerlerini değiştirmektedir. Denetleyicinin reset lenmesinin ardından PORT2 uçlarında lojik 1 (3.3V) bulunmaktadır. Bu uçlardan herhangi biri toprağa kısa devre yapıldığında P2.X biti 0 olmaktadır. Kısa devre kaldırıldığında ise tekrar lojik 1 değerine çıkmaktadır. Bu kısımda P2.7 deki LED, P2.6 daki düğme ile sürülecektir. Öncelikle LED 100 ms de bir sürekli yakıp söndürülecek, daha sonra düğme kullanılarak yakıp söndürülecektir. Yapılacaklar a) Şekil 1 deki devreyi hazırlayınız. (74HC00 entegresinin 7 numaralı bacağını toprağa, 14 numaralı bacağını ise Vdd ye (3.3 Volt) bağlamayı unutmayınız.) b) (C:\ADUC\ASM51\Blink.asm) programını inceleyiniz. Bu programı derleyerek işlemciye yükleyiniz. Programı çalıştırdığınızda LED in yanıp sönmesi gerekmektedir. c) Düğmeye basıldığında LED in konum değiştirmesi için, Şekil 2 deki akış diyagramını sağlayacak kodu yazınız. Denetleyiciye programı yükleyip çalıştırarak devrenin çalışmasını gözlemleyiniz. P2.7 P2.6 1 2 3 74HC00 dügme LED 0 0 R1 1k Şekil 1 2.1 için hazırlanacak devre 1

BAŞLA P 2.6 =1? e 10 ms BEKLE P 2.6 =1? e P 2.6 =0? e 10 ms BEKLE P 2.6 =0? h h h h Düğmenin basılı olmadığı kontrol ediliyor Düğmenin basıldığı kontrol ediliyor Düğmeye yeniden basılana kadar bekleniyor e P2.7=(P2.7)' LED i aç/kapat Şekil 2 2.1 için akış diyagramı 2

2.2 TIMER kullanımı Giriş Bu kısımda Zamanlayıcı (TIMER) istenilen süreye programlanacak ve çeşitli frekanslarda kare dalga üretilecektir. Kare dalga işareti PORT2.7 ucu kullanılarak üretilecektir. TIMER2 nin programlanmasının nasıl yapılacağına ilişkin özet bilgi EK kısmında bulunabilir. Yapılacaklar a) Frekansı 100 Hz olan kare dalgayı üretmek üzere gerekli TH0 ve TL0 değerlerini hesaplayınız. b) Şekil 3 teki akış diyagramını sağlayacak olan kodu hazırlayınız. c) Hazırladığınız kodu derleyip µ-denetleyiciye yükleyiniz. Programı çalıştırıp P2.7 ucunu osiloskop ile gözleyiniz. Osiloskopta gözlenen işareti, periyodu ve tepe noktaları dikkate alarak Ölçüm Sonuçları kâğıdına çiziniz. d) a,b ve c şıklarını 10 khz için tekrarlayınız. BAŞLA TMOD ve TCON saklayıcılarını düzenle TH0 ve TL0 saklayıcılarına uygun değerleri yaz Timer0 başlat TF0=1? h e P2.7=(P2.7)' TF0=0 Şekil 3 2.2 için akış diyagramı 3

2.3 Kesme (Interrupt) kullanımı Giriş Bu kısımda, bir önceki uygulama kesme kullanarak çalıştırılacaktır. Kesme, çeşitli donanımlardan (TIMER, ADC, DAC, vs.) işlemciye gelen sinyaller sonucu oluşur. Đşlemci uygun programlandığı takdirde, kesme isteklerine cevap veren servis rutinlerini koşturacaktır. TIMER2 nin programlanması ve kesmeler hakkında özet bilgi EK kısmında bulunabilir. Yapılacaklar a) Frekansı 100 Hz olan kare dalgayı üretmek üzere gerekli TH0 ve TL0 değerlerini hesaplayınız. b) Şekil 4 teki akış diyagramını sağlayacak olan kodu hazırlayınız. c) Kodu derleyip µ-denetleyiciye yükleyiniz. Programı çalıştırıp, P2.7 ucunu osiloskop ile gözleyiniz. Osiloskoptan gözlenen işareti, periyodu ve tepe noktaları dikkate alarak Ölçüm Sonuçları kâğıdına çiziniz. d) a,b ve c şıklarını 10 khz için tekrarlayınız. ANA PROGRAM TIMER0 KESME PROGRAMI BAŞLA TMOD ve TCON saklayıcılarını düzenle TH0 ve TL0 saklayıcılarına uygun değerleri yaz TH0 ve TL0 saklayıcılarına uygun değerleri yaz Timer0 başlat P2.7=(P2.7)' Timer0 kesmesini etkinleştir Kesmeden Çık Timer0 başlat JMP $ Şekil 4 2.3 için akış diyagramı 4

2.4 UART Biriminin Kullanımı Giriş UART, donanım elemanları tarafından sıkça kullanılan bir haberleşme protokolüdür. Đşlemci ve bilgisayar üç hat üzerinden (GND, RXD, TXD) karşılıklı olarak kolayca haberleşebilir. Bu uygulamada ADUC841 ile µ-denetleyici, 57600 bit/s veri aktarım hızı (baudrate) ile haberleşecektir. UART ın programlanması için özet bilgi EK kısmında bulunabilir. Bu uygulamada, program belleğindeki bir karakter dizisi, P2.6 ucundaki düğmeye basılmasıyla UART üzerinden bilgisayara gönderilecektir. Program, karakter dizisi gönderildikten sonra yeniden düğmeye basılmasını bekleyecektir. Program belleğine veri yazma MOVC komutu ile yapılmaktadır. Ayrıca program derlenmeden önce, program belleğine sabit veriler aşağıdaki tabloda gösterildiği gibi DB komutlarıyla yazılır. (NOT: MOVC komutu çalıştırılmadan önce DPTR saklayıcısına, karakter dizisinin adresi olan 1000H değeri kopyalanmalıdır.) Yapılacaklar a) 57600 bps için gerekli saklayıcı değerlerini EK kısmında belirtildiği gibi hesaplayınız. b) UART ın aşağıdaki gibi programlanması için diğer saklayıcı değerlerini belirtiniz. Mod 1 Tek işlemcili çalışma Veri alımı aktif 57600 Baudrate c) Şekil 5 teki akış diyagramını sağlayan kodu gerçekleyiniz. d) Hazırladığınız kodu derleyip, µ-denetleyiciye yükleyiniz. Yükleme bittikten sonra programı çalıştırıp WSD programını kapatınız. "C:\ADUC" klasöründe bulunan "57600COM1" isimli bağlantıyı çift tıklayarak HyperTerminal programını başlatınız. e) Düğmeye her basışta kod belleğinde bulunan karakter dizisinin ekrana yazıldığını doğrulayınız. Tablo 1. Program belleğinin 1000H adresinde sabit bir karakter dizisi bulundurma.. ORG 1000H YAZI: DB 'MERHABA ADUC 841 ' DB 10,13 DB 00H.. 5

BAŞLA UART birimi için gerekli saklayıcılarına uygun değerleri yaz DPTR=1000H N=0 P2.6 düğmesi yeniden basılana kadar bekle* DPTR nin N kadar ötesindeki bir karakteri kod belleğinden al karakter=0? e h Karakteri UART üzerinden aktar N=N+1 Şekil 5 2.4 için akış diyagramı * Bakınız, Şekil-2 6

2.5 DAC Biriminin Kullanımı Giriş DAC, belirli sınırlarda sayısal olarak kodlanmış olan gerilim değerini çıkışta analog olarak üreten bir birimdir. Bu kısımda, osiloskopta gözlemek üzere, belirli frekansta bir sinüs işareti üretilecektir. Uygulama farklı frekanslar için tekrarlanacak, işaret frekansı 100 Hz ve 10 khz olacaktır. Bir sinüs işareti periyodu 8 gerilim değerinden oluşmaktadır. Bu bakımdan örnekleme frekansı, işaret frekansının 8 katı olacaktır. Bir sinüs periyodu için gerekli 8 adet örneğin gerilim değerleri aşağıda verilmiştir: 1.65V 2.82V 3.3V 2.82V 1.65V 0.48V 0V 0.48V Yapılacaklar a) Tabloda belirtilen 8 adet gerilim değerini verecek olan DAC0H ve DAC0L değerlerini hesaplayınız. (Hesaplamanın nasıl yapılacağını EK kısmından görebilirsiniz) b) f=100hz için iki örnek arası gereken süreyi hesaplayıp, bu durumda gerekli TH0 ve TL0 değerlerini bulunuz. c) Şekil 6 daki akış diyagramını sağlayacak olan program kodunu hazırlayınız (Program kesme ile çalışacaktır) ve derleyip, işlemciye yükleyiniz. d) Programı çalıştırıp DAC0 çıkışını osiloskop ile gözlemleyiniz, elde edilen işareti, genlik ve periyodu dikkate alarak Ölçüm Sonuçları kâğıdına çiziniz. e) b-d şıklarını 10 khz için de tekrarlayınız. 7

ANA PROGRAM BAŞLA DPTR=1000H N=0 TIMER0 KESME PROGRAMI TH0 ve TL0 saklayıcılarına uygun değerleri yaz DAC0 ı 0-3.3V arası çıkış verebilecek biçimde programla TMOD ve TCON saklayıcılarını ayarla Timer0 başlat DAC0H= DPTR nin N kadar ötesindeki bir byte N=N+1 TH0 ve TL0 saklayıcılarına uygun değerleri yaz DAC0L= DPTR nin N kadar ötesindeki bir byte N=N+1 Timer0 kesmesini etkinleştir N=16? e Timer0 başlat JMP $ h N=0 Kesmeden Çık Şekil 6 2.6 için akış diyagramı 8

2.6 ADC Biriminin Kullanımı Giriş ADC, girişindeki analog işareti belirli sayıdaki bitlerle temsil edilebilen sayısal işarete dönüştüren bir birimdir. Örneğin ADuC 841 için 12 bitlik 8 adet ADC, maksimum giriş gerilimi olan 3.3V u FFFH, 0V'luk giriş gerilimini ise 000H değerine dönüştürür. ADC çevriminin yapılması ve ADC nin kullanımı hakkında özet bilgi EK kısmında bulunabilir. Bu kısımda, ADC girişine çeşitli gerilim değerleri verilecektir. P2.6 daki düğmeye basılmasıyla bir ADC çevrimi yapılacak, elde edilen 12 bitlik ADC okuma değeri UART üzerinden bilgisayara aktarılacaktır. Yapılacaklar a) Potansiyometre kullanarak Şekil 7 deki gerilim bölücü devresi kurunuz. b) Şekil 8 deki akış diyagramını sağlayacak olan program kodunu hazırlayıp, derleyip, işlemciye yükleyiniz. Programı çalıştırıp, WSD programını kapatınız. c) 0V- 3.3V arasında belirleyeceğiniz 8 adet gerilim değerinden ilkini potansiyometrenin direnç oranını değiştirerek elde ediniz. d) "C:\ADUC\SeriPortOku.exe" programını çalıştırınız. e) P2.6 düğmesine basarak ekranda okunan iki adet 16 lık düzende kodlanmış sayıyı Ölçüm Sonuçları kâğıdına kaydediniz. f) Diğer gerilim değerleri için de c, d ve e şıklarını tekrarlayınız. Vdd RV1 POT ADC0 GND Şekil 7 Gerilim bölücü devresi 9

BAŞLA ADCCON1 ve ADCCON2 saklayıcılarına uygun değerleri yaz UART için gerekli ayarları yap P2.6 düğmesi yeniden basılana kadar bekle* Bir ADC çevrimi yap ADCDATAH saklayıcı değerini (kanal bilgisini silip) UART üzerinden gönder ADCDATAL saklayıcı değerini UART üzerinden gönder Şekil 8 2.6 için akış diyagramı * Bakınız, Şekil-2 10

EK-1 PORTLARIN Kullanımı ADuC 841 de 4 adet 8 bitlik port bulunmaktadır. Bu portlara doğrudan P0, P1, P2, P3 saklayıcılarıyla erişilebilir. P1, tek yönlü (yalnızca giriş) portudur, diğer portlar hem giriş hem de çıkış portlarıdır. Giriş-çıkış portlarının yönünün (giriş ya da çıkış olması) önceden belirlenmesine gerek yoktur. Px saklayıcına bir veri yazılınca port çıkış portu olarak çalışır, Px saklayıcısı okununca da port giriş portu olarak çalışır. Bütün port bitlerine tek tek ulaşılabilir. Porta veri yazmak (port 1 hariç) ya da port u okumak için MOV komutu kullanılabilir: MOV P2, #07H; P2=07H port a bir byte yaz MOV A, P2; A=P2 port u A saklayıcısına sakla Bir portun (port 1 hariç) bir bitini değiştirmek için SETB ya da CLR komutları kullanılır. Bitler üzerinde yapılan işlemler port pinleri üzerinde de geçerlidir. SETB P2.7; P2.7=1 CLR P2.6; P2.6=0 CPL P2.4; P2.4=(P2.4) ' JB P2.6, EX; P2.6 biti kontrol edilir, sonuç 1 ise EX adresine atlanır EK-2 TIMER kullanımı ADuC 841, 4 adet Timer (T0, T1, T2, T3) içerir. Bunlardan T0 ve T1 16 bitlik programlanabilir zamanlayıcılardır. T2, ADC için örnekleme frekansını belirler. T3 ise UART için baudrate i belirler. T0 ve T1, zamanlayıcı olarak kullanılırken, THx ve TLx saklayıcılarına 16 bitlik bir değer atanır. Timer ın çalışması için TRX biti 1 yapılmalıdır (X=0 ya da 1). Timer çalışırken her işlemci çevriminde (1/saat_frekansı = 90.42 ns) TIMER değeri bir artar. THX TLX değeri "FFFFH" değerini geçtiği anda TFX biti 1 yapılır ve işlemciye TimerX kesmesi gönderilir. TMOD Timer 0 ve 1 Mod Saklayıcısı GATE C/T M1 M0 GATE C/T M1 M0 Bit Đsim Açıklama 7 GATE Timer1 kontrolünün kim tarafından yapılacağını bildirir. 0 yapılırsa, TR1 kontrol biti Timer ı kontrol eder. 1 yapılırsa, dış kesme hattı (INT1) tarafından kontrol edilir. 6 C/T Timer1 i "Counter" ya da "Timer" olarak çalıştırır. (Counter seçildiğinde, Timer sayacı T1 pini ile artırılır) Counter=1, Timer=0 5 M1 M1 ve M0, Timer1 modunu belirler. M1=0, M0=1 yapılırsa, 16-bit Timer olarak 4 M0 çalışır. 3 GATE Timer0 kontrolünün kim tarafından yapılacağını bildirir. 0 yapılırsa TR0 kontrol 11

biti Timer ı kontrol eder. 1 yapılırsa, dış kesme hattı (INT0) tarafından kontrol edilir. 2 C/T Timer0 i "Counter" ya da "Timer" olarak çalıştırır. (Counter seçildiğinde, Timer sayacı T0 pini ile artırılır) Counter=1, Timer=0 1 M1 M1 ve M0, Timer0 modunu belirler. M1=0, M0=1 yapılırsa, 16-bit Timer olarak 0 M0 çalışır. TCON Timer 0 ve 1 Kontrol Saklayıcısı TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 NOT: Bu saklayıcı bit adreslenebilirdir, her bite kendi adı ile erişilebilir. Bit Đsim Açıklama 7 TF1 Timer1 taşma biti, Timer1 sayacı FFFF adresine ulaştıktan sonra bir daha artırılırsa TF1 biti donanım tarafından 1 yapılır. Kesme kullanılıyorsa sıfıra çekilir, kullanılmıyorsa program içinde sıfırlanmalıdır. 6 TR1 Timer1 kontrol biti. 1: Timer1 aktif 0: Timer1 kapalı 5 TF0 Timer0 taşma biti, Timer0 sayacı FFFF adresine ulaştıktan sonra bir daha artırılırsa TF0 biti donanım tarafından 1 yapılır. Kesme kullanılıyorsa sıfıra çekilir, kullanılmıyorsa program içinde sıfırlanmalıdır. 4 TR0 Timer0 kontrol biti. 1: Timer0 aktif 0: Timer0 kapalı 3 IE1 Son 4 bit dış ortamdan tetiklenme sağlamak için ayarlanır. (Kullanılmadığı zaman 0,0,0,0 olarak ayarlanacaklardır) 2 IT1 1 IE0 0 IT0 THx ve TLx : 16 Bit Timer değeri THx ve TLx (x=0 ya da 1) saklayıcılarına atılır. Đstenilen süre THx ve TLx saklayıcılarıyla ayarlanır. THx ve TLx saklayıcı değerleri aşağıda hesaplanan X değerini temsil edecektir. Timer ın ayarlanacağı süre= T Sistem saat frekansı: 11.0592 MHz Timer periyodu: 1/11.0592MHz=90.42ns T=90.42ns (65536-X) 12

X numaralı Timer ın kullanımı (kesme olmadan) 1. TMOD ve TCON saklayıcısı ayarlanır (TRX=0 yapılmalı) 2. THX ve TLX saklayıcıları istenilen süreye göre ayarlanır. 3. TRX=1 yapılır, TimerX çalışmaya başlar. 4. TFX biti 1 olana kadar kontrol edilir, 1 olduğunda istenilen süre dolmuş demektir. 5. Timer ı Tekrar çalıştırmak için TFX biti sıfırlanır, 2. adıma dönülür. EK-3 UART kullanımı UART, donanım elemanları tarafından sıkça kullanılan bir haberleşme protokolüdür. Veri tek hat üzerinden karşı tarafa iletilir (Tx), tek hat üzerinden de alınır (Rx). ADuC 841 denetleyicisinden UART haberleşmesi için bir Rx ve bir Tx hattı bulunmaktadır. Seri haberleşme protokolü SFR ler aracılığıyla kurulup veri aktarımı kolayca yapılabilir. UART çeşitli aktarım hızlarına sahiptir. Bu hızlar TIMER3 ayarlanarak gerçeklenir. SCON Seri Port kontrol saklayıcısı SM0 SM1 SM2 REN TB8 RB8 TI RI NOT: Bu saklayıcı bit adreslenebilirdir, her bite kendi adı ile erişilebilir. Bit Đsim Açıklama 7 SM0 SM0 ve SM1 seri heberleşme modunu seçer. Bu modlar aşağıda belirtilmiştir. Mod0 (SM0=0, SM1=0): Kaydırma saklayıcısı türü. Bit gönderim hızı sabittir. Mod1 (SM0=0, SM1=1): 8 bit UART haberleşmesi. Bit gönderim hızı 6 SM1 seçilebilir. Bir başla biti ile bir dur biti karaktere eklenir. Genellikle bu mod kullanılır. Mod2 (SM0=1, SM1=0): 9 bit UART haberleşmesi. Sabit bit gönderim hızı. MOD3(SM0=1 SM1=1): 9 bit UART haberleşmesi, seçilebilir bit gönderim hızı. 5 SM2 SM2 çoklu işlemci haberleşmesinin olması durumunda bir yapılır. 4 REN REN biti seri haberleşmeden veri alımının aktif olduğunu belirtir. 3 TB8 TB8 ve RB8 Mod 2 ve 3 için 9. bitler olmaktadırlar. 2 RB8 1 TI Bir karakter gönderildiğinde TI kesme biti donanım tarafından 1 yapılır. Daha sonra kullanıcı tarafından 0 yapılmalıdır. 0 RI Bir karakter alındığında RI kesme biti donanım tarafından 1 yapılır. Daha sonra kullanıcı tarafından 0 yapılmalıdır. 13

UART Veri aktarım hızının (Baud Rate) ayarlanması Seri haberleşmede veri bit-bit aktarılır. Doğru bir biçimde haberleşmek için iki bit arasında belirli bir süre geçmesi gereklidir. Bu süre baud rate ile ilişkilidir. Haberleşmenin sağlanması için Baud Rate değeri hem alıcı hem de verici tarafından bilinmelidir. Timer3 kullanılarak veri aktarım hızı ayarlanabilir. Bu amaçla Timer3 kontrol saklayıcıları olan T3CON ve T3FD saklayıcıları aşağıdaki gibi ayarlanmalıdır (Denklemlerde 10 tabanında logaritma kullanılmaktadır). Veri gönderimi ve alımı Veri gönderimi ve alımı için SBUF saklayıcısı kullanılır. Bu saklayıcıya veri yazmak, verinin seri porttan iletilmesine, saklayıcının içeriğini başka bir saklayıcıya atmak, dışarıdan gelen veriyi okumak anlamına gelir. Veri gönderimi Öncelikle, daha önceki veri gönderme işleminin tamamlanmış olduğunu sorgulamak için TI bitine bakılır. Bu bit 1 ise seri port gönderime hazır demektir. Veri alımı JNB TI, $ CLR TI MOV SBUF, A Öncelikle, yeni veri gelip gelmediği öğrenilmelidir. Bu amaçla RI bitine bakılır. Eğer bir ise yeni veri gelmiştir, SBUF saklayıcısından alınabilir. JNB RI, $ CLR RI MOV A, SBUF 14

EK-4 ADC nin kullanımı ADC, dış ortamdaki analog gerilim değerlerini sayısal koda dönüştüren bir çevre birimidir. ADuC 841 de 12 bit çözünürlüğünde 8 adet ADC bulunmaktadır. 0V-V REF ya da 0-V DD arası 12 bitlik değere dönüştürülür. V REF ayarlanabilir olup normal durumda 2.5V tur. ADCCON1 ADC Kontrol Saklayıcısı-1 ADCCON1 saklayıcısı ADC lerin okuma hızını ayarlar, ADC leri kullanıma sokar ya da kapatır. Bu saklayıcı ile okuma frekansı ile bir okuma için harcanması gereken süre belirtilmektedir. MD1 EXT_REF CK1 CK0 AQ1 AQ0 T2C EXC Bit Đsim Açıklama 7 MD1 ADC mod biti. ADC ler çalıştırılacak ise 1, kapatılacaksa 0 yapılır. 6 EXT_REF Referans geriliminin nereden alınacağını bildirir. Harici referans için 1, dahili referans için 0 kullanılır. 5 CK1 5. ve 4. bitler ADC saat hızının ayarlanmasını sağlar. Tipik uygulamalarda 00 seçilebilir. 4 CK0 3 AQ1 3. ve 2. bitler analog sinyalin tutulma süresini belirler. 11 seçilirse daha doğru (ama daha yavaş) hızda çevrim yapılır 2 AQ0 1 T2C 1 seçilirse ADC yi TIMER2 ye bağlar, böylece ADC nin TIMER2 taşma kesmesiyle okumaya başlayacağını belirtir. Örnekleme frekansı da TIMER2 tarafından belirlenir. 0 EXC Okuma işlemi için harici bir tetik kullanılacağını bildirir. NOT: Uygulamada ADC giriş gerilimleri 0-V DD arasında değişecektir. Harici referans ucu halihazırda denetleyici devresinde 3.3V gerilimine bağlanmıştır. ADC ler tek çevrimli olarak, (Timer 2 ye bağlı olmadan) okuma yapacaktır. ADCCON2 ADC Kontrol Saklayıcısı-2 ADCCON2 saklayıcısı ile kanal ve okuma modu seçimi yapılır. ADCI DMA CCONV SCONV CS3 CS2 CS1 CS0 NOT: Bu saklayıcı bit adreslenebilirdir, her bite kendi adı ile erişilebilir. 15

Bit Đsim Açıklama 7 ADCI ADC kesme biti. 1 yapılmasıyla her okuma sonunda 1 yapılır ve bir kesme oluşur. 6 DMA DMA modu etkinleştirme biti 5 CCONV Sürekli çevrim etkinleştirme biti 4 SCONV Tek çevrim etkinleştirme biti. 1 yapılarak ADC nin bir veri okumasını sağlanır 3 CS3 3,2,1,0 nolu bitler hangi kanaldan okuma yapılacağı belirler. 2 CS2 1 CS1 0 CS0 ADC verisi 12 bit ADC okuma sonucu 2 saklayıcıya yazılır (ADCDATAH, ADCDATAL). Yüksek anlamlı bitleri içeren SFR (ADCDATAH), ayrıca okunan kanalın numarasını da içerir ADC'nin kullanımı (kesme olmadan) 1. ADCCON1 ve ADCCON2 saklayıcıları ayarlanır, kanal seçimi yapılır (SCONV=0 yapılmalı) 2. SCONV=1 yapılır. 3. ADCI biti 1 olana kadar kontrol edilir, 1 olduğunda ADC okuması tamamlanmış demektir. 4. ADC okuma bilgisi ADCDATAH ve ADCDATAL saklayıcılarından elde edilir. 5. ADC yi tekrar çalıştırmak için ADCI biti temizlenir, 2. adıma dönülür. 16

EK-5 DAC nin kullanımı DAC, sayısal veriyi analog gerilim değerine dönüştüren bir çeviricidir. ADuC 841 de 12 bit çözünürlüğünde 2 adet DAC bulunmaktadır. 12 bitlik değer 0V ile V DD arasına dönüştürülebilir. DAC0 ve DAC1, Sayısal analog çevirici, DAC kontrol saklayıcısına (DACCON) gerekli değer yazılarak ayarlanır. DAC ların düzgün çalışması için ADC ler etkin olmalıdır (ADCCON1 saklayıcısında MD1 biti 1 yapılmalıdır) DACCON DAC Kontrol Saklayıcısı MODE RNG1 RNG0 CLR1 CLR0 SYNC PD1 PD0 Bit Đsim Açıklama 7 MODE Veri tipini 8 bit ya da 12 bit ayarlanmasını sağlar. (1: 8 bit, 0: 12 bit) 6 RNG1 DAC1 için gerilim üst sınırını belirler (0: 0-VREF, 1: 0-VDD) 5 RNG0 DAC0 için gerilim üst sınırını belirler (0: 0-VREF, 1: 0-VDD) 4 CLR1 1 değeri DAC1 çıkışını normal değerinde bırakır, 0 yazılırsa çıkışı 0V olmaya zorlar. 3 CLR0 1 değeri DAC0 çıkışını normal değerinde bırakır, 0 yazılırsa çıkışı 0V olmaya zorlar. 2 SYNC 1 seçildiğinde, çıkış gerilimi DACxL ye yazıldığı anda değiştirilir. 0 iken çıkış gerilimini değiştirmek için SYNC biti 1 yapılmalıdır. 1 PD1 DAC1 aktif/kapalı biti (1: aktif, 0:kapalı) 0 PD0 DAC0 aktif/kapalı biti (1: aktif, 0:kapalı) DACxH, DACxL DAC Değer Saklayıcıları DAC0 ve DAC1 için iki ayrı saklayıcı çifti vardır (DAC0H, DAC0L ve DAC1H, DAC1L). Gönderilecek olan gerilim değeri, aşağıdaki denkleme göre 16 bitlik koda dönüştürülür. (uygulamada V REF =V DD alınacaktır). 17

DAC nin kullanımı (X numaralı DAC için, SYNC biti=1) 1. DACCON saklayıcına uygun değer yazılır (SYNC biti=1, 12 bit) 2. DACxH değeri önce yazılır. 3. DACxL değeri sonra yazılır, yazılmasıyla beraber DACx çıkışı değişir. EK-6 Kesmelerin kullanımı Kesme geldiğinde aşağıdaki işlemler gerçekleşir: 1. Program sayacının önce düşük, sonra yüksek anlamlı byte ı yığına atılır. 2. Aynı öncelikli ve düşük öncelikli diğer tüm kesmeler iptal edilir. bu aşamadan sonra yüksek öncelikli bir kesme gelmedikçe gelmiş olan kesmeye hizmet verilir. 3. Seri PORT kesmesi hariç diğer tüm kesme kaynakları için kesme bayrağı sıfırlanır. 4. Program sayacı gelen kesmenin türüne göre belirlenmiş olan adrese atlar, işlemci buradaki kodu koşmaya başlar. 5. RETI komutu gelene kadar işlemci kesmeden çıkamaz. RETI komutuyla program sayacını yığından geri çeker, kesme durumu eski haline getirilir. Đşlemci kesme gelmeden önceki işleyişine devam eder. Kesmelerin karşılanması için istenilen kesme aktifleştirme bitleri bir yapılmalıdır. Bu amaçla IE, kesme etkinleştirme saklayıcı değeri değiştirilir. IE Kesme Etkinleştirme Saklayıcısı EA EADC ET2 ES ET1 EX1 ET0 EX0 NOT: Bu saklayıcı bit adreslenebilirdir, her bite kendi adı üzerinden erişilebilir. EA : Tüm kesmelerin iptali için 0 yapılır. Herhangi bir kesmenin kullanılması için 1 yapılmalıdır. EADC : ADC kesmesinin iptali için 0 yapılır, etkinleştirilmesi için 1 yapılır. ET2 : TIMER2 kesmesinin iptali için 0 yapılır, etkinleştirilmesi için 1 yapılır. ES : UART kesmesinin iptali için 0 yapılır, etkinleştirilmesi için 1 yapılır. ET1 : TIMER1 kesmesinin iptali için 0 yapılır, etkinleştirilmesi için 1 yapılır. EX1 : Harici kesme kaynağı-1 kesmesi iptali için 0 yapılır, etkinleştirilmesi için 1 yapılır. ET0 : TIMER0 kesmesinin iptali için 0 yapılır, etkinleştirilmesi için 1 yapılır. EX0 : Harici kesme kaynağı-0 kesmesi iptali için 0 yapılır, etkinleştirilmesi için 1 yapılır. Aktifleştirilmiş bir kesme olayı meydana geldiği zaman, program ilgili kesme adresine dallanır. Kesme adresleri sabittir, aşağıda belirtilmişlerdir. Yazılan program kodunun adresini tanımlamak için Kod içinde ORG XXXXH komutu kullanılır. Daha sonra, bu kesme geldiğinde gidilecek olan fonksiyona bir JMP işlemi gerçekleştirilir. 18

ADuC 841 de kesme vektör tablosu Kesme kullanımı için örnek kod ORG 0000H JMP BASLA ORG 000BH JMP TIME_INT ORG JMP 0033H ADC_KESME BASLA: TIME_INT: RETI ADC_KESME: RETI EK-7 ASM PROGRAMI YAZMA, DERLEME ve YÜKLEME ASM (Assembly), düşük seviyeli bir programlama dili olup işlemciye ait çeşitli komutları içermektedir. ASM dilinde yazılabilecek komutlar ADuC841 Katalog unda belirtilmiştir. ASM program örnekleri için " C:\aduc\Code\841" klasöründeki asm uzantılı dosyalar incelenebilir. ASM dosyaları program kodunu içermektedir. Herhangi bir metin editörü (Ör: Notepad ) ile açılıp düzenlenebilirler. ASM Programı Derleme 1..asm uzantılı program dosyasını (örnek: deneme.asm) "C:\aduc\ASM51" klasörüne kopyalayınız. 2. Bu klasördeki asm51.exe dosyasını çalıştırınız. 3. Đstenen.asm uzantılı kaynak dosyasını (source file) belirtiniz. Ör: deneme komutunu yazınız. 4. Programda hata varsa, oluşan lst uzantılı dosyadan hataları görebilirsiniz. 5. Program hatasız derlenmişse, oluşan hex uzantılı dosya işlemciye yüklenebilir. 19

µ-denetleyiciye Program Dosyasını Yükleme 1. "C:\aduc\Download\wsd.exe" programını çalıştırınız. 2. Denetleyici devresinde bulunan Debug tuşuna basıyorken Reset tuşuna basınız, ardından önce reset tuşunu, sonra da Debug tuşunu bırakınız. 3. WSD programında "Download" tuşuna basınız. Eğer denetleyici ye ulaşılabiliyorsa dosya seçimi penceresi açılacaktır, bir sorun varsa hata mesajı görülecektir. 2. ve 3. adımı tekrarlayınız. Eğer sorun devam ederse asistanı çağırınız. 4. Dosya seçimi penceresinden derleme sırasında oluşan hex uzantılı dosyayı seçiniz, program işlemciye yüklenecektir. 5. Yüklemenin ardından WSD üzerinde "Run" tuşuna basınız. Denetleyici, yüklenen kodu çalıştırmaya başlayacaktır. 6. Denetleyici devresi üzerindeki reset tuşuna istenildiği zaman basılıp, işlemci reset lenebilir. Böylece denetleyiciye yüklenmiş olan program yeniden başlar. NOT: Eğer aynı zamanda Hyperterminal programı da çalışıyorsa, WSD programı hata verebilir, önce bu programı kapatınız. Kaynak: - www.analog.com - ADuC 841 data sheet Kolay gelsin, başarılar 20