TBMYO • Bilgisayar Programcılığı
Mikrodenetleyiciler Vize Soruları
Detaylı Anlatım ve Çözüm
Bu belge, sınav kağıdındaki 10 sorunun her birini hiç bilmeyen birine anlatır gibi açıklar ve çözer. Ek olarak en sonda sınavdan farklı 1 tane örnek soru da anlatımlı şekilde çözülmüştür.
İçerik doğrudan HTML içine gömülmüştür.
1) Mikroişlemci ile Mikrodenetleyiciyi Karşılaştırın
Soru
Mikroişlemciler (Microprocessor) ile Mikrodenetleyicileri (Microcontroller) karşılaştırın.
Bu soruda senden istenen (tam puan mantığı)
Bu soruda iki kavramı sadece tanımlaman değil, başlık başlık karşılaştırman beklenir.
- Yapı: Tek CPU mu, yoksa CPU + RAM + I/O tek çipte mi?
- Dış bağımlılık: Harici RAM/ROM/I/O ihtiyacı var mı?
- Kullanım alanı: Genel amaçlı sistem mi, gömülü cihaz kontrolü mü?
- Maliyet ve güç: Hangi tarafta daha düşük maliyet ve tüketim var?
İpucu: En az 4 karşılaştırma başlığı ile cevap yazarsan genelde tam puana yaklaşırsın.
Konuyu hiç bilmeyen için anlatım
- Mikroişlemci: Temel olarak sadece işlem birimidir (CPU). Tek başına çalışamaz.
- Mikrodenetleyici: CPU + RAM + ROM/Flash + giriş/çıkış portları + timer gibi birimleri tek çip içinde toplar.
Kısa benzetme:
- Mikroişlemci = Sadece beyin.
- Mikrodenetleyici = Beyin + hafıza + kollar + saat + duyular bir arada.
Sınav tarzı cevap
- Mikroişlemci, dışarıdan RAM, ROM, I/O, timer gibi birimlere ihtiyaç duyar.
- Mikrodenetleyici, bu birimlerin çoğunu içinde barındırır.
- Mikroişlemci daha genel amaçlı bilgisayar sistemlerinde kullanılır.
- Mikrodenetleyici daha çok gömülü sistemlerde (cihaz kontrolü) kullanılır.
- Mikrodenetleyici sistem maliyeti, boyut ve enerji tüketimi açısından genelde daha avantajlıdır.
Özet
Aynı işi yapmazlar: mikroişlemci "genel amaçlı", mikrodenetleyici "belirli görev odaklı"dır.
2) Bir Mikrodenetleyici Hakkında Bilinmesi Gereken Genel Bilgiler
Soru
Bir mikrodenetleyici hakkında bilinmesi gereken genel bilgiler nelerdir?
Bu soruda senden istenen (tam puan mantığı)
Bu soru, bir mikrodenetleyiciyi teknik olarak tanıtabilmeni ölçer. "Nedir" yerine "hangi parametrelerle anlaşılır" cevabı beklenir.
- İşlem gücü: mimari, komut seti, hız.
- Bellek: program belleği, RAM, EEPROM kapasitesi.
- Pin ve çevre birimleri: I/O, timer, interrupt, haberleşme.
- Elektriksel sınırlar: besleme gerilimi, akım, frekans.
- Geliştirme ekosistemi: derleyici, programlayıcı, debug araçları.
Konuyu hiç bilmeyen için anlatım
Bir mikrodenetleyici tanımak için şu sorular sorulur:
- Hangi aile/seri? (Ör: PIC16F84)
- Besleme gerilimi kaç volt?
- Giriş-çıkış pin sayısı kaç?
- Program belleği ne kadar?
- RAM ne kadar?
- Clock frekansı ve osilatör tipi ne?
- Hangi programlama dili ve geliştirme aracı kullanılıyor?
Sınav tarzı cevap
Mikrodenetleyici seçimi ve kullanımı için genel olarak:
- Mimarisi ve komut seti,
- Program belleği ve RAM kapasitesi,
- I/O port özellikleri,
- Clock/osilatör sınırları,
- Besleme ve akım değerleri,
- Timer, interrupt, haberleşme birimleri,
- Programlama ve debug araçları bilinmelidir.
Özet
"Hangi işi, hangi sınırlarla yapar?" sorusunun cevabı mikrodenetleyiciyi tanımlar.
3) Mikrodenetleyici Programlamak İçin Nelere İhtiyaç Vardır?
Soru
Bir mikrodenetleyiciyi programlamak için nelere ihtiyaç vardır?
Bu soruda senden istenen (tam puan mantığı)
Bu soruda beklenen, süreci uçtan uca kurmandır: yazılım araçları + donanım + test akışı.
- Kodu yazacağın ortam (IDE/editör) ve derleyici.
- Kodu cihaza atacak programlayıcı donanım/yazılım.
- Hedef mikrodenetleyici ve besleme devresi.
- Çalışmayı doğrulayacak test devresi (LED, buton, breadboard).
- Temel iş akışı: yaz -> derle -> yükle -> test et -> düzelt.
Konuyu hiç bilmeyen için anlatım
Temel 5 parça gerekir:
- Kod yazma ortamı (editör/IDE)
- Derleyici/assembler
- Programlayıcı cihaz (PIC'e kod yazan donanım)
- Hedef mikrodenetleyici (ör. PIC16F84)
- Test devresi (breadboard, LED, dirençler, besleme)
Sınav tarzı cevap
Mikrodenetleyici programlamak için:
- Bilgisayar,
- Kod editörü/IDE,
- Derleyici (assembler/C compiler),
- Programlayıcı donanım ve yazılımı,
- Hedef PIC,
- Test ve ölçüm için temel elektronik düzeni gerekir.
Özet
Kod yazmak yetmez; kodu cihaza yükleyip devrede test etmek de gerekir.
4) PIC16F84'te Kullanılan Bellek Tipleri
Soru
PIC16F84'te kullanılan bellek tipleri hakkında bilgi veriniz.
Bu soruda senden istenen (tam puan mantığı)
Bu soruda bellek isimlerini saymak tek başına yeterli değildir; her belleğin ne işe yaradığını da yazmalısın.
- Program belleği: Kodun tutulduğu alan (kalıcı).
- RAM: Çalışma anındaki geçici veriler (enerji kesilince silinir).
- EEPROM: Az miktar ama enerji kesilince de saklanan veriler.
Ek puan ipucu: "Hangi bellek ne zaman kullanılır" örneği verirsen cevap güçlenir.
Konuyu hiç bilmeyen için anlatım
PIC16F84 için temel bellek mantığı:
- Program belleği: Kodun tutulduğu alan (Flash).
- Veri belleği (RAM): Çalışırken değişen değişkenler.
- EEPROM veri belleği: Enerji kesilse de saklanan az miktar kalıcı veri.
Sınav tarzı cevap
PIC16F84'te:
- Program belleği Flash tipindedir (kod burada tutulur).
- RAM bellek geçici veriler içindir.
- EEPROM kalıcı veri saklamak için kullanılır.
Özet
Kod -> Flash, anlık veri -> RAM, kalıcı küçük veri -> EEPROM.
5) PIC16F84 En Fazla Kaç Satırlık Program Yazılabilir?
Soru
PIC16F84'e en fazla kaç satırlık program yazılabilir?
Bu soruda senden istenen (tam puan mantığı)
Burada "satır" ifadesi pratikte program belleği kapasitesi anlamında soruluyor.
- Program adres aralığını bul:
0x000-0x3FF. - Kaç adres ettiğini hesapla:
0x3FF = 1023. - Adresler 0'dan başladığı için toplam:
1024komut alanı.
Sonuç cümlesi: "PIC16F84 yaklaşık 1024 komutluk program alanına sahiptir."
Konuyu hiç bilmeyen için anlatım
Sınavdaki "satır" ifadesi pratikte "komut kapasitesi" anlamında sorulmuş olur.
PIC16F84'te program belleği 1K word'dür.
1K word = 1024 program adresi (0x000 - 0x3FF)
Sınav tarzı cevap
PIC16F84'te program belleği 1024 word olduğu için en fazla 1024 komutluk (adreslik) program yazılabilir.
Özet
Temel sınır: 1024 word program alanı.
6) PIC'lerde Sink Akımı ve Source Akımı
Soru
PIC'lerde Sink Akımı ve Source Akımı kavramını açıklayınız.
Bu soruda senden istenen (tam puan mantığı)
Bu soru tanım ezberi değil, akım yönünü doğru tarif etme sorusudur.
- Source: akım pin tarafından dış devreye verilir.
- Sink: akım dış devreden pine doğru çekilir.
- LED örneğiyle iki bağlantı şeklini ayır.
- Pin akım limitini aşmama uyarısını yaz.
Konuyu hiç bilmeyen için anlatım
- Source akımı: Pin yüke akım verir (akım pinden dışarı çıkar).
- Sink akımı: Pin yükten akım çeker (akım pine girer, GND'ye akar).
LED örneği:
- Bazen pin 1 olunca LED yanar (source bağlantı).
- Bazen pin 0 olunca LED yanar (sink bağlantı).
Sınav tarzı cevap
Source akımında PIC çıkış pini akımı yüke doğru sağlar.
Sink akımında yükten gelen akım PIC pininden GND yönüne çekilir.
Port pinlerinin source/sink akım sınırları aşılmamalıdır.
Özet
Akım yönü farklıdır; ikisinde de pin akım limitleri kritik önemdedir.
7) PIC16F84 Program Bellek ve RAM Bellek Nedir?
Soru
PIC16F84'te Program bellek ve RAM bellek nedir?
Bu soruda senden istenen (tam puan mantığı)
Bu soruda iki belleği "adıyla" değil, işlevi + kalıcılığı ile ayırman beklenir.
- Program bellek: komutları saklar, kalıcıdır.
- RAM: çalışma anı verisini saklar, geçicidir.
- Enerji kesilince hangisi korunur/hangisi silinir yaz.
- Bir örnek ver: kod program bellekte, sayaç RAM'de.
Konuyu hiç bilmeyen için anlatım
- Program bellek: Yazdığın kodun saklandığı yer.
- RAM bellek: Program çalışırken değişkenlerin geçici olarak tutulduğu yer.
Örnek:
- LED yakma komutları Program bellektedir.
- Sayaç değişkeni (sayac = sayac + 1) RAM'dedir.
Sınav tarzı cevap
Program bellek, komutların depolandığı kalıcı alandır.
RAM bellek, çalışma sırasında değişen geçici verilerin tutulduğu alandır.
PIC16F84'te bu iki bellek ayrı yapıdadır.
Özet
Kod ve veri ayrı tutulur; bu yapı Harvard mimarisinin temelidir.
8) PIC16F84'teki "F" Harfi Neyi İfade Eder?
Soru
PIC16F84'teki "F" neyi ifade etmektedir?
Bu soruda senden istenen (tam puan mantığı)
Bu soru model kodunun içindeki harfin anlamını sorar. Yani burada amaç, adlandırma bilgisini yorumlayabilmendir.
- Model kodunu parçala:
PIC 16 F 84. - F harfinin bellek teknolojisine işaret ettiğini belirt.
- Sonuç cümlesini net yaz: F = Flash program belleği.
Konuyu hiç bilmeyen için anlatım
Microchip adlandırmasında harfler bellek teknolojisini anlatır.
"F" genellikle Flash program belleğini belirtir.
Sınav tarzı cevap
PIC16F84 adındaki "F", cihazın Flash program belleğine sahip olduğunu ifade eder.
Özet
"F" = Flash.
9) PIC16F84'te Clock Oscilatörü Neden Kullanılır? Çeşitlerinden 2 Tane Yazınız
Soru
PIC16F84'te kullanılan clock osilatörü niçin kullanılır, çeşitlerinden 2 tanesini yazınız.
Bu soruda senden istenen (tam puan mantığı)
Bu soru iki parçalıdır: (1) ne işe yarar? ve (2) iki örnek tür yaz.
- Clock'ın komutları zamanladığını yaz.
- Clock yoksa işlem yürütülemeyeceğini belirt.
- En az iki osilatör türü ver (ör. RC, XT).
- Mümkünse seçim mantığını ekle: hız/hassasiyet/maliyet.
Konuyu hiç bilmeyen için anlatım
Mikrodenetleyici saat sinyali (clock) olmadan komut yürütemez.
Clock, "ne hızda düşünüp iş yapacağını" belirler.
PIC16F84'te osilatör seçeneklerine örnek:
- RC osilatör
- XT (kristal)
- HS (yüksek hızlı kristal)
- LP (düşük güç)
Sınav tarzı cevap
Clock osilatörü, mikrodenetleyicinin komutlarını zamanlayarak çalıştırması için gereklidir.
PIC16F84'te RC, XT, HS, LP gibi osilatör tipleri kullanılabilir.
İki örnek: RC ve XT.
Özet
Clock yoksa çalışma yoktur.
10) Sayı Dönüşümleri (Hex, Binary, Decimal)
Soru
Aşağıdaki dönüşümleri yapınız.
h'A2F' = b'...'b'1011011111101010101010' = h'...'d'253' = b'...'0XAA3 = b'...'h'2F' = d'...'d'287' = 0x ?b'11001000000' = d'...'
Bu soru senden tam olarak ne istiyor?
Bu soru aslında sadece "sonucu yaz" sorusu değil, hangi tabandan hangi tabana nasıl geçeceğini bildiğini ölçüyor.
- Önce sayının başındaki işareti oku:
h(hex),b(binary),d(decimal),0x(hex). - Sonra hedef tabanı gör: örneğin
h'A2F' = b'...'ifadesi "hex'ten binary'ye çevir" demektir. - Her satırda doğru yöntemi seç: hex->binary için 4 bit kuralı, decimal->hex için bölme-kalan gibi.
- Sonucu yazmadan önce kontrol et: ters dönüşüm yapınca ilk sayıya dönmeli.
Kısaca:
Bu soru, dönüşüm tekniğini ezber değil mantıkla uygulamanı istiyor.
Konuyu hiç bilmeyen için anlatım
Temel mantık: Her sayı sistemi bir taban ile çalışır.
- Decimal (onluk): taban 10, rakamlar 0..9
- Binary (ikilik): taban 2, rakamlar 0 ve 1
- Hex (onaltılık): taban 16, rakamlar 0..9 ve A..F
Bir sayının değeri, soldan sağa yazılan her basamağın kendi ağırlığıyla çarpılıp toplanmasıyla bulunur.
Değer = basamak x taban^konum
Dönüşümde hangi yöntemi ne zaman kullanmalıyım?
- Hex -> Binary: Her hex karakteri doğrudan 4 bite çevir.
- Binary -> Hex: Sayıyı sağdan başlayarak 4'lü gruplara ayır, her grubu bir hex karakterine çevir.
- Decimal -> Binary: 2'nin kuvvetlerine ayırma veya 2'ye bölme-kalan yöntemini kullan.
- Decimal -> Hex: 16'ya böl, kalanları al; kalanları tersten yazarak sonucu bul.
Neden 1 hex = 4 bit?
Çünkü 4 bit ile 0000 ile 1111 arasında toplam 16 farklı değer üretilir, bu da hex'in 16 sembolüyle birebir eşleşir.
İkilikte bit ağırlıkları (sağdan sola):
... 2^10=1024, 2^9=512, 2^8=256, 2^7=128, 2^6=64, 2^5=32, 2^4=16, 2^3=8, 2^2=4, 2^1=2, 2^0=1
h'A2F'te F neden 1111? (çok detaylı)
Kısa cevap: Hex sistemde F = 15 değerine karşılık gelir. 15'in ikilik karşılığı da 1111 olduğu için F = 1111 yazılır.
- Hex tabanı 16'dır. Bu sistemde tek bir basamak 16 farklı değer alır:
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. - 4 bit tam 16 durum üretir. Çünkü
2^4 = 16. Bu nedenle 1 hex basamağı ile 4 bit birebir eşleşir. - Hex'te F'nin decimal değeri 15'tir. A=10, B=11, C=12, D=13, E=14, F=15 şeklinde ilerler.
- 15'i binary'e çevir:
15 = 8 + 4 + 2 + 1 = 2^3 + 2^2 + 2^1 + 2^0. - Bitleri yaz: 8, 4, 2 ve 1'in hepsi kullanıldığı için tüm bitler 1 olur:
1111.
Bu yüzden:
F (hex) = 15 (decimal) = 1111 (binary)
A-F hızlı eşleşme tablosu:
A=1010, B=1011, C=1100, D=1101, E=1110, F=1111
Hızlı doğrulama (ters kontrol):
1111 = 1x2^3 + 1x2^2 + 1x2^1 + 1x2^0 = 8+4+2+1 = 15 = F
Adım adım çözüm
-
h'A2F' -> b
Hex'teki her karakteri ayrı ayrı 4 bite çevir. Burada kritik nokta: F'nin 1111 olmasıdır.
A = 1010,2 = 0010,F = 1111Sonra sırayı bozmadan birleştir:
1010 0010 1111Kontrol:
1010=10(A),0010=2,1111=15(F)-> tekrarA2Fverir.Sonuç:
b'101000101111' -
b'1011011111101010101010' -> h
Binary'den hex'e geçerken sağdan başlayarak 4'lü gruplar oluşturulur.
Bit sayısı 4'ün katı değilse sola 0 eklenir:
0010 1101 1111 1010 1010 1010Her grup hex'e çevrilir:
0010=2,1101=D,1111=F,1010=A,1010=A,1010=ASonuç:
h'2DFAAA' -
d'253' -> b
253 sayısını 2'nin kuvvetlerine ayır:
253 = 128 + 64 + 32 + 16 + 8 + 4 + 1Yani
2^7, 2^6, 2^5, 2^4, 2^3, 2^2, 2^0aktif;2^1pasif.Bu nedenle bit dizilimi:
11111101Sonuç:
b'11111101' -
0XAA3 -> b
Hex karakterleri ayrı çevrilir:
A = 1010,A = 1010,3 = 0011Sırayla birleştir:
1010 1010 0011Sonuç:
b'101010100011' -
h'2F' -> d
Hex'te konum ağırlığı kullan:
2F = 2 x 16^1 + 15 x 16^0= 32 + 15 = 47Sonuç:
d'47' -
d'287' -> 0x
16'ya bölme-kalan yöntemi kullan:
287 / 16 = 17 kalan 15 (F)17 / 16 = 1 kalan 11 / 16 = 0 kalan 1Kalanlar alttan üste doğru okunur:
1 1 FSonuç:
0x11F -
b'11001000000' -> d
1 olan bitlerin ağırlıklarını topla:
2^10 + 2^9 + 2^6 = 1024 + 512 + 64= 1600Sonuç:
d'1600'
Sık yapılan hatalar (çok önemli)
- Binary -> Hex dönüşümünde gruplamayı soldan yapıp sağdaki bitleri kaydırmak.
- 4'lü grup eksikse sola 0 eklemeyi unutmak.
- Hex'te
A=10,B=11, ...F=15eşlemesini karıştırmak. - Decimal -> Hex'te kalanları üstten alta yazmak (doğrusu alttan üste okumaktır).
Kendini kontrol et (mini test)
Soru: h'3C' kaçtır (decimal)?
Çözüm: 3 x 16 + 12 = 48 + 12 = 60
Sonuç: d'60'
Özet
Sayı sistemi sorularında en güvenli yöntem:
- Hex <-> Binary için 4 bit kuralı,
- Decimal dönüşümlerinde bölme/kat toplamı yöntemi.
Sınavdan Farklı 1 Ek Örnek (Anlatım + Çözüm)
Ek soru
Aşağıdaki dönüşümleri yapınız:
h'3B7' = b'...'d'100' = h'...'b'10011101' = d'...'
Çözüm
-
h'3B7' -> b
3 = 0011, B = 1011, 7 = 0111
Sonuç:
b'001110110111' -
d'100' -> h
100 / 16 = 6 kalan 4
Sonuç:
h'64' -
b'10011101' -> d
128 + 16 + 8 + 4 + 1 = 157
Sonuç:
d'157'
Neden böyle yaptık?
- Hex ve Binary birbirinin doğrudan akrabasıdır (1 hex = 4 bit).
- Decimal dönüşümde kalanlı bölme ve 2'nin kuvvetleri hatasız sonuç verir.
Kısa tekrar listesi (1 dakikalık)
- Mikroişlemci: dış birimler gerekir.
- Mikrodenetleyici: tek çipte birçok birim.
- PIC16F84 program alanı: 1024 word.
- F harfi: Flash.
- Source/Sink: akım yönü farkı.
- Clock: komutların zamanlayıcısı.
- Dönüşüm: 4 bit hex kuralı en kritik ipucu.