You are on page 1of 47

C ile 8051 Mikrodenetleyici Uygulamaları

Dr. Ahmet Turan ÖZCERİT, Murat ÇAKIROĞLU, Cüneyt BAYILMIŞ

8051 ve C
2006 Bahar Yarı yılı

http://www.8051turk.com
Başvuru Kaynakları
‹ C ile 8051 Mikrodenetleyici Uygulamaları Türkçe
Dr. Ahmet Turan Özcerit, Murat Çakıroğlu, Cüneyt Bayılmış
Papatya yayıncılık – www.papatya.gen.tr
‹ Mikroişlemciler ve 8051 Ailesi Türkçe
Haluk Gümüşkaya- Alfa
‹ The 8051 Microcontroller
I. Scott MacKenzie
‹ Akif Kutlu
Süleyman Demirel Üniversitesi
‹ www.8051turk.com
‹ www.8051ailesi.com
‹ www.keil.com
‹ www.8052.com
‹ http://www.pjrc.com/tech/8051/
‹ http://www.ume.tubitak.gov.tr/lablar/ozel_olcumler/index.html
Türkçe
‹ http://chaokhun.kmitl.ac.th/~kswichit/ (örnek projeler)
‹ http://instruct1.cit.cornell.edu/courses/ee476/FinalProjects/
Mikrodenetleyici İle Proje Hazırlama Aşamaları
‹ Ne yapılacağına ve hangi mikrodenetleyicinin kullanılacağına
karar verilmeli

‹ Kullanım kitapçığı okunmalı

‹ KEIL ile kod yazılmalı, derlenmeli ve hatalar düzeltilmeli

‹ Yazılım simülasyonu yapılmalı mantık hataları düzeltilmeli

‹ Donanım simülasyonu yapılmalı

‹ Devre kurulmalı ve gerçek ortamda test edilmeli

‹ Varsa hatalar düzeltilmeli (Zamanlama, bağlantı vs)

‹ Seri üretim için OTP (One time Programable) versiyonu


kullanılmalıdır
Araçlar

‹ Keil µVision2

‹ Proteus ISIS – ARES

‹ AT89C51RC2 Tabanlı Geliştirme Kartı


C ile 8051 Mikrodenetleyici Uygulamaları
Dr. Ahmet Turan ÖZCERİT, Murat ÇAKIROĞLU, Cüneyt BAYILMIŞ

PROTEUS

http://www.8051turk.com
PROTEUS Nedir?
‹ Devre çizimi, simülasyon, animasyon ve baskı devre
çizimi yapmaya imkan tanıyan paket programlardan
birisidir.

‹ 12 yıllık bir çalışma sonucunda Labcenter Elecronics


(www.labcenter.co.uk) tarafından üretilmiştir.
PROTEUS Programının Avantajları

‹ Çok sayıda elemanı desteleyen Kütüphanelere sahiptir.

‹ Mikroişlemcili ve Mikrodenetleyici sistemleri LED, Display,


LCD gibi görsel elemanlarla birlikte simüle edebilen tek
simülasyon programı.

‹ Gerçek zamanlı simülasyon yapmaya olanak sağlar.

‹ Otomatik Baskı devre çizmeye imkan tanır.


Başlık Çubuğu

Menü Çubuğu

Araç
Çubukları

Tasarım
Alanı
Ön izleme

Tasarım
Alanı

Tasarım
Araç
Çubuğu
Eleman
Kutusu

Devre Çalıştırma Düğmeleri


C ile 8051 Mikrodenetleyici Uygulamaları
Dr. Ahmet Turan ÖZCERİT, Murat ÇAKIROĞLU, Cüneyt BAYILMIŞ

KEIL µVision
http://www.8051turk.com
Keil µVision Yazılımının Temel Özellikleri

‹ Keil Software firması tarafından geliştirilmiştir. www.keil.com

‹ 8051 mikrodenetleyicisi ve türevleri için kaynak kod yazımı

