You are on page 1of 22

2.

3 6800 Tabanl lemciler


Mikroilemci 8-bit ve 16-bit saklayclar iermektedir. letilmesi farkl olan ok sayda komut vardr. Bu komutlarn says en ok sekiz bit znrlk kadardr. Mikroilemcinin iinde sistem yolu vardr. Sistem yolu adres, veri ve denetim yolundan olumutur. Mikroilemciyi tam kapsaml anlatmak yerine en basit sade devresi zerinden anlatlacaktr. Mikroilemci basit devresi ekil 2.4 verildii gibi gerekli olan ana saklayclar ve denetim devre ile gsterilmitir. Bu devrede veri yolu zerinden ilem yapacak sayalar ve saklayclar 8-bit uzunluundadr. Programn yrtlmesinde bu devrelerin nasl bir sralamayla altklarn Blm 2.1de detayl ekilde anlatlmt. Bir sonraki blmde ise yine bu devre perde arkasnda olduunu varsayarak ilemcinin adresleme yntemleri aklanacaktr. Birinci blmde almas detayl incelenen bellek ve bellek eitleriyle mikroilemci arasnda hangi yollar yada sinyaller zerinden bilgi ak gerekleecei gsterilmitir. Mikroilemcinin i ve d bir veya birden fazla bellekle ilem yapmas d dnya ile ilgili henz bir durumu aklamyor. Dolaysyla devreye bir de giri/k birimi eklenmelidir. Bylece nihayet d evre ile bilgi al verii gerekletirmenin n alm olur. Bu yap mikro bilgisayardr. Yada baka bir ifadeyle mikro denetleyici yongasnn iinde mevcut olan minimum devreyi gsterir. Motorola 6800 CPU ki 8 bitlik akmlatr(A ve B) 16 bitlik index (=dizin) saklaycs. (Index Register) 16 bitlik program saycs (Program Counter) 16 bitlik yn gstericisi (Stack Pointer) ki tane 8 bitlik geici saklayc (ALU iinde) (Temporary Register) 16 bitlik dizin saklaycs bir adres saklaycs gibi kullanlr. Bir bytelk teleme bilgisi ile birlikte 16-bit znrlkl istenilen adrese ulalabilir. 6800 tabanl ilemcilerde yn gstericisi RAM, srekli bo bir konumu gsterir, yna bir veri itildikten sonra gstericinin adresi bir azaltlr ve yndan bir veri alnmadan nce ise yn adresi bir arttrlr. Yn, byk bir adresten kk bir adrese doru azalr. Komutlarn ilendii blmde bir komut saklaycs ve bir komut zcs vardr. Komutlar, komut saklaycsna veri yolunda bir tampon aracl ile yklenirler. Aritmetik ilemler iin 8 bitlik bir ALU ve 6-bitlik bayrak yer alr. Veri ALUya bir geici saklaycdan gemeden dorudan yklenir. Akmlatr A ve Bden herhangi biri bir bileen olabilir, sonu o bileenin geldii akmlatre yklenir. 6800un 8 bitlik durum gstericisinin en nemli iki bit bit 7 ve bit 6 srekli 1 konumundadr, dier 6 bit ise bit 5den bit 4e doru sra ile YARIM ELDE, KESME, EKS, SIFIR, TAMA ve ELDE bayraklardr. -PC ( Program Counter) -SP (Stack pointer) -X (Index register) (Dizin saklaycs) -A ve B (Akmlatrler) -ALU (Aritmetik Logic Unit) -CCR (Condition Code Register) -IR (Instruction Register), (Komut saklaycs) Adres saklaycs, 16 bitlik adresi (komutun okunaca veya verinin eriebilecei adresi) adres yolunu karr.
B. -1

Program Counter, CPUnun retecei komutun adresini tar. CPUnun adresinde balayan komutu yrtrken, PC, (n+m) adresinde yer alan bir sonraki komutun adresini tar. (m =1,2 veya 3) SP: (16 bit) program yrtlrken baz deerlerin geici olarak atld saklaycdr. X: CPUnun veri eriim yeteneini arttran bir saklayc. A, B akmlatrleri genel amal saklaycdr. 2 veri zerinde ilem yaplacak verilerden en az biri akmlatrlerden birinde bulunur. lem sonular ounlukla akmlatre yklenir. (8er Bit) Veri saklaycs: Belirli bir adrese veri yazldnda bu saklaycya ykl veri, veri yoluna kar (R/W =0) bellek veya evre biriminin veri yoluna kard veri, veri saklaycsna yazlr. (R/W =1). IR=(8 bitlik) komutun ilem kodu zlmek zere bu saklaycya yklenir. ALU: Aritmetik (toplama, kartma) logic (ve, veya, tmleme), teleme, dndrme ilemlerinin yrtld birim. CCR, 6 bayraktan oluur. Bunlardan 5i ALUdan yrtlen ilemler hakknda bilgi verir. C (=Carry)= elde olup olmadn belirler. V (=Overflow) = tama olup olmadn belirler. Z (=Zero) = Sonucu sfr olup olmadn belirler. N (=Negative) = Sonucun negatif olup olmadn belirler. H (=Half carry) = lk 4 bitin toplamnda elde olup olmad. I (=Interrupt mask) = Kesme izin bayra Komut kod zc ve kontrol lojii, bu birim IRde yer alan komut kodu ve d lojikten gelen uyar ve senkronizasyon iaretlerine gre gerekli kontrol iaretlerini retir. Bu kontrol iaretlerinin bir ksm da yansr, (R/W , VMA) bir ksm ise CPU iinde yer alan saklayclar tetiklemek iin kullanlr. ADRESSING MODES (=ADRESLEME YNTEMLER) CPUnun belirli bir adreste yer alan komut veya veriye erimesi (okumas veya yazmas) iin sahip olanaklardr. 6800 bu bakmdan fazla zengin deildir. 1-) Immediate Adressing (vedi Adresleme) Nesnel Kod 86 45 opkodu Veri Kaynak Kodu LDAA Mnemonic Sonu #$45 Boluk A 45H

