260 likes | 359 Views
8051 MİKROKONTROLÖR AİLESİ. Arş. Gör. Hüseyin ERDOĞAN. ADRESLEME MODLARI. DOĞRUDAN (DIRECT) ADRESLEME DOLAYLI (INDIRECT) ADRESLEME SAKLAYICI (REGISTER) ADRESLEME İVEDİ (IMEDIATE)ADRESLEME İNDEKS (INDEX) ADRESLEME. DOĞRUDAN ADRESLEME.
E N D
8051 MİKROKONTROLÖR AİLESİ Arş. Gör. Hüseyin ERDOĞAN
ADRESLEME MODLARI • DOĞRUDAN (DIRECT) ADRESLEME • DOLAYLI (INDIRECT) ADRESLEME • SAKLAYICI (REGISTER) ADRESLEME • İVEDİ (IMEDIATE)ADRESLEME • İNDEKS (INDEX) ADRESLEME
DOĞRUDAN ADRESLEME MOV A,70H ;70H adresinde tutulan sayıyı register A’ya yaz MOV 60H,A ;Akümülatördeki veriyi 60H adresine yaz. PORT1 EQU 90H ;Assembler bu tanımdan sonra PORT1 gördüğü yere 90H değerini ;yerleştirir MOV PORT1,55H ;55H adresindeki veri Port1 den gönderilir.
DOLAYLI ADRESLEME MOV 60H,#126 ;Bu komutla 60H adresinde 126 sayısını saklıyoruz MOV R0,#60H ;Bu komutla R0 içerisine 60H sayısını yazarak bu adresi işaret etmesini sağlıyoruz. MOV A,@R0 ;R0’ ın gösterdiği 60H adresindeki 126 sayısını A içerisine yazar
SAKLAYICI ADRESLEME MOV R0,A ;akümülatördeki veriyi R0’a yaz. MOV PSW,#10H ;ikinci bank seçilir. MOV R4,B ;B akümülatöründeki veriyi R4 registerına yaz. MOV R1,#20H ; R1 içerisine 20H yaz MOV R5,50H ; 50H içeriğini R5 içerisine yaz MOV R2,A ; Akümülatör içeriğini R2 içerisine yaz MOV A,R6 ; A içine R6 içeriğini ata
İVEDİ ADRESLEME MOV A,#021H ; A’nın içerisine 21H sayısını yaz.
İNDEKS ADRESLEME LOOK-UP TABLE LOOK_UP_TABLE: ;look-up table’dan veri çağırırken kullanacağımız isim DB 00FFH ;Bu bölgeye başında DB komutu ile gereken veriler gelir DB 10011100B ;bu veriler direkt olarak sayılardır.Başka türlü DB 31 ;adreslenemeyeceğinden diğer adreslemelerdeki gibi DB 013H ;istenen veri yazılırken başına ‘#’ işareti konmasına gerek yoktur. MOV DPTR,#LOOK_UP_TABLE ; Look-Up-Table başlangıç adresini DPTR ; içerisine ata. VEYA; (tablonun başlangıç adresi biliniyorsa) MOV DPTR,#5000H ;5000H adresi DPTR içerisine yerleştirildi.
İNDEKS ADRESLEME LOOK-UP TABLE MOV A , SANIYE ;SANIYE program içinde deger alan bir değişkendir. ;Bu değişken ile öteleme değeri A registerına atanmış olur. ; Bu aşamda Look-Up-Table’ daki istenilen degere artık erişilebilir. MOVC A,@A+DPTR ;Look-Up-Table’ın başlangıç adresi ile akümülatörde ;bulunan tablo içerisinde istenilen değere gitmeyi ;sağlayan öteleme değeri toplanır. Bu toplam sonucu ;gitmek istediğimiz adres değeridir. Komutun icrası ;ile adreste yer alan bu bilgi akümülatore aktarılmış olur.
İNDEKS ADRESLEME LOOK-UP TABLE
İNDEKS ADRESLEME MOV A,SAYICI MOV DPTR,# DISPLAY_TABLOSU ;look up table'ın başlangıç adresi DPTR'ye atanır MOVC A,@A+DPTR ;A ya tablonun istenen değeri atanır. DISPLAY_TABLOSU: ;Hanede görünecek olanı seçen tablodur DB 00000000B ;0 Görünür DB 00000001B ;1 Görünür DB 00000010B ;2 Görünür DB 00000011B ;3 Görünür DB 00000100B ;4 Görünür DB 00000101B ;5 Görünür DB 00000110B ;6 Görünür DB 00000111B ;7 Görünür DB 00001000B ;8 Görünür DB 00001001B ;9 Görünür Bu değerler sırasıyla 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F değerlerinin 7-segment LED display için düzenlenmiş halidir.
PROGRAMLAMA DİREKTİFLER EQU SAYAC EQU 45H ARTIM EQU 32 … … MOV A,SAYAC
PROGRAMLAMA DİREKTİFLER DATA SON_DEGER DATA 45H
PROGRAMLAMA DİREKTİFLER CODE RESET CODE 00H TIMERO_KESMESI CODE 0BH
PROGRAMLAMA DİREKTİFLER ORG ORG 001BH ; Timer1 kesme adresi INC 32H ; 32H ‘ın içeriğini bir arttır MOV A,32H ; 32H akümülatöre yaz RETI ; kesmeden geri dön
PROGRAMLAMA DİREKTİFLER INCLUDE #INCLUDE 7_SEGMENT.ASM
PROGRAMLAMA DİREKTİFLER DB TEK_SAYILAR: DB 1,2,3,5,7,11,13,17,19 YAZI: DB ‘LCD EKRANINA YAZ’
PROGRAMLAMA DİREKTİFLER DW TABLO: DW 2004,’G’, 1900,45,’F’
PROGRAMLAMA DİREKTİFLER END ANA_PROGRAM: … … END
KOMUT SETİ 8051 Komut Seti anlatımında kullanılan operandlar ve anlamları