Hazırlayan: Sezin Alp – Emeği geçen Kişilere Teşekkürler. Motorola 68HC12 1997 yılında Motorola firması tarafından üretime başlanmış.68HC11 işlemcisi ile aynı benzer özellikler taşıyan 16- bit yüksek hızlı bir mikroişlemcidir. Bu işlemcini diğer modelleri; 8 MHz de çalışan `A4(uzatılmış mod) `B32(tek mod) ve 25 Mhz de çalışan `HCS12 modelleri bulunmaktadır.
Genel ve donanım özellikleri şöyledir:
- Düşük güç, yüksek performans
- Güç korumalı STOP ve WAIT modları
- 1024 Byte bellek
- 4096 Byte Siline bilen ve Programlanabilen bellek(EEPROM)
- Çip üstünde 5 mb e kadar bellek adresleyebilme
- Tek kablo arka plan hata düzeltici
- 7 adet programlanabilen saat çipi
- 8 kanallı 16 bit zamanlayıcı
- Tüm kanallarda giriş çıkış ayarı yapabilme özelliği
- 16 bit darbe üretici
- Gerçek zamanlı giriş devresi
- Saat darbe monitörü
- Faz kilitlemeli çevrim
- 2 eşzamansız ve döngüsüz sıfırlama sistemi
- 8 kanal,8 bit ADC
- 209 komut
- HLL(high level language ) optimizasyonu
- Düşük güç bekleme ve durdurma modu
Donanım yapısı: içerdiği birimler CPU12 merkezi işlem birimi RAM EEPROM (hafıza) ADC TIM(timer ,zamanlayıcı) LIM(line integration module ) PWM(darbe genişlik modülasyonu) SCI(serial comminucation interface –seri haberleşme ara yüzü) SPI(serial peripherals interface-seri çevrebirimleri arayüzü)
Blok Diagram
CPU12 : merkezi işlem birimi 16 bit yüksek hızlı bir işlemcidir. Yol hızı 3 V`ta 5MHz`e kadarçıkabilmektedir.diğer özellikler;
20 bit ALU komut kuyruğu – 16 bit veri yolu – 4MB dan fazla program alanına ve 1 MB ta fazla veri alanına ulaşmasına olanak sağlayan – 64 kB doğrusal sayfalanmış hafız kapasitesi Adresleme hızlı matematiksel işlem kapasitesi – Kolay programlama , kod boyutunun azaltılması ve hız kod yürütümü için bukanık mantık – Adreslemeler ve veri transferi için gerekli saklayıcılar da içerir.
Bu saklayıcılar
- 8 bit A ve B , 16 bit D akümülarörü
- 16 bit X ve Y indis saklayıcıları
- 16 bit SP (yığın işaretçisi)
- 16 bit PC (program saklayıcısı)
- 8 bit CCR(condition code register )
Aşağıdaki şekiller 68HC12 nin programlama modelini göstermektedir
Şekil – l. l. l ‘de gösterilen bu saklayıcılar;
- 8-bit A ve B, 16-bit D akümülatörü
- 16-bit X ve Y indis saklayıcıları
- 16-bit SP (Yığın İşaretçisi)
- 16-bit PC (Program Sayıcısı)
- 8-bit CCR (Condition Code Register)
LIM (line integration module ) 68HC12 nin yolarını çalışma zamanı monitörünün BDM nin yönlü ya da yönsüz olmasının tercih edilmesini sağlar.
Hafıza: 68HC12 mikroişlemcisinin hafıza birimleri, modeline göre çeşitlilik göstermektedir. ‘A4 modelinde 1kB SRAM ve 4kB EEPROM bulunurken, ‘B32 modelinde 1kB RAM, 768-byte EEPROM ve 32kB Flash EEPROM/ROM hafıza birimleri bulunmaktadır.
Şekil – 1 .3.1 ‘de ‘B32, Şekil – 1.3.2’de ise ‘A4 modelinin hafıza haritası gösterilmektedir.
ADC (Analog/Sayısal Çevirici) Şekil – l .4’te yapısı, verilen ADC ile harici analog sinyaller (bateri voltaj, sıcaklık, basınç.vs) sayısal değerlere dönüştürülür. Özellikleri;
o Lineer ardışıl yaklaşım
o 8/10 bit çözünürlük
o Tek/Devamlı çevrim modu
o Seçilebilir ADC saati olarak özetlenebilir.
Zamanlayıcı Modülü (TIM) : 16-bit programlanabilir bir sayıcıdır. Frekans, periyod, darbe uzunluğu.. gibi, gelen sinyallerin karakteristik ölçümleri (Input Capture); periyodik sayısal dalga formları, darbe.. gibi çıkış sinyallerinin oluşturulması (Output Compare); harici olayların sayılma (Pulse Accumulator) ve PWM oluşturma işlevlerine sahiptir. Şekil – l .5’te 68HC12’nin zamanlayıcı yapısı gösterilmektedir.
SPI (Şeridi Peripheral Interface) Modülü : Mikrodenetleyicinin, basit kaydırma yazmaçları, seri EEPROM, LCD yada ADC alt sistemi gibi çevresel cihazlarla haberleşmesini sağlar ve haberleşme, bu cihazlarla eşzamanlı olarak ve yüksek hızlarda sağlanır.
Şekil – l .6’da 68HC12’nin SCI modülünü gösteren blok diyagram verilmiştir.
SCI (Serial Communications Interface) Modülü : Seri bir UART-tipi eşzamansız haberleşme sistemi olan SCI, mikrodenetleyicinin başka bir mikrodenetleyiciyle yada bir ağa bağlı mikrodenetleyicilerle, bir terminalle yada bir bilgisayarla haberleşmesine olanak tanır. Tipik SCI haberleşmesi, uzun mesafeler üzerinden ve genellikle RS-232 portu üzerinden yapılır. Şekil – 7’de 68HC12’nin SCI yapısı gösterilmektedir.
Portlar : Şekil- 1.8’de 68HC12’nin Port yapısı gösterilmektedir. Her bir port ve kullanım amacı ise hemen altındaki Tablo -1 ‘de açıklanmaktadır
Port A Giriş/Çıkış Genel olarak tekli cip modunda kullanım ve 15:8 adres genişliği.
Port B Giriş/Çıkış Genel olarak tekli cip modunda kullanım ve 7:0 adres genişliği.
Port C Giriş/Çıkış Genel olarak tekli cip modunda kullanım ve 15:8 adres
Port D Giriş/Çıkış Genel olarak tekli cip modunda kullanım. Çoklu modda 7:0/15:8 seçeneği
Port E PE[1:0] Giriş PE[7:2] Giriş/Çıkış Mod seçimi, sürücü kontrolü, giriş ve çıkış sinyallerini Karşılama, genel giriş çıkış kullanımı.
Port F Giriş/Çıkış Cip secici ve genel giriş /çıkış görevi
Port G Giriş/Çıkış Bellek ayarlama ve genel giriş /çıkış görevi
Port H Giriş/Çıkış Sistemi uyandırma anahtarı, yüksek – düşük ayarı.
Port J Giriş/Çıkış Sistemi uyandırma anahtarı, genel giriş /çıkış görevi, yüksek – düşük ayarı
Port S Giriş/Çıkış Seri ara yüz desteği
Port T Giriş/Çıkış Sistem zamanlayıcısı ve genel giriş /çıkış görevi
Port AD Giriş Analog – Sayısal Çevirici ve genel giriş /çıkış görevi
Adresleme modları : Merkezi Yürütme Birimi (Central Processor Unit -CPU ) nin hafıza adreslerinin bulunduğu yere nasıl erişeceğini tayin eder. Bu bölümde değişik modları ve nasıl kullanıldıklarını inceleyeceğiz..
Efektif Adres : Doğal(inherent) mod hariç her bir adresleme modu, komutun hafıza referans porsiyonu sırasında kullanılan 16 bit efektif adres üretir. Efektif adres hesaplamaları extra yürütme döngüleri gerektirmez.
Doğal Mod (inherent mode) : Bu modu kullanan komutlaroperandları tanımlayacak extra byte lar kullanmaz çünkü komutlar ya operand gerektirmez ya da bütün opperantlar CPU yazmacıdır.
Örnek: NOP; bu komutun işlem verisi(operand) i yoktur. INX; işlem verisi bir CPU yazmacıdır.
İvedi (immediate) adresleme : ivedi adresleme modu kullanan komutların işlem verileri(operand) komuta dahildir.CPU işlem verileri(operands) için hafızaya erişmez.
Örnek :
LDAA #$55
LDX #$800
Doğrudan adresleme(direct) : Bu mod yalnızca 0-255 arası hafıza lokasyonlarını belirleyebilir. Bu mod işlem veri adreslerini belirlemek için yalnızca br byte kullanır.
Örnek :
LDAA $20 LDAB $40
Genişletilmiş (extended) adresleme : Bu modda komutlarda tam 16-bit adres sağlanmıştır.
bu adresleme modu 64Kbyte hafıza adresindeki herhangi bir yere erişimde kullanılabilir
Örnek :
LDAA $4000
LDX $FE60
Göreceli (relative) Adresleme : Yalnızca dallanma(branch) komutları tarafından kullanılır.
Kısa ve uzun durumsal dallanma komutları exclusively göreceli mod kullanır. BRCLR ve BRSET komutları da dallanma hedefini belirlemek için göreceli mod kullanır. Bir kısa dallanma komutu 8-bit lik işlem kodu ve işaretli 8 bit lik offset den oluşur. Kısa göreceli mod -128 ile +127 aralığını belirler. Bir uzun dallanma komutu bir 8 bit işlem kodu ve bir işaretli 16-bit offset den oluşur.
Uzun göreceli modun aralığı -32768 ile +32767 arasındadır Bir programcı dallanma hedefini belirleyen bir sembol kullanr ve assembler bunun gerçek dallanma offsetini (mesafe) dallanma komutunu izleyen komuttan belirler.
Örnek:
minus …
bmi minus
İndisli (indexed) Adresleme : Bu mod indis yazmacı(X,Y,PC, veya SP) toplamını ve bir işlem
verisinin(operand) adresini belirleyecek ibr offset kullanır. Offset 5-bit, 9-bit, ve 16-bit işaretli değer veya akümülatör A,B veya D içinde bir değer olabilir.
PC indis yazmacı olarak, auto-increment veya auto-decremet modu hariç hepsinde kullanılabilir. 16-bit offset veya offset olarak akümülatör D ile dolaylı indisleme desteklenir.
5-bit Sabit Offset İndis Adresleme : Temel indis yazmacı X,Y,SP veya PC olabilir Offset aralığı -16 ile +15 aralığıdır.
Örnek:
Idaa O, X stab -8,Y
9-bit Sabit Offset İndis Adresleme : Temel indis yazmacı X,Y,SP veya PC olabilir. – Offset aralığı -256 dan +255 e dir.
örnek:
Idaa $FF,X Idab -20,Y
16-bit Sabit Offset İndisi! Adresleme : 16 bit offset komut tarafından etkilenen hafıza yeri ne doğru işaretçi içerer bir hafıza yeri adresini oluşturan temel indis yazmacına eklenir. Köşeli parantez bu adresleme modunu 16 bit sabit offset indisleme modundan ayırır.
Örnek:
Idaa [10,X] staa [20,Y]
Auto Pre/Post Decrement/lncrement Indisli Adresleme Temel indis yazmacı X,Y veya SP olabilir. İndis yazmacı bir sayı değeri tarafından artırılabilir veya azaltılabilir. Bu işlem indisleme yerini aldıktan önce veya sonra olabilir.
İndis yazmacı indislemeden sonra değişen değeri tutar. Artırılacak veya azaltılacak değer -8 den -1 e veya 1 den 8 e olan aralıklarda değişir. Değerin işlem verisinin veya mevcut komutun boyutuna ilişkilendirilmeli
Örnek:
Staa1,-SP
Ldx 2,SP+
Akümülatör Offset İndisli Adresleme : işlem verisinin efektif adresi temel indis yazmacının toplamıdır. Temel yazmaç X,Y,SP veya PC olabilir Akümülatör 8 bit A veya B veya 1 6 bit akümülatör D olabilir.
Örnek :
Idaa B,X
stab B,Y
Idaa D, X
Akümülatör D Dolaylı İndisli Adresleme : D nin içindeki değer temel indis yazmacı içindeki değere eklenir. Bu komut tarafından etkilenen hafıza yerini içeren, hafıza lokasyonunun adresini şekillendirir. Köşeli parantez bu adres modunu akümülatör D offset indislemeden ayırır.
Örnek:
LDAA [D, X]
Komut Seti
TRANSFER ve EXCHANGE Komutları : – Transfer komutları bir CPU yazmacının veya akümülatörün içeriğini diğer bir CPU yazmacı veya akümülatöre kopyalar. – TFR uluslararası bir transfer komutudur ama diğer mnemonicler 68HC11 uyumluluk için kabul edilirler. – TAB ve TBA modları N,Z ve V durum kod bitlerini etkiler. TFR herhangi bir durum bitini etkilemez.
Örneğin:
TFR D,X ; [D] => X
TFR A,B ; [A] => B
– EXG komutu bir çift yazmaçların veya akümülatörlerin içeriklerinin birbiri ile değişiştir.
Örneğin:
exg A, B
exg D,X
SEX komutu işaret uzatma (sign extend) bir 8-bit ikilik sayıyı, 16 bit işaretli operasyonlarda
kullanılabilmesi için 16 bitlik bir sayıya dönüştürür.
Örneğin:
SEX A,X
Exchange Komutları
MOVE Komutları : Bu komutlar data byteları veya wordleri hafıza içinde kaynaktan hedefe taşır. — İvedi, genişletilmiş ve indis adresleme modlarının 6 kombinasyonu hedef ve kaynak adreslerini belirlemeye izinlidir.
IMM => EXT, IMM => IDX, EXT <-> EXT
EXT=>IDX, IDX=> EXT, IDX=>IDX
Örnekler:
movb $100,$800
movw 0,X, 0,Y
MOVE Komutları
ADD ve SUB Komutları : Bu komutlar toplama ve çıkarma gibi artmetik fonksiyonlarda kullanılırlar. Bu komutların hedefleri daima bir CPU yazmacı veya akümülatördür.
Örneğin,
adda $800; A <= [A] + [$800]
adca $800; A <= [A] + [$800] + C
suba $802; A <= [A] + [$802]
sbca $800; A <= [A] - [$800] - C
Çarpma ve Bölme Komutları
.3 Lojik ve Bit İşlem Komutları
3. l Lojik Komutlar
Bit işlemleri
Karşılaştırma komutları
Test komutları
Kısa dallanmalar
Uzun dallanmalar ve İşaretsiz Dallanmalar
İşaretli Dallanmalar
Azaltma/Arttırma & Dallanma Komutları
Sayıcı = A, B, D, X, Y veya SP
Atlama (Jump) ve Altprogram Komutları
Yığınla ilgili Komutlar (Stack Relateds)
Bit durumu dallanma komutları
Bekletme ve durdurma komutları
Arkaplan Modu (BDM) ve Boşluk (Null) Komutları
Program Örneği
– Bir ortak katot yedi segment display dirençlerle 74HC244 tarafından sürülmüştür.. 74HC244 nin yüksek voltajı 5V a yakındır – Segment paternleri Tablo 7.3. de gösterilmiştir
68HC12 ile çoklu 7 segment display sürme(Tablo 7.3)
Figure 7.13 Port P and Port CAN together drive five seven-segment displays (HC9,2BC3 zaman çoğullama tekniği kullanılır.)
Önek: 12345 sayısını 5 li yedi segmentli display le gösterecek programı yazın.
Çözüm: 12345 i sırasıyla 4,3,2,1 ve 0 nolu display lerde göstereceğiz. Bu displayleri seçmeli olarak yakmakiçin, PCAN6…PCAN2 pinlerini temizlemeğiz ve sonra bunlardan birini 1 yapacağız. Bu tablo akma yöntemi ile tablo 7.4 ü kullanarak yapılabilir.
tablo 7.4
********************** program ************************* #include "d:\miniide\hc12.inc" org $1000 Idaa #$FF staa DDRP ; PORT P yi çıkış olarak ata Idaa #$7C staa DDRCAN ; PORT CAN ı çıkış olarak ata forever Idy #display ; Y'yi display tablosuna işaretçi olarak kullan next Idaa 0,y ; digit örneğini al staa PORTP ; digit örneğini çıkışa ver Idaa PORTCAN anda #$83 staa PORTCAN ; PORTCAN6..PORTCAN2 pinlerini temizle Idaa 1 ,y oraa PORTCAN staa PORTCAN ; tahsis edilen displayi aç. ; aşağıdaki komutlarla 16MHz osilatör için 1ms gecikme yarat ldx #200 again psha ; 3 E turla pula ; 2 E turla psha pula psha pula psha pula psha pula psha pula psha pula nop nop dbne x,again ; 3 E turla ccpy #display+10 ; display tablosu sonua ulaştı mı? lbeq forever ; evet ise, baştan başla jmp next display db $30,$40 db $6D,$20 db $79,$10 db $33,$08 db $5B,$04 end
Kaynaklar
http://www.ipsiamoretto.com/utenti/azzani/public_html/mcu/overview/ov12.htm
http://www.freescale.com/files/microcontrollers/doc/data_shee /MC68HC912D60.pdf?srch=1
http://wwweng.uwyo.edu/electrical/faculty/barrett/68hc12/
http://www.seattlerobotics.org/encoder/jan97/The68HC12.html
Şifre-Pass: 320volt.com
Yayım tarihi: 2009/01/10 Etiketler: 68hc12, adresleme modlari, cpu12, EEPROM, işlemci, komut Seti, modül, motorola, pwm devreleri, ram
link sanırım kırık ilgilenebilirmisiniz şimdiden teşekkürler
http://www.multiupload.com/VBIUGRDVV8 ya da http://www.4shared.com/file/227436608/8e9d22ff/motorola-68hc12.html
iyi çalışmalar.