‹ C derleyicisi, makro assembler, bağlayıcı (linker) ve Hex kod


dönüşümü

‹ Yazılan kodların hatalarının tespiti ve ayıklanması

‹ Seçilen hedef mikrodenetleyicinin içerdiği çevre birimler ile


yazılan uygulamaların benzetiminin gerçekleştirilmesi

‹ Birçok farklı üreticinin ürünlerini desteklemektedir


File Menüsü
Dosya Menüsü
Kod yazımı için yeni bir text (metin) dosyası oluştur
Mevcut bir dosyayı aç
Şuan aktif olan dosyayı kapat
Şuan aktif olan dosyayı kaydet
Şuan aktif olan dosyayı farklı bir isim ile kaydet
Tüm açık kaynak ve metin (text) dosyaları kaydet
µVision2 eleman veritabanının bakımını yap
Yazıcıyı ayarlar
Aktif dosyanın çıktısını alır
Çıktı alacak şekilde ön izleme yapar

En son açılmış olan 9’a kadar dosyaların ismi görülür

Açık olan dosyaların kaydedilmesini sorarak,


programı kapatır
Edit Menüsü

Edit Menüsü
En son yapılan işlemi geri al
En son geri alınan işlemi yinele
Seçili metni kes
Seçili metni kopyala
Kopyalanan ya da kesilen metni yapıştır
Seçili metne 1 tab sağa doğru girinti ver
Seçili metne 1 tab sola doğru girinti ver
Geçerli satıra işaret (bookmark) koy
Bir sonraki işaretli (bookmark) satıra git
Bir önceki işaretli (bookmark) satıra git
Aktif dosyadaki tüm işaretleri (bookmark) sil
Aktif dosyadaki bir metni bul (ara)
Belirli bir metni ya da ifadeyi başka bir metin veya
ifade ile değiştir
Birkaç dosyada bul (ara)
İki ayraç ({,}) arasını seç
View Menüsü
View Menüsü
Durum çubuğunu göster veya gizle
Dosya araç çubuğunu göster veya gizle
Derleme araç çubuğunu göster veya gizle
Debug araç çubuğunu göster veya gizle

Proje penceresini göster ya da gizle


Çıktı (output) penceresini göster ya da gizle
Kaynak tarayıcı penceresini aç

Diassembly penceresini göster veya gizle


Watch & Call yığın penceresini göster veya gizle (programdaki değdeğişkenler)
Bellek penceresini göster veya gizle
Programdaki fonksiyonların kaç komuttan oluştuğu pencereyi
göster/gizle
Performans çözümleyici penceresini göster ya da gizle
8051’e ya da aktif dosyaya ait tüm sembolleri göster ya da gizle
Seri haberleşme penceresi 1’i göster ya da gizle
Seri haberleşme penceresi 2’i göster ya da gizle
Toolbox’ı göster ya da gizle (Define komutu ile yapı
yapılan tanı
tanımlamaları
mlamaları)
Program çalışırken debug pencerelerini günceller
Çalışma alanının altında açık keil dosyalarını gösterir
Renk, font, kısayol ve editör özelliklerini düzenler
Debug Menüsü
Debug Menüsü (Hata Ayıklama İşlemleri)
µVision2 debug modunu başlatır ya da durdurur
Bir sonraki aktif kesme noktasına kadar programı çalıştırır
Bir fonksiyon içerisinde tek bir adımı (satır) çalıştırır
Bir fonksiyonu çalıştırır diğer fonksiyona atlar
Geçerli fonksiyonun dışına atlar

Programın çalışmasını durdur


Geçerli Breakpoints (kesme noktalarını) göster
İmlecin bulunduğu satıra kesme noktası ekle ya da kaldır
Bir kesme noktasını aktif ya da pasif et
Programdaki tüm kesme noktalarını pasif et
Programdaki tüm kesme noktalarını kaldır
Çalıştırılacak bir sonraki komut ya da satırı göster