Veri

# iareti ivedi adres olduunu gsterir Nesnel Kod CE opkodu A179 Veri Kaynak Kodu LDX #$A179 Boluk vedi Mnemonic Sonu X A179H

Veri

Bileenin kendisi (zerine ilem yaplacak veri) komutun iinde bulunur. Op kodu takip eden 1 bytelk veya 2bytelk bileen bulunur. # iareti, komutun ivedi adresleme kullanldn belirtir. LDAA LDX LDAB LDAA LDS ADDA ADDA #$15 #$1234 #01011101B #15 #$2C35 #15 #$15 A X B A SP A B 15H 1234H 01011101B 15 2C35H 15 + 15=30 30 + 15H=33H=51
B. -2

rnek : LDAA #$A3 86 A3


F7 6800 ACCA 86 IR 0020 PC 0021 PC A3 6800 ACCA 86 IR

LDA $A3

RAM 86 A3 CE

86
20

RAM 86 A3 CE 0021 12 85 96

20

0020 Adres Bus

12 85 96 Data Bus

Adres Bus

Data Bus

a-) CPU, komutun op-kodunu okur. RNEK 2 : LDX $ 10A2


6800 IX

b-) CPU, op-kodu takiben veriyi ACCye ykler.

CE 10A2
6800 IX

A752

CE IR

1052

CE IR

0103

PC

0104

PC

RAM
LDX CE 103

CE Data Bus
LDX

RAM
CE

10 Data Bus

$ 10A2

10 A2 B6

$ 10A2

10 A2 B6

0103
Adres Bus

1F 3B XX XX

Adres Bus

1F 3B XX XX

a-) Cpu, op-kodu, IR iine okur.

b-) Cpu, op-kodu takip eden bellek adresinden yksek byte okur.

B. -3

10A2 0105

6800 IX PC

CE IR

RAM
CE

A2

10 A2 B6 1F
Adres Bus

3B XX XX

Data Bus

c-) CPU, dizin saklaycsnn alak byten okur. 2-) Direct Addressing (Dorudan Adresleme) Sfr Sayfa Bileen adresi, komutun iinde bulunur. Adres, 0000H 00FFH aralnda, yani sfrnc sayfada bulunmaldr. Bu nedenle bu adreslemeye sfrnc sayfa adreslemesi (zero page adressing) ad verilir. Dorudan adresleme modunda, 16 bit adresin sadece alak byte komut iinde verilir. yksek byte ise sfrdr. rnek operand adresi 00E2

0000H 00FFH 0100H 01FFH

255. Sayfa Nesnel Kod 9E E7 D6 4A

FF00H FFFFH

Kaynak Kodu LDS $E7 LDAB $4A Boluk

1 2

opkodu

Bellek adresinin alak byte

mnemonic

Bellek adresinin alak byte

2. Nolu komutta, 004AH bellek adresinin iindeki veri B akmlatrne yklenir. 1. Nolu komutta, 00E7h ve 00E8h bellek adreslerinin iindeki veriler stack pointere yklenir. nk SP, 16 bitlik bir saklaycdr ve iki ardak bellek adresinin ierii SPe yklenir. lk bellek adresi (yksek byte olarak yazlacak verinin adresi) komutta verilir. kincisi ise bunu takip eden adresdir.
B. -4

RNEK :
F3

LDAB $9D
6800 ACCB D6 IR 0051 PC

D6

9D
F3 6800 ACCB D6 IR 0052 PC

D6 9D CE 12 34 0051 Adres Bus 09 -

0051 0052 0053

D6 9D CE 12

0051 0052 0053

D6 Data Bus 0052 Adres Bus 009C 009D 009E

34 09 9D Data Bus 009C 009D 009E

a-) CPU, op-kodu okur.

b-) CPU, operand adresinin low byten almak zere, bir sonraki bellek adresinin iindekini okur.
D6 IR

EB

6800 ACCB

009D

PC

LDX $9D; eklinde bir komut olduunda, IX 16 bit lik bir saklayc olduu iin 009DH adresinin ieriini IX in yksek bytena okur, adresi bir arttrr, 009EH in ieriini IXin alak bytena kopyalar. Komut Bellek Yeri Veri $52 $54 $50 $51 0050 0051 0052 0053 0054 0055 3A 27 4D 19 AB 93

D6 9D CE 12 9D
Adres Bus

1-) LDAA 2-) LDX 3-) ADDA 4-) LDAB


EB
Data Bus

34 09

A7 EB 92

9C 9D

1-) 2-) 3-) 4-)

A 4DH IX AB93H A 3AH+4D=87H B 27H

c-) CPU, 009DH adresindeki veriyi ACCB ye okur.

B. -5

3-) Extended Addressing (Geniletilmi Adresleme) Geniletilmi adresleme, bellein sfrnc sayfas da dahil olmak zere, 16-bit adres znrlnn herhangi bir gzn adreslemek iin kullanlr. Kaynak kodda ilemsel kodu takiben, bileenin tam adresi bulunur. (Bileenin hem alak byte hem de yksek byte = 16 bitlik adres) Nesnel kod her zaman 3 bytedr. Nesnel Kod B0 2C 95 Bileenin tam adresi Kaynak Kodu SUBA $2C95 Bileenin tam adresi A <A > - <2C95H

Opkodu

Mnemonic Boluk

RNEK :

LDAA $0111;
6800 ACCA B6

< 0111H >


6800 ACCA B6 IR 0030 PC

08

08 IR

002F

PC

B6 01 11 A7 002F Adres Bus 00 09


-

002F 0030 0031

B6 01 11 A7

002F 0030 0031

B6 Data Bus

0030 Adres Bus

00 09
-

01 Data Bus

