Elektronik / Elektronik Kaynakları/

68HC12 Özellikleri Adresleme Modları Komut Seti

Sponsorlu Bağlantılar

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
motorola-68hc12-block-diagram

motorola-68hc12-block-diagram-2

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
68hc12-programlama-modeli

68hc12-nin-programlama-modeli-2

Ş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.
hafiza-haritasi-ram-68hc12

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.

adc-analog-sayisal-cevirici

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.

zamanlayici-modulu-tim

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.

spi-seridi-peripheral-interface-modulu

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.

sci-serial-communications-interface-modulu

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

portlar

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.

adresleme-modlari-mc68hc12

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

mc68hc12-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

transfer-ve-exchange-komutlari

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ı

exchange-komutlari

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ı

move-komutlari

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ı

carpma-ve-bolme-komutlari

.3 Lojik ve Bit İşlem Komutları
3. l Lojik Komutlar

lojik-komutlar-1

Bit işlemleri

bit-islemleri

Karşılaştırma komutları

karsilastirma-komutlari

Test komutları

test-komutlari

Kısa dallanmalar

kisa-dallanmalar

Uzun dallanmalar ve İşaretsiz Dallanmalar

uzun-isaretsiz-dallanmalar

İşaretli Dallanmalar

isaretli-dallanmalar

Azaltma/Arttırma & Dallanma Komutları

azaltma-arttirma-dallanma-komutlari

Sayıcı = A, B, D, X, Y veya SP

Atlama (Jump) ve Altprogram Komutları

atlama-jump-altprogram-komutlari

Yığınla ilgili Komutlar (Stack Relateds)

yigin-komutlar-stackrelateds

Bit durumu dallanma komutları

bit-durumu-dallanma-komutlari

Bekletme ve durdurma komutları

bekletme-ve-durdurma-komutlari

Arkaplan Modu (BDM) ve Boşluk (Null) Komutları

arkaplan-modu-bdm-null-komutlari

Program Örneği

74hc244

– 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)

68hc12-ile-coklu-7-segment-display-surme

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

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

Kaynak dosya: 68HC12 Özellikleri Adresleme Modları Komut Seti

Dosya indirme LINK listesi (TXT formatında) link-4853.zip şifre-pass: 320volt.com

  • kzm

    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.