minggu ke – 3 teori dan praktek transfer data

advertisement
PRATIKUM MICROCONTROLLER
MINGGU KE-3
TRANSFER DATA
Tujuan
Mahasiswa dapat mengetahui
instruksi transfer data serta membuat
program dasar berbasis microcontroller AT 89S51
Materi
1. Transfer Data register ke register
2. Transfer Data register ke memori
3. Transfer data memori ke register
4. Transfer Data register ke port output
5. Transfer data dari memori ke port output
6. Transfer data dari port input ke register
7. Transfer data dari port input ke memori
Dasar Teori
Uraian Materi
1. Teori Dasar

Immediate Addressing Mode

Register Addressing mode

Direct Addressing Mode

Indirect Addressing Mode
Register
Assembler telah menyediakan beberapa simbol untuk menunjukkan
register tertentu sebagai operand.
A
=
Akumulator
R0.. R7
=
Register Serbaguna
DPTR
PC
=
=
Data Pointer , register 16 bit
Program Counter , Register 16 bit yang berisi alamat
1
Instruksi berikutnya yang akan dijalankan.
C
=
Carry Flag
AB
=
Akumulator / Register B. Pasangan register untuk
perkalian dan pembagian.
Special function register
Data langsung dipindahkan ke register
Contoh :
2
MOV A,#30h
; Copy the immediate data 30h to A
register
MOV R0,#00110000B
; Copy the immediate data 30h to R0
register
MOV DPTR,#48
; Copy the immediate data 30h to DPTR
register
Catatan :
30
hexa = 00110000 biner = 48
desimal
3
Instruksi transfer data
1. Instruksi transfer data
1.1 MOV ( Immediate data to Indirect Address )
Instruksi ini akan memindahkan data 8 bit secara langsung kelokasi
memori yang ditunjukan oleh isi register r ( R0 dan R1 )
Format : MOV Rr,#data
Contoh :
MOV R1,#01H
MOV ( MOVE acumulator to Indirect address )
Instruksi ini akan memindahkan isi akumulator kelokasi memori yang
ditunjukan oleh isi register r
Format : MOV Rr, A
Contoh :
MOV R0,A
4
1.3 MOV ( Move memory to Indirect Address )
Instruksi ini akan memindahkan isi suatu alamat data kelokasi memori
yang ditunjukan oleh isi register r
Format : MOV Rr, alamat data
Contoh :
MOV R1,77H
1.4 MOV ( Move Immediate data to Accumulator )
Instruksi ini akan memindahkan data 8 bit secara langsung ke acumulator
Format : MOV A,#data
Contoh :
MOV A,#02H
1.5 MOV ( Indirect Address to acumulator )
Instruksi ini akan memindahkan isi data memori yang lokasinya ditunjukan
oleh register r ke akumulator
Format : MOV A, @ Rr
Contoh :
MOV A, @R0
1.6 MOV ( Move register to Accumulator )
Instruksi ini akan memindahkan isi register r ke akumulator
Format : MOV A , Rr
Contoh :
MOV A, R7
1.7 MOV ( Move memory to Accumulator )
Instruksi ini akan memindahkan isi memory data pada suatu alamat ke
akumulator
Format : MOV A , alamat data
Contoh :
MOV A, P3 ( Pindahkan isi port ke akumulator )
1.8 MOV ( Move bit to cary flag )
Instruksi ini akan memindahkan isi suatu alamat bit ke carry flag
5
Format : MOV C, Alamat bit
Contoh :
MOV C,P1.0
1.9 MOV ( Move Immediate data to data Pointer )
Instruksi ini akan memindahkan data 16 bit
secara langsung kedata
pointer ( DPTR )
Format : MOV DPTR, #data
Contoh :
MOV DPTR,# 0B19 H
1.10 MOV ( Move Memory to Memory )
Instruksi ini akan memindahkan isi alamat data sumber ( alamat 2 ) ke
alamat data tujuan ( alamat 1 )
Format : MOV alamat1,alamat 2
Contoh :
MOV 13 H, 12 H
1.11 MOVC ( Move code memory offset from data pointer to accumulator )
Instruksi ini akan menjumlahkan isi data pointer dengan isi akumulator.
Hasil penjumlahan merupakan alamat kode memori dan isinya akan
dipindahkan ke akumulator
Format : MOVC A , @A+DPTR
Contoh :
MOVC A , @A+DPTR
1.12 MOVC ( Move code memory offset from Program counter to
accumulator )
Instruksi ini akan memindahkan isi pencacah program yang teah dinaikan
dengan isi akumulator . Hasil penjumlahan tersebut digunakan sebagai
alamat kode memori dan isinya dipindahkan ke akumulator.
Format : MOVC A , @A+ PC
Contoh : MOVC A , @A+ PC
6
1.13 MOVX ( Move Acumulator to external memory addresed by data
Pointer
Instruksi ini akan memindahkan isi acumulator ke memori data eksternal
( Off chip ) yang alamatnya ditunjukan oleh isi data pointer .
Format : MOVX @DPTR , A
Contoh : MOVX @DPTR , A
1.14 MOVX ( Move Acumulator to external memory addresed by register )
Instruksi ini akan memindahkan isi acumulator ke memori data eksternal
yang lokasi nya ditunjukan oleh register r dan SFR P2.
P2 menampung
bye atas alamat dan register r menampung byte bawah.
Format : MOVX @ Rr , A
Contoh : MOV P2,#00 H
MOVX @R0,A
1.15 MOVX ( Move External memory Addresed by data Pointer to
Acumulator )
Instruksi ini akan memindahkan isi memori data eksternal yang lokasinya
ditunjukan oleh data pointer ke acumulator .
Format : MOVX A, @DPTR
Contoh : MOVX A, @DPTR
1.16 MOVX ( Move External memory addresed by register to Acumulator )
Instruksi ini akan memindahkan isi memori data eksternal yang lokasinya
ditunjukan oleh register r dan SFR P2 ke acumulator . P2 menampung
byte atas alamat dan register r menampung byte bawah .
Format : MOVX A, @ Rr
Contoh : MOVX P2,#55 H
MOVX A,@R1
7
Pemakaian Instruksi Transfer Data
Program-1
org 0h
mov a,#05h
mov r1,a
mov 40h,a
mov 30h,#22h
mov r2,30h
end
Penjelasan
mov a,#05h Register A diisi data 05h
mov r1,a
Data Register A dipindahkan ke register R1
mov 40h,a
Data Register A dipindahkan ke lokasi memori 40 H
mov 30h,#22h
mov r2,30h
Lokasi memori 30h, diisi data 22H
Data lokasi memori 30h dipindahkan ke register R2
Program-2
org 0h
mov a,#11h
mov r1,#22h
mov @r1,a
end
Penjelasan
Mov@r1,a
Memindahkan data register A kelokasi memori yang
ditunjukkan oleh
data pada register R1, sehingga data
alamat 22h akan berisi data 11h
Program-3
org 0h
mov 33h,#55h
8
mov r1,#33h
mov a,@r1
end
penjelasan
memori 33h diisi data 55h
Register R1 disi data 33h
Data dilokasi memori yang ditunjukan oleh R1 ( 33h)
dipindahkan ke register A=55 h
9
Job Pratikum
1. Tulislah program berikut
2. Oparsikan program
3. Catat perubahan data pada register untuk masing- masing instruksi
4. Ganti data yang terdapat di register atau memori, kemudian
operasikan program
5. Buat kesimpulan
1. Transfer Data register ke register
org 0h
mov a,#23h
mov r2,a
mov r3,#55h
mov a,r3
end
2. Transfer Data register ke memori
org 0h
mov a,#23h
mov r4,#33h
mov 23h,a
Mov 24H,R4
end
3. Transfer data memori ke register
org 0h
mov 45h,#22h
mov 46h,#44h
mov a,45h
mov r5,46h
end
10
4. Transfer Data register ke port output
org 0h
mov a,#66h
Mov R6,#77h
mov p1,a
mov p2,r6
end
5. Transfer data dari memori ke port output
org 0h
mov 36h,#88h
mov 37h,#99h
mov p1,36h
mov p2,37h
end
6. Transfer data dari port input ke register
org 0h
mov a,p1
mov r1,p2
end
7. Transfer data dari port input ke memori
org 0h
mov 33h,p1
mov 55h,p2
end
8. Transfer data dari register ke memori secara tidak langsung
org 0h
mov a,#47h
mov r6,#24h
mov r1,#25h
11
mov r0,#26h
mov @r1,a
mov a,r6
mov @r0,a
end
9. Transfer data dari register ke memori secara tidak langsung
org 0h
mov 62h,#23h
mov 63h,#24h
MOv r0,#62h
mov r1,#63h
mov a,@r0
mov r3,a
mov a,@r1
end
Tugas Pratikum

Pindahkan data 34h ke R5, R6 dan R7 menggunakan immediate
addressing mode.

Pindahkan data 35h ke register A kemudian copy data tersebut ke
tiap register R5, R6 dan R7 menggunakan register addressing
mode.

Pindahkan data 36h ke register R5, kemudian copy data tersebut
ke tiap register R6 dan R7 menggunakan direct addressing mode.

Buatlah program untuk memindahkan data dari Reg A ke lokasi
memori 20-H sampai 23 H

Buatlah program untuk memindahkan data dari lokasi memori 25
H s/d 29h, ke register r2 sampai r6
12
Jawab Tugas
Program
Org 0h
Mov a,#05h
Mov 20h,a
Mov 21h,a
Mov 22h,a
Mov 23h,a
End
Program2
Mov r2,25h
Mov r3,26h
Mov r4,27h
Mov r5,28h
Mov r6,29h
end
13
14
Download