2B 3F 99

010F 0110 0111

2B 3F 99

010F 0110 0111

a-) CPU, opkodu IR ye okur.

b-) CPU, bileen adresinin yksek byten okur.

B. -6

08

6800 ACCA 0031

B6 99 IR

6800 ACCA

B6 IR

PC

0111

PC

B6 01 11 A7 0031 Adres Bus 00 09


-

002F 0030 0031

B6 01 11 A7

002F 0030 0031

11 Data Bus

0111 Adres Bus

00 09
-

99 Data Bus

2B 3F 99

010F 0110 0111

2B 3F 99

010F 0110 0111

c-) CPU, bileen adresinin alak byte n okur. Komut Bellek gz 1. 2. 3. LDAA LDX ADDA $10A3 $10A1 $10A6 10A1 10A2 10A3 10A4 10A5 10A6 10A7

d-) Cpu, bileenin adresini adres busa koyar ve bu adresden veri okunur. erii 35 C6 EE 2B 91 50 21

1. Komut yrtlnce, A EEH yklenir. Bylece 10A3H gznde nceki deer kalr ve ACCe ise EEH verisi yklenmi olur. 2. Komut yrtlnce, IX saklaycs 16 bitlik bir saklayc olduu iin, IX $35C6 yklenir. 3. Komut yrtlnce, A EEH + 50H=13EH ACCAnn iinde EEH vard ve komut yrtldkten sonra, akmlatr Ada artk 13EH deeri yklenmitir. 4-) Indexed Adressing (Dizinli Adresleme) Veri Adresi, bir taban adresi ile bir teleme (offset) adresinin(yada sabitinin) toplanmas sonucu bulunur. Taban adresi IX saklaycsnda bulunur (16 bitlik). teleme (offset) adresi ise komut iinde bulunur ve bir byte uzunluundadr. 16 bitlik IXin iaret ettii adresten, 0 ila 255 byte ilerideki bir (adres ieriine) szce eriilebilir. 1000H $15 , X

LDX LDAA

< Ix + 15H > < 1015H >

A A

B. -7

1000H ......... ......... teleme ......... . . Nesnel Kod A6 20 teleme Tablonun 5. elemanna eriim LDX 1000H LDAA $4, X Kaynak kodu LDAA $20, X teleme X, harfi dizinli adresleme olduunu gsterir. IX Tablo balang adresi

opkodu

mnemonic

Dizinli adresleme, bellekte iki sekizli yer kaplar. Birincisi mnemonic (op-kodu ), ikincisi teleme. teleme her zaman iaretsiz, hexadecimal, pozitif bir saydr. teleme IXin ieriini deitirmez. Dizin saklaycsnn, $7000 olduunu ve $7010 nolu bellekte $40 yklenmi olduunda; rnekler : LDAA $10,x A6 10 CE A6 AB 3E 02 20 21 00 A ( x + 10H ) yani A < 40H >

1-)

0000 0003 0005 0007

LDX $200 LDAA $20,x ADDA $21,x WAI

; ; ;

Ix A A

200H < 220H > <220H>+<221H>

IX, $0200 deeri ile ivedi olarak yklenir. A akmlatrne IXin gsterdii adresten (200H) 20H ilerideki bir bellek adresinin ierii yklenecektir (A < 0220H >), nc komut yrtldkten sonra ise A ( A ) + < 0221H > 2-) 0000 0003 0005 0007 CE E6 EB 3E 00 50 51 30 LDX $30 LDAB $50,x ADDB $51,x WAI LDX 20 LDAA 20,x SUBA 21,x WAI LDX $A300 LDAB 50,x SUBB 60,x WAI ; ; ; ; ; ; Ix B B 0030 H < 0080H > <0080H>+<0081H>

3-)

0000 0003 0005 0007 0000 0003 0005 0007

CE A6 A0 3E CE E6 E0 3E

00 14 15

14

Ix A A

$0014 <$14+$14> =<28H> A(=<0028H>) - <0029>

4-)

A3 32 3C

00

Ix B B

A300H < A332H > <B> - <A33CH>

B. -8

Dizinli adreslemenin program dnglerinde kullanm rnek olarak $0050 den $006fe kadar olan bellek adreslerinin ieriklerini toplanmas istenmektedir. Deikenler SUM = 0 ve PNTR = $0050 ierikle ileme balanacaktr. Pointer, toplanacak ilk saynn bulunduu bellek adresini gsterecektir ve ara sonularn topland gz ise SUM deikenidir. Toplama ilemi bitince bu deerlerin ortalamas alnacaktr. Bu artlar salayan makina dili yazlmn ak diyagramn ve kaynak dosyasn yaznz. Toplam sonucu $150 nolu adrese ve ortalama deer ise $151 nolu adrese yazlacaktr.
START START

SUM = 0 PNTR =0050H

Initialization

Initialization lklendirme

SUM = SUM + M(PNTR)

Proses

Process lem

PNTR = PNTR+1

Loop Control

Loop Control Dng Sayac

Hayr
? PNTR=0070H

Exit

Exit ?

Evet
SONU

<$0150>

Termination

Termination Sonulandrma

STOP

STOP

1 2 3 4 5 6 7 8 9 10 11 12 13

* $0050 ile $006F arasndaki adres ieriklerini * toplayan ve sonucu da * $0150 nolu adrese yazan * program * * 0000 5F CLRB ;SUM = 0 * 0001 CE 00 50 LDX $50 ;PNTR = $0050 * 0004 EB 00 LOOP ADDB ,X ;SUM= SUM+M<PNTR> * 0006 08 INX ;PNTR = PNTR + 1 * 0007 8C 00 70 CPX $70 ; PNTR = $0070 * 000A 26 F8 BNE LOOP ; Sfr deilse dngy tekrarla * 000C F7 01 50 STAB $150 ; Sonu M<$0150> * 000F 3E WAI
B. -9