Bellek harita diyalog penceresini aç


Performansı ölçülecek fonksiyonları belirle
Assembly formatında geçerli satırda yeni komut gir (var olan
komutu değ
değiştir)
Debug INI dosyası ve debug fonksiyonlarını düzenler
Peripherals Menüsü
Program Çalışırken 8051 Çip İçi Çevresel Birimlerin Durumunu Gösterir
İşlemciyi Reset durumuna kurar
Kesmelerin durumlarını gösterir (kesme diyalog penceresini açar)
Seçilen işlemcinin portlarının içeriğini gösterir
Seri haberleşme biriminin özelliklerini ve kaydedici içeriklerini gösterir
Program çalışırken zamanlayıcı biriminin içeriğini gösterir
Bu kısımlar seçilen işlemciye göre değişiklik gösterir. ROMu gösterir
Osilatörün kristal frekansını düzenler

Window Menüsü
Pencere menüsü
Pencereleri üst üste (hiyerarşik olarak) gösterir
Pencereleri alt alta yatay olarak döşe
Pencereleri yan yana dikey olarak döşe
Pencere altındaki ikonları düzenle
Pencereleri böl
Tüm açık pencereleri kapat
Aktif açık pencere
Tools Menüsü

Kullanıcı programlarını menüye ekler


Gimpel yazılımından PC-Lint i konfigüre et
Geçerli editör dosyasında PC-Lint i çalıştır
Projenin C dosyalarını çapraz olarak PC-Lint i çalıştır
Siemens easy-case i düzenle
Siemens easy-case i başlat ya da durdur
Geçerli editör ile easy-case i aç
Araç menüsüne kullanıcı programlarını ekle
Tüm Program Geliştirme Ortamı
µVision2
*.src
Görev.Uv2
Görev.plg
*.inc
*.inc A51,AX51 Görev1.lst
rev1.lst Görev.opt
rev.opt

LIB51,LIBx51

Görev1.a51 Görev1.obj Görev.lib


rev.lib

Görev3.p51 PL/M51 Görev3.obj *.lib


*.lib Simü
Simülatö
latör

BL51,LX51
Eprom 8051
Görev2.c Görev2.obj Görev. Obj > hex Programlayıcı devresi

C51,CX51 Görev2.lst
rev2.lst Görev.cod
rev.cod Görev.m51 Görev.hex hex > bin Görev.bin

8051
*.h
*.h Görev2.I Görev2.src Emülatörü Harici
Donanım
Simülatörü
(Proteus)
Keil ile C Derleme Aşamaları

Öniş
nişlemci Linker
Yönlendiricileri Kontrol
Yönlendiricileri
Yönlendiricileri

void main(void) pT pT
{ void main(void) pT pT
{X_Init();
X_Init();
Kütüphane Mutlak nesne
while(1) Kütüphane Mutlak nesne
Referansları dosyası
{while(1)
{X(); C51.EXE Referansları
olan nesne
olan nesne
dosyası
} X();
} } CX51.EXE dosyası
dosyası
}

Görev.C Görev Görev2.OBJ Görev2.


