8051 MİKROKONTROLÖR AİLESİ

Download Report

Transcript 8051 MİKROKONTROLÖR AİLESİ

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
MOV 60H,A
PORT1 EQU 90H
MOV PORT1,55H
;70H adresinde tutulan sayıyı register A’ya yaz
;Akümülatördeki veriyi 60H adresine yaz.
;Assembler bu tanımdan sonra PORT1 gördüğü yere 90H değerini
;yerleştirir
;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
MOV R4,B
;ikinci bank seçilir.
;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
DB 10011100B
DB 31
DB 013H
;Bu bölgeye başında DB komutu ile gereken veriler gelir
;bu veriler direkt olarak sayılardır.Başka türlü
;adreslenemeyeceğinden diğer adreslemelerdeki gibi
;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
MOVC A,@A+DPTR
;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.
;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:
DB 00000000B
DB 00000001B
DB 00000010B
DB 00000011B
DB 00000100B
DB 00000101B
DB 00000110B
DB 00000111B
DB 00001000B
DB 00001001B
;Hanede görünecek olanı seçen tablodur
;0 Görünür
;1 Görünür
;2 Görünür
;3 Görünür
;4 Görünür
;5 Görünür
;6 Görünür
;7 Görünür
;8 Görünür
;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
INC 32H
MOV A,32H
RETI
; Timer1 kesme adresi
; 32H ‘ın içeriğini bir arttır
; 32H akümülatöre yaz
; 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ı