Not : ADDB ,X; teleme belirtilmemi, dizinli(Indexed) adresleme modunda yazlan bir komutun teleme deeri belirtilmemi ise $00(sfr) olarak alnr. Dallanma komutu sfr bayrana bakar. Sfr deilse, dng LOOP etiketinin olduu komut satrna dallanr. Bu yazlm yksek seviyeli yazlm programndaki repeat until dngsdr. Program baka komutlar kullanlarak da yazlabilir:
START START

INITIALIZATION (lkletirme)

SUM = 0 Pointer = $0050

EVET EXIT Termination Sonulandrma ?


PNTR =$70

EVET
Sonu ($0150)

PROCESS (lem)

STOP

SUM = SUM + M(PNTR)

STOP

Loop Control (Dng Sayac)

PNTR = PNTR +1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

0000 0001 0004 0007 0009 000B 000C 000E 0011

5F CE 8C 27 EB 08 20 F7 3E

* Program to add the contend of * Memory locatons $0050 through * $006F Sum saved in $0150 * Arranged in loop structured B * * CLRB ;SUM = 00 00 50 LDX $50 ;POINTER Ix $0050 00 70 LOOP CPX $70 ;POINTER = $0070? 05 BEQ TERM ;Eitse,TERM adlyere dalla 00 ADDB 0,X ;SUM=SUM+M(PNTR) INX ;PNTR=PNTR+1 F6 BRA LOOP 01 50 TERM STAB $150 ;SONU < 0150H > WAI

5-) Inherent Adressing (Kapal Adresleme) Bileen ya CPU saklayclarndan gelir veya bileen yoktur. ABA A A+B

Komutun gerektirdii tm bilgiler CPU saklayclarnda bulunuyor, dardan (bellekten veya programdan) bir bileenin alnmas gerekmez. Bellekte sadece tek sekizlik(bir adres) yer kaplar. (Yani sadece op-kodu, ilemsel kod)

B. -10

COM A DEX CLRB CLRA WAI

( Complement A ) ( A nn ieriinin 1 e gre tmleyeni ) ( Decrement Index Register ) IX IX - 1 ( Clear B Accumulator ) B 00H ( Clear A Accumulator ) A 00H ( Wait for Interrupt )

BAIL ADRESLEME (RELATIVE) Sadece dallanma komutlarnda (=branch instructions) kullanlan bu adresleme trnde ulalmas gereken adres, program saycsnn o andaki ieriine bal olarak bulunur. Dallanma komutlar iki bytedan oluur. Birinci byte ilem kodu, ikinci byte ise bir teleme bytedr. teleme byte program saycsna eklenecek deerdir. Bir dallanma srasnda ileriye gidilmesi gerekecei gibi geriye de gidilebilecei iin teleme says iaretli bir saydr. Bylece program saycsnn gsterdii yerden +127 ileriye veya -128 geriye gidilebilir. Fakat teleme says okunduu zaman program saycsnn dallanma komutunun olduu yerden iki ilerisini gsterecei dnlecek olunursa dallanabilecek alann dallanma komutunun olduu yerden +129 ileri veya -126 geri olaca ortaya kar. Relative adresleme, program saycsnn gsterdii yerden (=adresten) ne kadar (=ka bellek adresi) ileri veya geri gidilebileceini CPUya anlatr. rnein program sayc dallanma komutu yrtmeden nce $0102 deerini tayorsa ve bal adres = $10 ise, program sayc $0102 + $10 = $0112 adresine geer. rnek; 004A 20 09 BRA OUTPUT 004C 86 AA LDAA #$AA eklinde yazlan program satrlar iin dallanma komutu bellekten okunur okunmaz program sayc iki artarak, bir sonraki komutun adresi 004Cyi gsterir. Burada bal adres 09 olduundan o andaki PC deerine 09 eklenir ve bu deer program saycsna aktarlacak yeni adres olur. $004C + $0009 $0055 $0055 deeri yeniden program saycsna yklenir ve CPU $0055 deerindeki komutu yrtr.
6800 004C PC 6800 0055 PC

4A 4C

20 09

BRA
OUTPUT

4A 4C

20 09

BRA
OUTPUT

kili 8bit Saylar: iaretli ve ieretsiz olarak ikiye ayrlrlar.Tm iaretsiz saylar pozitiftirler. Eksi Aralk $00 010 $FF = -110 $FF +25510 iaretsiz $FE = -210 $7F +127 $FD = -310 . 7F +12710 . $FF -1 iaretli $80 -12810 saylar $80 = -12810 CPU, sfr pozitif say olarak grr. Pozitif bal adresler = ileri dallanma Negatif bal adresler = geri dallanma
B. -11

Geriye Dallanma Mikroilemci 8 bite bakarak saynn iaretli mi iaretsiz mi olduunu anlayabilir. En anlaml bit (MSB) 1 ise bu bir negatif say, 0 ise pozitif bir saydr. 16 bitlik bir adrese bir teleme saysn toplamak iin iaret uzatma (=sign extension) yaplr. En anlaml bit 1 ise bu 16 bite uzatlr. $3A $F2 $E5 = = = 0000 1111 1111 0000 1111 1111 F7 0011 1111 1110 1010 (2) 0010 (2) 0101 (2)

rnek; 004B 20 $004D + $FFF7 $10044

BRA LOOP eklinde bir komut yrtldnde;

toplam 17 bitlik bir deer elde edilir. 17.bit carry gz nne alnmaz. 16-bitlik toplam 0044H adresidir. Program saycsna 0044H adresi yklenir. Komut transfer denetimi bellekte 004DH adresinden 0044H adresine geer. Adres rnekler a-) b-) c-) A-) 010E 0135 0030 $0110 + $0068 $0178 PC 0178H PC 0109H B-) Nesnel Kod 20 20 20 $0137 + $FFD2 $10109 PC 001AH 68 D2 E8 C-) Kaynak Kodu BRA AGAIN BRA OUTPUT BRA PRINT $0032 +$FFE8 $1001A