Görev
ANSI C 2.c
2.c BL51.EXE
(C.90)
Üretilen Diğ
Diğer YY.LIB
YY.LIB Üretilen Diğ
Diğer
Görev2.h
Görev2.h
Dosyalar
Dosyalar
Klasörler - Dosyalar
Mikrodenetleyici Tabanlı C Program Yapısı
#include <89c51rd2.H>
kütüphane dosyalarının yazılması
#include <stdio.h>
#define ...
sfr ...
sbit ... global değişkenlerin tanımlanması
int…
void alt_program()
{
alt programların yazılması

}
void kesme_0() interrupt 0
kesme rutinlerinin tanımlanması
{
……
{
main()
{
……
while(1) //sonsuz döngü
{ ana programın yazılması
……
}
}
Keil C51 Derleyicisindeki Veri Tipleri
Veri Tipi Bits Bytes Değer Aralığı
Bit 1 0…1
Signed char 8 1 -128 … +127
Unsigned char 8 1 0 … 255
Enum 8 / 16 1 ya da 2 -128 … +127 veya -32768 … +32767
Signed short 16 2 -32768 … +32767
Unsigned short 16 2 0 to 65535
Signed int 16 2 -32768 to +32767
Unsigned int 16 2 0 to 65535
Signed long 32 4 -2147483648 to +2147483647
Unsigned long 32 4 0 to 4294967295
Float 32 4 +/-1.7549E+38 to +/-3.402823E+38
Sbit 1 0 to 1
Sfr 8 1 0 to 256
Sfr16 16 2 0 to 65535
Keil C51 Derleyicisindeki Veri Tipleri
Bit Bit Adres
7F
‹ Tek bitlik (bir bit) bir değişken tanımlamak
için kullanılır.
GENEL AMAÇ
AMAÇLI
RAM
‹ Tanımlanan bütün bit değişenleri 8051
mikrodenetleyicisinin dahili hafızasında
bulunan bit adreslenebilir bölgede 30
tutulur. 2F 7F 7E 7D 7C 7B 7A 79 78
77 76 75 74 73 72 71 70
6F 6E 6D 6C 6B 6A 69 68
‹ Bit adreslenebilir bölgenin toplam 67 66 65 64 63 62 61 60
büyüklüğü 16 Bayt uzunluğundadır 5F 5E 5D 5C 5B 5A 59 58
dolayısıyla bir uygulama içersinde toplam 57 56 55 54 53 52 51 50
128 adet bit değişkeni kullanılabilir. 4F 4E 4D 4C 4B 4A 49 48
Bit 47 46 45 44 43 42 41 40
Adreslenebilir
‹ Bit veri tipi ANSI C standardında Bölge
3F 3E 3D 3C 3B 3A 39 38
bulunmayan bir veri tipidir. 37 36 35 34 33 32 31 30
2F 2E 2D 2C 2B 2A 29 28
27 26 25 24 23 22 21 20
Örnek:
1F 1E 1D 1C 1B 1A 19 18
17 16 15 14 13 12 11 10
bit led; /*led değişkeninin bit olarak 21 0F 0E 0D 0C 0B 0A 09 08
tanımlanması*/ 20 07 06 05 04 03 02 01 00
1F BANK 3
led=1; /* led değişkenine bir değer 18
atılması*/ 17 BANK 2
10
0F
Not: bit tanı BANK 1
tanımlamaları
mlamaları main () iç
içerisinde yapı
yapılır. 08
07 İlk Kayı
Kayıtçı Bankası
Bankası
00 R0-
R0-R7

RAM
Keil C51 Derleyicisindeki Veri Tipleri

signed char/unsigned char


‹ Bu veri tipleri, standart C dilinde de bulunmaktadır.

‹ 1 bayt (8 bit) uzunluğundadır.

‹ signed char veri tipinin aralığı -128 ile +127 arasındadır

‹ unsigned char veri tipinin aralığı 0 ile 255 arasındadır.

Örnek:

unsigned char veri; /* veri değişkeninin işaretsiz


karakter olarak tanımlanması*/

veri=0xFF; /*veri değişkenine 0FFh değerinin atılması*/


Keil C51 Derleyicisindeki Veri Tipleri

sbit Bayt
Adres
FF
Bit Adres

F0 F7 F6 F5 F4 F3 F2 F1 F0 B

‹ SFR adres bölgesindeki her hangi bir bite E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC


erişmek için kullanılır.
CY D6 D5 D4 D3 D2 - D0 PSW
D0 D7

‹ SFR hafıza bölgesinin tamamı bit - - - BC BB BA B9 B8 IP


B8
adreslenebilir değildir.
B0 B7 B6 B5 B4 B3 B2 B1 B0 P3

A8 AF
EA - - AC AB AA A9 A8 IE

Örnek: A0 A7 A6 A5 A4 A3 A2 A1 A0 P2

sbit CY=PSW^7; /* PSW kayıtçısının 7.bitinin CY 99 Bit Adreslenemez SBUF


değişkeni olarak tanımlanması*/ 98 9F 9E 9D 9C 9B 9A 99 98 SCON

90 97 96 95 94 93 92 91 90 P1
sbit EA=0xAF; /*EA değişkenin tanımlanması */
8D Bit Adreslenemez TH1
8C Bit Adreslenemez TH0
sbit EA=IE^7; /*EA değişkenin tanımlanması*/
8B Bit Adreslenemez TL1
8A Bit Adreslenemez TL0
89 Bit Adreslenemez TMOD
Not: sbit tanımlamaları main () öncesinde yapılır. 88 8F 8E 8D 8C 8B 8A 89 88 TCON
87 Bit Adreslenemez PCON

83 Bit Adreslenemez DPH


82 Bit Adreslenemez DPL
81 Bit Adreslenemez SP
80 87 86 85 84 83 82 81 80 P0

Özel Fonksiyon Saklayıcıları


Keil C51 Derleyicisindeki Veri Tipleri

sfr Bayt
Adres
FF
Bit Adres

F0 F7 F6 F5 F4 F3 F2 F1 F0 B

‹ SFR bellek bölgesinden 8 bitlik herhangi bir E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC


değişkeni tanımlamak için kullanılan veri tipidir.
D0 D7 D6 D5 D4 D3 D2 - D0 PSW

‹ sfr veri tipi de standart C dilinde mevcut değildir. B8 - - - BC BB BA B9 B8 IP

B0 B7 B6 B5 B4 B3 B2 B1 B0 P3
‹ Yapı olarak diğer 8 bitlik veri tiplerine
benzemektedir. A8 AF - - AC AB AA A9 A8 IE

A0 A7 A6 A5 A4 A3 A2 A1 A0 P2

Örnek: 99 Bit Adreslenemez SBUF


98 9F 9E 9D 9C 9B 9A 99 98 SCON
sfr P0=0x80; /* Port-0’ın tanımlanması */
90 97 96 95 94 93 92 91 90 P1

sfr P1=0x90; /* Port-1’ın tanımlanması */ 8D Bit Adreslenemez TH1


8C Bit Adreslenemez TH0
8B Bit Adreslenemez TL1
sfr P2=0xA0; /* Port-2’nin tanımlanması */
Bit Adreslenemez TL0
8A
89 Bit Adreslenemez TMOD
88 8F 8E 8D 8C 8B 8A 89 88 TCON
87 Bit Adreslenemez PCON

83 Bit Adreslenemez DPH


82 Bit Adreslenemez DPL
81 Bit Adreslenemez SP
80 87 86 85 84 83 82 81 80 P0

Özel Fonksiyon Saklayıcıları


Hafıza Türleri Ve Keil Standard Sınıflandırması
Bellek Tipi Boyut Adres Aralığı İlgili Komut

Program Dahili Kod 64 KB 0000h-FFFFh code


Belleği
(Code Harici Kod 64 KB 0000h-FFFFh code
Memory) (External Code)
Dahili Data 128 Byte 00h-7Fh data
(lower RAM)
Veri
Belleği Dahili Data 256 Byte 00h-FFh idata
(indirect) upper
(Data Dahili RAM 128 Bit 20h-2Fh bdata
Memory) Bit adreslenebilir alan (16 byte)
External Data 64 KB 0000h-FFFFh xdata
(Harici)
External Data 256 B 00h-FFh pdata
(paged)
Far
Philips 51MX :8 MByte
Dallas 390 :16MByte
Not: Bazı
Bazı 8051 tü
türevlerinde kullanı
kullanılan bir diğ
diğer bellek tipi
FF iData
GENEL AMAÇ
AMAÇLI SFR
RAM Yü
Yüksek
FF
8052
F0 F7 F6 F5 F4 F3 F2 F1 F0 B

80 E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC
7F Data
GENEL AMAÇ
AMAÇLI D0 D7 D6 D5 D4 D3 D2 - D0 PSW
RAM
30 B8 - - - BC BB BA B9 B8 IP
2F 7F 7E 7D 7C 7B 7A 79 78 BData
77 76 75 74 73 72 71 70 B0 B7 B6 B5 B4 B3 B2 B1 B0 P3
6F 6E 6D 6C 6B 6A 69 68
67 66 65 64 63 62 61 60 A8 AF - - AC AB AA A9 A8 IE
5F 5E 5D 5C 5B 5A 59 58
57 56 55 54 53 52 51 50 A0 A7 A6 A5 A4 A3 A2 A1 A0 P2
4F 4E 4D 4C 4B 4A 49 48
Code
47 46 45 44 43 42 41 40 99 Bit Adreslenemez SBUF
3F 3E 3D 3C 3B 3A 39 38 98 9F 9E 9D 9C 9B 9A 99 98 SCON
37 36 35 34 33 32 31 30
2F 2E 2D 2C 2B 2A 29 28 90 97 96 95 94 93 92 91 90 P1 Dahili
27 26 25 24 23 22 21 20 ROM (2/4/8…
(2/4/8….K)
1F 1E 1D 1C 1B 1A 19 18 8D Bit Adreslenemez TH1
17 16 15 14 13 12 11 10 8C Bit Adreslenemez TH0
0F 0E 0D 0C 0B 0A 09 08 8B Bit Adreslenemez TL1
21
20 07 06 05 04 03 02 01 00 8A Bit Adreslenemez TL0
xData Code
89 Bit Adreslenemez TMOD
1F BANK 3
18 88 8F 8E 8D 8C 8B 8A 89 88 TCON
87 Bit Adreslenemez PCON Harici
17 BANK 2 RAM(64K)
10 Harici
83 Bit Adreslenemez DPH
0F ROM (64K)
BANK 1 82 Bit Adreslenemez DPL pData
08
81 Bit Adreslenemez SP 256 B
07 İlk Kayı
Kayıtçı Bankası
Bankası
00 R0-
R0-R7 80 87 86 85 84 83 82 81 80 P0

RAM Özel Fonksiyon Saklayıcıları


Keil Hafıza Sınıflandırmaları için Örnek Tanımlamalar
[işaret] [veri tipi] [bellek tipi] [değişken adı]

Veri Tipleri Hafıza Sınıflandırması

‹ char data var1;


‹ char code text[] = “PARAMETRE GİRİNİZ:";
‹ unsigned long xdata array[100];
‹ float idata x,y,z;
‹ unsigned int pdata dimension;
‹ unsigned char xdata vector[10][4][4];
‹ char bdata flags;
‹ char far v;
‹ Xdata unsigned char array[10];
Hafıza sınıflandırmaları için kullanılan
Assembly komutları

‹ Code MOVC @A+DPTR


‹ Data Direk erişim
‹ İdata Dolaylı erişim
‹ Bdata Bit ve byte erişim
‹ Xdata MOVX @DPTR
‹ Far Kullanıcı tanımlı rutinler
‹ Pdata MOVX @Rn
Değişkenler İçin Hafıza Modelleri

Küçük
KüçükModel
Model Orta
OrtaModel
Model Büyük
BüyükModel
Model
#Pragma small #Pragma compact #Pragma large
Değişkenlerin
Data Pdata Xdata
ilkleme yeri
Örnek Tanımlamalar
char text[]="merhaba"; d:0x08
void main ()
{ x:0x000000
}
x:0x00FF00

#pragma large
char text[]="merhaba";
void main ()
{
?
}
Pointer’lar
Haf ıza Belirte
Hafıza çli
Belirteçli Haf ızaya Ö
Hafızaya zel
Özel
Genel
Genel Pointer
Pointer Genel
Genel Pointer
Pointer Pointer
Pointer
unsigned char *z; unsigned char * xdata z; unsigned char xdata *z;
unsigned char c; unsigned char xdata c; unsigned char xdata c;
main () main () main ()
{ { {
while(1) while(1) while(1)
{ { {
c=16; c=16; c=16;
z=&c; z=&c; z=&c;
*z=123; *z=123; *z=123;
} } }
} } }
‹ Pointer uzunluğu 3 byte’tır ‹ Pointer uzunluğu 3 byte’tır ‹ Pointer uzunluğu idata data
‹ Pointer değişkeninin ‹ Pointer değişkeninin bdata ve pdata için 1, code
saklandığı yer dahili veri saklandığı yer belirtilen ve xdata için 2 byte’tır
alanıdır hafıza alanıdır ‹ Pointer değişkeninin
saklandığı yer dahili veri
alanıdır
Bit veri tipi pointer olarak tanımlanamaz
Bellek Erişimi

Fonksiyon/
Açıklama
Makro Adı
CBYTE Program belleğinin belirtilen adresinden bir bayt okuma
CWORD Program belleğinin belirtilen adresinden iki bayt (word) okuma
DBYTE Dahili veri belleğinin belirtilen adresine bir bayt yazma/okuma
DWORD Dahili veri belleğinin belirtilen adresine 2 bayt (word) yazma/okuma
Harici veri belleğinin bir sayfalık kısmının belirtilen adresine bir bayt
PBYTE
yazma/okuma

Harici veri belleğinin bir sayfalık kısmının belirtilen adresine iki bayt (word)
PWORD
yazma/okuma

Harici veri belleğinin 64 KB’lık alan içerisinde belirtilen adresine bir bayt
XBYTE
yazma/okuma

Harici veri belleğinin 64 KB’lık alan içerisinde belirtilen adresine iki bayt
XWORD
(word) yazma/okuma

Not: Mutlak bellek erişimi makroları <absacc.h> dosyası içerisinde bulunur


Mutlak Bellek Erişim Makroları ve Kullanımı
/* Bir bytelık bilgi okur */
#define CBYTE ((unsigned char volatile code *) 0)
#define DBYTE ((unsigned char volatile data *) 0)
#define PBYTE ((unsigned char volatile pdata *) 0)
#define XBYTE ((unsigned char volatile xdata *) 0)

/* İki bytelık (word) bilgi okur */


#define CWORD ((unsigned int volatile code *) 0)
#define DWORD ((unsigned int volatile data *) 0)
#define PWORD ((unsigned int volatile pdata *) 0)
#define XWORD ((unsigned int volatile xdata *) 0)

Oku = CBYTE [0x0002]; /* 0002 h adresli code bellekten 1 byte oku */


DBYTE [0x0002] = 5; /* 0002 h adresli data belleğe 5 bilgisini yaz */
Döngüler ve Dallanma (hatırlatma)
‹ do/while döngüsü
‹ for döngüsü
‹ if/else dallanma
‹ switch/case dallanma

while (x>0 && y++==5) { for (i=1;i<=100;i++) { switch (k) {


a=1; delay(33); case 1:
b=45; px=~px; x=1; break;
x=p1; } case 2:
} c=6;
b=15;
------- veya ------- break;
do { case 3:
a=1; if (a<b) x=12;
b=45; if (a<d) c=15; default:
x=p1; else c=0; break;
} }
while (x>0 && y++==5)
Diziler ve Yapılar (hatırlatma)

‹ Unsigned int ary[20]; ‹ #define uchar unsigned char


#define uint unsigned
unsigned int x;
ary[9] = x; ‹ struct form {
unsigned long s;
uint t;
‹ Float xdata ary [10][1]; uchar done;
float xdata x; };
struct form state;
x= ary[5][10];
main ()
{
while (1)
{
state.t=321;
// form.s = 123;
}
}
C ile 8051 Mikrodenetleyici Uygulamaları
Dr. Ahmet Turan ÖZCERİT, Murat ÇAKIROĞLU, Cüneyt BAYILMIŞ

AT89C51RC2 Tabanlı Geliştirme Kartı

http://www.8051turk.com
AT89C51RC2 Tabanlı Geliştirme Kartı

Not: Programlama için PSEN Low, EA High yapılmalıdır.


C ile 8051 Mikrodenetleyici Uygulamaları Kitabında verilen
tüm örnekler bu kart kullanılarak gerçekleştirilebilir
Geliştirme Kartının Temel Özellikleri

‹ MCS–51 ailesi mikrodenetleyicileri ile uyumlu


‹ 32 K bayt yeniden programlanabilir flash bellek
‹ 10000 kez yazma/silme
‹ 4v–5,5v çalışma gerilimi
‹ Maksimum 40 MHz çalışma frekansı
‹ 3 seviyeli kod koruma
‹ 512 x 8-bit dahili RAM
‹ 32 G/Ç pini
‹ 3 adet 16–bit zamanlayıcı/sayıcı
‹ 8 kesme kaynağı
‹ Seri haberleşme arabirimi
‹ Düşük güç tüketim modları (Uyku, düşük güç)
‹ Uyuma modundan kesme ile normal çalışma moduna
geçme
‹ Kısır-döngü (watchdog) sayacı
‹ Çift Veri İşaretçisi (DPTR)
C ile 8051 Mikrodenetleyici Uygulamaları
Dr. Ahmet Turan ÖZCERİT, Murat ÇAKIROĞLU, Cüneyt BAYILMIŞ

Geliştirme Kartının ATMEL FLIP ile


Programlanması

http://www.8051turk.com
FLIP Programının Genel Görünüşü
seri haberleş
haberleşme tü
türü seç
seçimi Hex kodun yolunu gö
göster

işlemci
seç
seçimi

Geliştirme kartı ATMEL firmasının Flip yazılımı vasıtasıyla kolaylık programlanabilir.

http://www.atmel.com/dyn/resources/prod_documents/flip-2_4_4.zip adresinden ücretsiz ve


lisanssız olarak indirilebilir.
FLIP Programının Kullanımı – Çip Seçimi
‹ Öncelikle kullandığımız işlemciyi seçmeliyiz.
¾ Çip sembolüne tıklayarak ya da
¾ Device>Select
FLIP Programının Kullanımı – Seri Haberleşme
‹ Seri haberleşme yöntemi ve baud hızının seçimi
¾ Geliştirme kartını programlama moduna alın
(PSEN = Low, EA = High ve 1 kez reset tuşuna basın)
¾ USB konnektörüne benzeyen simgeye tıklayın, com ve baud hızını seçin
¾ Connect tuşuna basınız
FLIP Programının Kullanımı – Seri Haberleşme

‹ Hatasız bağlantı
‹ Hex kodu yüklemeye hazır

‹ Bağlantı hata mesajının sebepleri


¾ Birçok donanımsal sebebi olabilir. Bunlar:
¾ Devre besleme problemi
¾ Reset problemi
¾ Dipswitch ayar problemi (PSEN, EA)
¾ On-Off anahtar problemi vb.
FLIP Programının Kullanımı – Hex Kodu Yükleme
‹ File > Load Hex File menüsünden veya kısayolundan hex
dosyanın yolu gösterilir
‹ Run tıklanarak, kart programlanır.
Hex kodun yolunu gö
göster

‹ Erase: Sil
‹ Blank Check: Silinmiş kontrolü
‹ Program: Programla
‹ Verify: Doğrula
Sorular

You might also like