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