Konumdan Bamsz Dallanma En pozitif 1 byte iaretli say $7F ve en negatif 1 byte iaretli say $80dir. Bal adresleme ile ilgili olarak bellekte, (127)10 sekizli ileri ve 12810 sekizli geri dallanma adres snrlar arasnda kalnmaldr. Bellein daha byk snrlarnda dallanma yapmak iin JMP (=jump) atlama komutu kullanlr. Bu komutlar 3 sekizlidir. Bal adresleme, atlama komutu ile kullanlan geniletilmi adreslemeden daha karktr. Ancak bal adresleme nesnel kodu, konumdan bamszdr (=position independent). Yani denetim transferini salamak zere bal adresleme iin kullanlan bir komut bellekte nereye yerletirilirse yerlesin alr. (Relocatable) rnekler: 0000 0002 0004 0006 0009 000C 000F

96 9B 20 7A 7A FE 97

A3 57 09 10 10 10 40

00 01 00 SKIP

LDAA ADDA BRA DEC DEC LDX STAA

$A3 $57 SKIP $1000 $1001 $1000 $40


B. -12

003C 003C 003E 0040 0042 0045 0048 004B

96 9B 20 7A 7A FE 97

A3 57 09 10 10 10 40

00 01 00 SKIP

ORG LDAA ADDA BRA DEC DEC LDX STAA

$003C $A3 $57 SKIP $1000 $1001 $1000 $40

Bal adres 09 olarak sabit kalr. BRA yerine JMP komutu kullanldnda ; 0000 0002 0004 0007 000A 000D 0010 96 9B 7E 7A 7A FE 97 A3 57 00 10 10 10 40 LDAA ADDA JMP DEC DEC LDX STAA $A3 $57 SKIP $1000 $1001 $1000 $40

10 00 01 00 SKIP

003C 003C 003E 0040 0043 0046 0049 004C

96 9B 7E 7A 7A FE 97

A3 57 00 10 10 10 40

4C 00 01 00 SKIP

ORG LDAA ADDA JMP DEC DEC LDX STAA

$003C $A3 $57 SKIP $1000 $1001 $1000 $40

Bal Adres Hesab: Assembler, bal adresi otomatik olarak hesaplar, ancak programlar hex kodlar ile yazlrsa, (el ile assembly edilirse) bal adresler, var adresinden, PC nin ierii karlarak hesaplanr. RA = DA - PC RA = Relative adres (bal) DA = Destination adres (=var adresi) PC = Program sayc ierii Program saycnn ierii, dallanma komutunun balad adres + 2 olur. 16 bitlik bir adresten, 16 bitlik bir adres knca sonu 16 bitlik ama iaret uzatlm ekilde dnlr. Bal adres olarak dk anlaml sekizli alnr. rnekler; a-) 0020 20 004B 86 b-) 0125 C6 013E 20 C-) 0032 C3 0042 20

?? AA 86 ?? 01 5A REDO ?? INPUT LOOP

BRA LDAA LDAB BRA LDX BRA

INPUT #1 #$AA #$86 #2 LOOP #$015A #3 REDO


B. -13

D-)

0010 86 0300 20 A-) $004B - $0022 $0029

15 ??

START

LDAA BRA B-) $0125 - $0140 $FFE5

#$15 #4 START

Bal adres = 29H C-) $0032 - $0044 $FFEE Bal adres = EEH

Bal adres = E5H D-) $0010 -$0302 $FD0E Dikkat; Dallanma komutunun adresi ile var adresi arasndaki fark bal adresleme iin ok Byk olduundan dallanma komutu kulanlamaz.

evresel Arabirim Adaptr (Peripheral Interface Adapter, PIA) Mikroilemci sistemlerine giri/k kaplar olarak balanacak zel entegre devreler retilmitir. Bunlardan biri de, Motorola ailesinin rettii 6800 CPUsuna balanacak olan MC6821 Peripheral Interface Adapter ( PIA )dr. PIA, 8 bitlik iki tane paralel porta sahiptir. ki portun her bir veri hatt, birbirinden bamsz olarak, giri veya k olarak programlanabilir.
D0 D1 D2 D3 D4 D5 D6 D7 CA1 CA2 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 Port A Control

DATA BUS

Peripheral Data Register A Data Direction Register A Control Register A

Port A Data

ADRES BUS VE ADDRESS DECODER

RS0 RS1 CS0 CS1

CS2 RESET
CONTROL BUS E

PB0 PB1

MC 6821

PB2 PB3 PB4

Port B Data

R /W
IRQA IRQB
Peripheral Data Register B Data Direction Register B

PB5 P6 PB7

BESLEME

+5V GND

CB1 CB2

Port B Control

Control Register B

Mikroilemci Taraf

evre Taraf
B. -14

MC6821 PIAnn, alt tane adreslenebilien saklaycs ve 40 baca var. Mikroilemci bu alt saklaycy bir bellek gz gibi adresler. PIA 6821in mikroilemci taraf, sistem iinde buslara balanr, evre tarafndaki ular ile ise evre elemanlarna balanr. Port A ve Port B olarak adlandrlan 2 tane 8 bitlik giri/k kaps var. ki kap, iki ayr 8 bitlik evre birimlerine balanabilir. PIA iinde adreslenebilen saklayclar Port A saklayclar ve Port B saklayclar olarak ikiye ayrlr. Her bir portun veri saklaycs, veri ynlendirme saklaycs ve kontrol saklaycs vardr. Veri Ular D0 - D7 PIAnn 8 tane veri pini (D0 - D7), CPUnun veri yoluna balanr ve PIA ile CPU arasnda veri alverii iin kullanlr. Veri giri/k ynnde olabilecei iin bu hatlar ift ynldr. CPU, bu veri hatlar ile PIAnn adreslenebilen 6 tane saklaycsndan veri okuyabilir veya veri yazabilir. Adres ular RS0 , RS1 , CS0, CS1 , CS2 1. grup yonga seme ular 2. grup saklayc seme ular Chip Select - Chip Enable (yonga seme ve etkinletirme) PIA, 5 tane adres ucu var. tane yonga seme ularnn etkin durumda olmas halinde PIA, CPU ile veri alverii yapabilir. PIAnn yonga seme ular, genellikle adres kod zc devrenin klarna balanr. CS0, CS1 ular etkin yksek ve CS2 ucu ise etkin alak dr. Dier iki adres ucu, yani saklayc seme ular RS0 A0 hattna, RS1 ise A1 adres hattna balanr. Bu RS ular PIA iindeki saklayclar semek iin kullanlr.
A15

CS0

A2-A15

ADRES KOD ZC

A14 A13

CS1 CS2 PIA

6800 CPU
Veri Yolu

A0 A1

RS0 RS1

ki tane saklayc seme ucu ile 22 = 4 farkl adres seilebilir. 002 , 012 , 102 , 112 eklindeki fakl lojik ifre ile, RS1 RS0 Adreslenen saklayc 0 0 Peripheral Data Register A veya Data Direction Register A 0 1 Control Register A 1 0 Peripheral Data Register B veya Data Direction Register B 1 1 Control Register B PIA, bellekte 4 byte yer kaplar. Yani 6 tane saklayc iin 4 bytelk adres ayrlmtr. CPUnun adres hatlarndan A2 - A15 adres hatlarnn kodu adres decoder ile zlr. Doru adres uyguland zaman, adres decoder tane chip select ucunu etkin klar. A0 ve A1 adres hatlar
B. -15

PIAnn saklayc seme girilerine uygulanr ve PIA iinde ulalacak saklayc belirlenir. ( PIA iinde hangi saklaycnn adresleneceini belirler. ) CPU $E000 - $E003 adres aralnda bir adresi adresledii zaman PIAnn yonga seme girilerini etkin hale getirir. En az anlaml bitler ile PIA nn iindeki saklayclara eriilir. $E000 $E001 $E002 $E003 Peripheral Data Reg. A veya Data Direction Reg. A Control Reg. A Peripheral Data Reg. B veya Data Direction Reg. B Control Reg. B

Kontrol pins (Denetim Ular) Denetim ular, mikroilemcili sisteminin denetim yoluna balanr. PIAnn RESET ucu, CPUnun RESET bacana balanr. Yani, PIAnn RESET baca devrenin sfr ucuna balanrsa, tm PIA saklayclar sfrlanr. PIAnn E ucu sistemin 2 clock iaretine balanr. PIAnn almasn zamanlamak iin kullanlr. PIA veri yolundandan bilgi almas veya bilgi yazmas iin lojik 1 olmaldr. PIAnn R / W ucu, CPUnun R / W bacana balanr. CPU, PIAya yazarken, PIA veri yolundan bilgi alr. CPU PIAdan okurken, PIA verilerini veri yoluna koyar. Kesme istei A IRQA ve kesme istei B IRQB hatt, CPUnun IRQ kesme istei ucu giriine balanr.

PIA taraf ( Peripheral Side Pnout ) PIA, A ve B olmak zere iki portu var. Her bir port, 8 bitlik veri hattna sahiptir (PA0- PA7 , PB0PB7). Hem giri, hem k olarak programlanabilir. Her portun denetim ular vardr. Port A denetim ular CA1 - CA2 Port B denetim ular CB1 - CB2 PIA saklayclar Her port un tane saklaycs vardr. 1. Peripheral Data Register 2. Data Direction Register 3. Control Register Peripheral Data Register gerek giri/k kapsdr. Control registeri sadece PIA artlandrlrken kullanlr (adreslenir). PIAy programlamak, artlandrmak konfigurasyon olarak adlandrlr. Peripheral Data Register A portu iin PDRA B portu iin PDRB (Data Register veya Output Register )

Her bir Peripheral Data Register (Veri saklaycs) giri kaps ( Input buffer ) veya k kaps (output latch ) olarak programlanabilir. Port A - ( PA0 - PA7 ) k olarak programlanrsa, PDRA k latchi olarak adlandrlr. PDRA, veriyi latchler ve ( PA0 - PA7 ) hatlarnda veriyi tutar. Port A - ( PA0 - PA7 ) giri olarak programlanrsa, bir giri buffer gibi davranr. Giri verisi latchlenmez. Giri verisi, CPU tarafndan PDRA saklaycsn okuyarak alnr.( LDAA, LDAB ) PIAya giren veya kan tm veriler PDRlerinde bulunur. k verisi LATCHlenir, giri verisi LATCHlenmez.

B. -16

Veri Ynlendirme Saklaycs (Data Direction Register) Her bir data direction registeri, peripheral data register ile ayn adresi paylar, DDRA ve PDRA ayn adreste, DDRB ve PDRB ayn adreste bulunur. Veri ynlendirme saklaycs (DDR) PIA portundaki verinin ynn belirler. DDRya 0 yklemek bu hatt giri hatt, DDRye 1 yklemek bu veri hattn k hatt olarak programlamak demektir. rnek: DDRAda $D0 var. A portu ne ekilde koullandrlmaya hazrdr? On altl say olan $D0 ikili say karl = 1 1 0 1 0 0 0 0 B PA7 1 PA6 1 PA5 0 PA4 1 PA3 0 PA2 0 giri
PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0

PA1 0

PA0 0

k k

giri k PIA

PDRA

B7 B6 B5 B4 B3 B2 B1 B0 1 1 0 1 0 0 0 0

DDRA

rnek: DDRA DDRA DDRB rnek: DDRA DDRA = $B3 8 PA7 1 $B3 ve DDRB 4 PA6 0 2 PA5 1 k 2 PB5 0 1 PB4 1 1 PA4 1 $DA var 8 PA3 0 giri 8 PB3 1 4 PB2 0 4 PA2 0 2 PA1 1 1 PA0 1 $00; $00 $ff ve DDRB $FF varsa, port A data input varsa, potr B data output var

k giri DDRB = $DA 8 PB7 1 4 PB6 1

k k 2 PB1 1 1 PB0 0

Denetim Saklayclar(Control Register) Veri saklayclar ve veri ynlendirme saklayclar ayn adresi tarlar. Denetim saklaycsnn bit2si (3.bit), bu saklayclardan (PDR veya DDR) hangisinin bu adreste bulunduunu belirtir. Bit 2, clear ise, ayn portun veri ynlendirme saklaycs bu adreste bulunur. Bit 2 setevresel veri saklaycs bu adreste bulunur.
B. -17

0 0

0 0

0 0

0 0

0 0

0 1

0 0

0 0

CRA CRA

bit 2 clear DDRA adreslenir. bit 2 set PDRA adreslenir.

Dier bitler deiik amalar iin kullanlr. Bu aamada PIA artlanrken, bit 2 dndaki bitler sfrlanacaktr. PIAy Koullandrma CPU resetlenirse, PIA saklayclar sfrlanr. nk CPU reseti PIAnn resetine baldr. Fakat RESET, veri ynlendirme saklaycs bitlerini sildii iin, tm PIA data hatlarn giri olarak programlar. RESET ayn zamanda denetim saklaycsnn bit 2sini 0 lar ve CPUnun veri ynlendirme saklaycsn adreslemesini gerekler. Reset sonras program PIAy, reset tuunu kullanmadan nce koullandrmaldr. PIAy programlamak admda yaplr. 1-) Denetim Saklaycsn sil. Bylece denetim saklaycsnn bit 2sini silerek veri ynlendirme saklaycsna eriim gerekleir. Denetim saklaycsnn dier bitleri bu aamada kullanlmyor. CLR CRA; denetim sakalaycnn 3.bitini sil. 2-) Veri ularn hangi ynde koullandrmak isteniyorsa (Giri / k), veri ynlendirme saklaycsna uygun veri yazlmaldr. 1 yklemek; bu pini k olarak, 0 yklemek, bu pini giri olarak programlamaktr. Tm A portuna ait veri ularn giri olarak programlamak istenirse; CLR DDRA; Tm A portuna ait ular k olarak programlanmas isrenirse; LDAA #$FF STAA DDRA 3-) Denetim saklaycsnn bit 2si set edilir. Binary olarak denetim saklaycsna 0000 0100 veya $04 yklenirse, bit 2 set olur. LDAA #$04 STAA CRA Bu admda PIAnn her bir portu artlandrlabilir. Eer program sadece A portunu kullanyorsa, program sadece A portunu artlandrmaldr. Her iki portu da kullanyorsa, bu adm her bir port iin tekrarlanr. rnek: PIAnn A portunu giri portu, B portunu k portu olarak koullayan program yaznz. $E000 PDRA ve $E001 CRA DDRA $E002 PDRB ve $E003 CRB DDRB

Adm 1 Denetim saklaycsn sfrla. 1 0000 7F E0 01 CLR CRA ; DDRAya eriim DDRA ; Port A giri. Adm 2 Veri ynlendirme saklaycsna uygun veri yaz. 2 0003 7F E0 02 CLR Adm 3 Denetim saklaycsnn bit2si set edilecek deeri yaz. 3 0006 86 04 LDAA #$04 ; Program PDRAdan veri okuyabilir. STAA CRA CLR CRB ;PDRA eriebilsin. ; DDRBye eriim
B. -18

4 0008 B7 E0 01 Adm 1 Denetim saklaycsn sfrla. 5 000B 7F E0 03

Adm 2 Veri ynlendirme saklaycsna uygun veri yaz.

000E C6

FF

LDAB #$FF ; Port B k.

7 0010 F7 E0 02 STAB DDRB Adm 3 Denetim saklaycsnn bit2si set edilecek deeri yaz. 8 0013 B7 E0 03 STAA CRB ; Program PDRden veri gnderebilir. rnek: PIAnn A portunu PA0, PA1, PA5, PA7 hattn giri, PA2, PA3, PA4, PA6 hatlarn k olarak programlayan bir program yazn. PA7 I 0 DDRA = 1 0000 2 0003 3 0005 4 0008 5 000A PA6 0 1 $5 E0 5C E0 04 E0 PA5 I 0 PA4 0 1 PA3 0 1 PA2 0 1 PA1 I 0 PA0 I 0

7F 86 B7 86 B7

01 00 01

CLR LDAA STAA LDAA STAA

$C CRA ; DDRAya eriim. #$5C ; Porta configration DDRA ; #$04 ; CRAnn bit2si set. CRA ; PDRAya eriim.

PIAy Giri Eleman Olarak Kullanma PIAnn veri ynlendirme saklaycs, giri ynnde programlanrsa, port giri buffer olarak davranr. Giri evre birimi, portu veri hatlarna balanr ve veri PIAnn PDR (pripheral data register) veri saklaycs CPU tarafndan okunarak veri elde edilir.
5V

S0 D0 D1 D2 D3 D4 D5 D6 D7

1 1 0 1 0 1 1 1

PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 S7 S5 S6

S1 S2 S3 S4

PDRA
0 0 0 0 0 0 0 0

B0 B1 B2 B3 B4 B5 B6 B7

DDRA CR0 CR1 CR2 CR3 CR4 CR5 CR6 CR7

0 0 1 0 0 0 0 0

PIAnn A portunu giri olarak programlamak iin DDRAnn tm bitleri sfrland. CRAnn bit2si 1e set edildi, bylelikle CPU PDRAya eriir. PA0-PA7, 8 tane anahtara balanm. Normalde anahtarlar ak iken veri hatlar 1, anahtarlar kapal ise veri hatt 0 dr. PDRA giri bufferi olarak programlandndan veri hatlarnda lojik seviyeler bufferda gzkmektedir. Yani, anahtarlarn konumu, PDRA saklaycsnda yer alr. Anahtarlarn durumu LDAA veya LDAB komutu ile okunur.

CRA PORT A OF PIA

B. -19

rnek: PIAnn A portu iki konumlu anahtarlara balanmtr. PIAnn A portu giri olarak programlanmasn ve anahtarlarn durumunu okuyan ve $0100 adrese saklyan bir program yaznz. PIA, $E000 - $E003 Adresleri arasnda duruyor. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 000B 000E 0011 0000 0003 0006 0008 * * INPUT DATA * B6 B7 3E E0 01 00 00 LDAA PDRA STAA $100 WAI ;Anahtarlar oku 0000 E000 E000 E001 * * CONFIGURE THE PIA, PORT A. * FOR DATA INPUT * 7F 7F 86 B7 E0 E0 04 E0 01 01 00 CLR CLR CRA DDRA ;DDRAya eriim ;Veri giri ;CRA bit2 set ;PDRAya eriim PDRA DDRA CRA EQU EQU EQU $E000 $ E000 $ E001

LDAA #$04 STAA CRA

PIAy k Veri Eleman Olarak Programlama


D0 D1 D2 D3 D4 D5 D6 D7
1 1 1 0 1 0 1 1
DataReg. L7 L6 L5 L4 L3 L2 L1 L0

PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7

1 1 1 1 1 1 1 1
DDReg.

0 0 1 0 0 0 0 0

PIAnn A portu veri k olarak programlanmal. Veri ynlendirme saklaycsna 1 yklenerek A portu k olarak programlanmtr. Denetim saklaycsnn 3.biti set edilmi, bylelikle CPU PDRAdan artk veri alabilir. Evirici bufferlar PIAnn port Asnn veri hatlarna balanm. Veri saklaycsna 0 yklendiyse; evirici 1 e evirir ve led yanar. PDRAnn bit 3 ve bit 5 0 gnderildiinden L3 ve L5 yanar.

B. -20

rnek: PIAnn A portunu k olarak programlaynz, $E000 $ E003 adresleri arasna PIAy yerletiriniz, L0, L2, L4, L6 ledlerini yaknz.
1 2 3 4 5 6 7 8 9 10 11 12 13 000D 86 000F 0012 B7 3E AA E0 00 0000 0003 0005 0008 000A 7F 86 B7 86 B7 E0 E0 E0 00 00 01 PDRA EQU DDRA EQU CRA EQU $ E0 $ E0 $ E0 00 00 01

* configure port A for data output E0 FF E0 04 E0 01 00 01 CLR CRA ; DDRAya eriim ; Data output

LDAA #$FF

STAA DDRA ; iin DDRA program LDAA #$04 STAA CRA * ; PDRAya eriim ; iin CRAnn bit2 si set

Output Data

LDAA #$AA ; Ledleri yakmak iin STAA PDRA ; k datas WAI

Yedi Paral Displayi Srmek in PIA Kullanma


a PA0 b PA1 c PA2

PA3

PA4 PA5 PA6

e f f g e d g b

PA7 dp PIA PB0 1 2 3 4 5 6 7 8

dp

PB1 PB2 PB3 PB4 PB5 PB6 PB7

B. -21

Port A, ledlerin anodlarna balanr. PA0 knda alak varsa, bu evirici bufferlar tarafndan ykseke evrilir. Sekiz tane led displayin 7 segmentinin anoduna uygulanr. Tm segmentlerin katotlar, birletirilmi ve transistrn kollektrne balanr. Transistrn emitr topraklanmtr. Tranzistr, doyuma girdii zaman displaydeki tm ledlerin katodlar topraklanr. Ledlerin, anodlarna lojik 1 gelirse led yanar. L harfini yakmak iin d, e, f segmentlerinin anodlarna +5 volt gelmesi iin gerekli veri portA veri saklayc zeinden gnderilmelidir. B portunun 3 nolu kna ise lojik 1 uygulandnda, transistr doyuma sokar ve bylece katodlar topraa eker. Yani, PA3, PA4, PA5 hatlarna lojik 0 kmal PB0dan 1 kmal. rnek : PB2ye transistr balaynz. Displayde J harfini yakmak iin gerekli program yaznz. $E000 - $E003 adresleri arasna PIA yerletiriniz. Segmentler Bit sras Veri PortB sra no.su Bit klar Veri dp PA7 1 g PA6 1 E 8 PB7 0 7 PB6 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 0000 0003 0005 0008 7F 86 BF C6 E0 FF E0 04 E0 E0 E0 E0 01 03 02 03 00 01 E0 E0 E0 E0 E0 E0 00 00 01 02 02 03 6 PB5 0 5 PB4 0 4 PB3 0 f PA5 1 e PA4 0 d PA3 0 c PA2 0 1 3 PB2 1 b PA1 0 a J iin b, c, d, e PA0 1 $E1 2 PB1 0 1 PB0 0 $04

4 PDRA EQU $E000 DDRA EQU PDRA CRA EQU $E001 PDRB EQU $E002 DDRB EQU PDRB CRB EQU $E003 ;DDRAya eriim

*configure PIA for data output CLR CRA

LDAA #$FF ;Port A STAA DDRA ;k LDAB #$04 STAB CRA CLR CRB ;CRAnn bit 2si set ;PDRAya eriim ;DDRBya eriim ;PDRBye eriim

000A F7 000D 7F 0010 0013 B7 F7

STAA DDRB ;Port B k STAB CRB

*Output Data to light Display * 0016 86 0018 B7 001B F7 001E E1 E0 E0 3E 00 02 LDAA #$E1 STAA PDRA STAB PDRB WAI
B. -22

You might also like