BAB IV
description
Transcript of BAB IV
erna kumalasari nurnawatierna kumalasari nurnawati
BAB IVBAB IV
TEKNIK PEMROGRAMANTEKNIK PEMROGRAMAN
erna kumalasari nurnawatierna kumalasari nurnawati 2
BAB IVBAB IVTeknik PemrogramanTeknik Pemrograman
Proses Mikrokontroller membaca instruksi Proses Mikrokontroller membaca instruksi di memory adalah membaca kombinasi di memory adalah membaca kombinasi biner “0” dan “1” yang telah dirubah oleh biner “0” dan “1” yang telah dirubah oleh assembler dari source program dalam assembler dari source program dalam bentuk kode-kode mnemonic. bentuk kode-kode mnemonic.
erna kumalasari nurnawatierna kumalasari nurnawati 3
Penyusunan source program adalah Penyusunan source program adalah merupakan konversi dari merupakan konversi dari permasalahan yang akan permasalahan yang akan diselesaikan dengan mikrokontroller. diselesaikan dengan mikrokontroller. Dimulai dari merubah permasalahan Dimulai dari merubah permasalahan ke bentuk flowchart atau algorithma ke bentuk flowchart atau algorithma program, kemudian baru ditulis program, kemudian baru ditulis program assembler nya. program assembler nya.
erna kumalasari nurnawatierna kumalasari nurnawati 4
Untuk itu perlu memahami tata Untuk itu perlu memahami tata cara penulisan program dalam cara penulisan program dalam aturan yang baku, berikut aturan yang baku, berikut diberikan contoh penulisan diberikan contoh penulisan source program dengan source program dengan struktur yang baku. struktur yang baku. Selanjutnya dari source Selanjutnya dari source program tersebut dirubah program tersebut dirubah menjadi kode mesin (kombinasi menjadi kode mesin (kombinasi “0” dan “1” )“0” dan “1” )
erna kumalasari nurnawatierna kumalasari nurnawati 5
STATUSSTATUS EQUEQU 20H.020H.0 ; ;Bit 0 dari lokasi 20HBit 0 dari lokasi 20H
ORGORG 0H0H ; ;Mulai alamat 0000HMulai alamat 0000H
MULAI:MULAI: MOVMOV SP,#60H ;SP,#60H ;Set Stack Pointer pd 60HSet Stack Pointer pd 60H
L1:L1: MOVMOV P1,#0AAH ; 1010 1010 BP1,#0AAH ; 1010 1010 BCALL CALL DELAYDELAYMOVMOV P1,#55H ; 0101 0101 BP1,#55H ; 0101 0101 BCALLCALL DELAYDELAYSJMPSJMP L1L1
ENDENDDELAY:DELAY: MOVMOV R0,#100R0,#100L11:L11: MOVMOV R1,#10R1,#10L2:L2: NOPNOP
DJNZDJNZ R1,L2R1,L2DJNZDJNZ R0,L11R0,L11RETRET
erna kumalasari nurnawatierna kumalasari nurnawati 6
Jika diamati, pola Jika diamati, pola penyusunan program dalam penyusunan program dalam bahasa assembly adalah bahasa assembly adalah terdiri paling tidak 4 terdiri paling tidak 4 (empat) kolom, (empat) kolom, yaitu:yaitu:
Label, Operation Code, Label, Operation Code, Operand Operand dan Comment (komentar) dan Comment (komentar)
LabelLabel OpcodeOpcode OperandOperand CommentComment
erna kumalasari nurnawatierna kumalasari nurnawati 7
Hasil dari Source Program tersebut adalah Hasil dari Source Program tersebut adalah kode-kode Biner yang selanjutnya diberikan kode-kode Biner yang selanjutnya diberikan ke memory atau langsung ke ke memory atau langsung ke mikrokontroler yang menggunakan Internal mikrokontroler yang menggunakan Internal ROMROM
00000000 75 81 60 75 81 60 MULAI: MULAI: MOVMOV SP,#$60 SP,#$6000030003 75 90 AA75 90 AA L1:L1: MOVMOV P1,#$AA P1,#$AA00060006 12 0012 00 11 11 LCALL DELAYLCALL DELAY00090009 75 90 5575 90 55 MOVMOV P1,#$55 P1,#$55000C000C 12 00 1112 00 11 LCALL DELAYLCALL DELAY000F000F 80 F280 F2 SJMPSJMP L1 L100110011 78 6478 64 DELAY:DELAY: MOVMOV R0,#$64 R0,#$64
dstdst
erna kumalasari nurnawatierna kumalasari nurnawati 8
Assembler DirectiveAssembler Directive( Pengarah Assembler )( Pengarah Assembler )
Seperti telah disebutkan sebelumnya, Seperti telah disebutkan sebelumnya, pengarah assembler merupakan pengarah assembler merupakan mnemonic yang akan diproses oleh mnemonic yang akan diproses oleh Program Assembler. Berikut adalah Program Assembler. Berikut adalah pengarah assembler yang biasa pengarah assembler yang biasa digunakan untuk program – program digunakan untuk program – program assembler.assembler.
erna kumalasari nurnawatierna kumalasari nurnawati 9
Kontrol Kondisi AssemblerKontrol Kondisi Assembler
ORG ( Origin )ORG ( Origin ) ORG digunakan untuk menunjukkan ORG digunakan untuk menunjukkan
lokasi memori tempat instruksi atau lokasi memori tempat instruksi atau perintah yang ada di bawahnya disimpan. perintah yang ada di bawahnya disimpan.
Bentuk dari ORG adalah :Bentuk dari ORG adalah :
ORGORG ekspresiekspresi
erna kumalasari nurnawatierna kumalasari nurnawati 10
Contoh :Contoh :
ORGORG 2000H2000H
MOVMOV DPTR, #4000HDPTR, #4000H
Di sini, perintah MOV DPTR, #4000H yang Di sini, perintah MOV DPTR, #4000H yang berada di bawah ORG 2000H akan berada di bawah ORG 2000H akan terletak di alamat 2000H.terletak di alamat 2000H.
erna kumalasari nurnawatierna kumalasari nurnawati 11
ENDEND
END biasanya diletakkan di akhir baris dari END biasanya diletakkan di akhir baris dari file program sumber assembly sebagai file program sumber assembly sebagai tanda akhir pernyataan ( tanda akhir pernyataan ( statementstatement ) bagi ) bagi program assembler dalam melakukan program assembler dalam melakukan proses assembly. proses assembly.
Bentuk dari END adalah :Bentuk dari END adalah :................
................ ................
ENDEND
erna kumalasari nurnawatierna kumalasari nurnawati 12
USINGUSING
Bentuk dari USING adalah :Bentuk dari USING adalah :USINGUSING EkspresiEkspresi
Pengarah assembler ini digunakan oleh Pengarah assembler ini digunakan oleh program assembler ( ASM51 ) untuk program assembler ( ASM51 ) untuk menentukan register bank yang aktif menentukan register bank yang aktif sehingga lambang – lambang yang sehingga lambang – lambang yang didefinisikan terlebih dahulu oleh program didefinisikan terlebih dahulu oleh program assembler, seperti AR0 hingga AR7 dapat assembler, seperti AR0 hingga AR7 dapat menunjuk sesuai dengan alamat yang menunjuk sesuai dengan alamat yang ditentukan oleh register bank yang aktifditentukan oleh register bank yang aktif
erna kumalasari nurnawatierna kumalasari nurnawati 13
Contoh 1. Contoh 1.
UsingUsing 33
PushPush AR7AR7
Perintah Push AR7 yang diawali dengan Perintah Push AR7 yang diawali dengan using 3 menunjukkan bahwa R7 yang using 3 menunjukkan bahwa R7 yang terletak di Register Bank 3, yaitu 1FH terletak di Register Bank 3, yaitu 1FH sehingga setelah dilakukan proses sehingga setelah dilakukan proses assembly, perintah tersebut akan assembly, perintah tersebut akan menghasilkan kode operasi yang sama menghasilkan kode operasi yang sama dengan Push 1FH yaitu C0 1F.dengan Push 1FH yaitu C0 1F.
erna kumalasari nurnawatierna kumalasari nurnawati 14
Contoh 2. Contoh 2.
UsingUsing 00
PushPush AR7AR7
Perintah Push AR7 yang diawali dengan Perintah Push AR7 yang diawali dengan using 0 menunjukkan bahwa R7 yang using 0 menunjukkan bahwa R7 yang terletak di Register Bank 0, yaitu 07H terletak di Register Bank 0, yaitu 07H sehingga setelah dilakukan proses sehingga setelah dilakukan proses assembly, perintah tersebut akan assembly, perintah tersebut akan menghasilkan kode operasi yang sama menghasilkan kode operasi yang sama dengan Push 07H yaitu C0 07dengan Push 07H yaitu C0 07
erna kumalasari nurnawatierna kumalasari nurnawati 15
Pengarah assembler ini hanya berfungsi Pengarah assembler ini hanya berfungsi bagi program assembler untuk bagi program assembler untuk menentukan bank yang aktif saja dan tidak menentukan bank yang aktif saja dan tidak mengubah nilai bit – bit RS0 dan RS1 di mengubah nilai bit – bit RS0 dan RS1 di Register PSW dari MCS-51 sehingga Register PSW dari MCS-51 sehingga perlu ditambahkan perintah-perintah yang perlu ditambahkan perintah-perintah yang mengatur nilai RS0 dan RS1 terlebih mengatur nilai RS0 dan RS1 terlebih dahulu. dahulu.
Dengan demikian, mikrokontroler juga Dengan demikian, mikrokontroler juga mengenai register bank yang aktif saat itu.mengenai register bank yang aktif saat itu.
erna kumalasari nurnawatierna kumalasari nurnawati 16
Contoh 3. Contoh 3.
UsingUsing 00PushPush AR7AR7UsingUsing 33MovMov R7,#05R7,#05PushPush AR7AR7SetbSetb RS1RS1SetbSetb RS0RS0MovMov R7,#00R7,#00
erna kumalasari nurnawatierna kumalasari nurnawati 17
Definisi LambangDefinisi LambangEQU ( Equate )EQU ( Equate ) EQU digunakan untuk mendefinisikan sebuah EQU digunakan untuk mendefinisikan sebuah
simbol atau lambang assembler secara bebas.simbol atau lambang assembler secara bebas.
Contoh :Contoh :Bilangan Bilangan EQU EQU 50H50H
Mov Mov A,#BilanganA,#Bilangan
Pada perintah di atas, akumulator diisi dengan Pada perintah di atas, akumulator diisi dengan konstanta “bilangan”. Konstanta ini telah konstanta “bilangan”. Konstanta ini telah didefinisikan sebelumnya dengan nilai 50H didefinisikan sebelumnya dengan nilai 50H dengan menggunakan assembler directive EQU.dengan menggunakan assembler directive EQU.
erna kumalasari nurnawatierna kumalasari nurnawati 18
SETSET
Sama dengan pengarah EQU, pengarah Sama dengan pengarah EQU, pengarah SET digunakan untuk mendefinisikan SET digunakan untuk mendefinisikan lambang assembler secara bebas. lambang assembler secara bebas. Perbedaan dengan pengarah EQU adalah Perbedaan dengan pengarah EQU adalah pengarah ini dapat didefinisi ulang seperti pengarah ini dapat didefinisi ulang seperti padapada
erna kumalasari nurnawatierna kumalasari nurnawati 19
Contoh berikut:Contoh berikut:
POINTER SETPOINTER SETR0R0
; Lambang pointer ; Lambang pointer didefinisikan didefinisikan
; sama dengan R0; sama dengan R0
POINTER SETPOINTER SETR1R1
; Lambang pointer kembali ; Lambang pointer kembali
; didefinisikan sebagai R1; didefinisikan sebagai R1
erna kumalasari nurnawatierna kumalasari nurnawati 20
BITBIT
Pengarah Bit digunakan untuk Pengarah Bit digunakan untuk mendefinisikan suatu lambang yang mendefinisikan suatu lambang yang menunjuk ke suatu lokasi bit pada memori menunjuk ke suatu lokasi bit pada memori yang dapat dialamati secara pengamatan bit.yang dapat dialamati secara pengamatan bit.
Contoh :Contoh :
Flag Flag BitBit 00
; Lambang flag menunjukkan ke ; Lambang flag menunjukkan ke
; lokasi 0 secara pengamatan bit; lokasi 0 secara pengamatan bit
erna kumalasari nurnawatierna kumalasari nurnawati 21
CODECODE
Pengarah CODE digunakan untuk Pengarah CODE digunakan untuk menyatakan alamat yang dilokasikan menyatakan alamat yang dilokasikan dalam area memori program dengan dalam area memori program dengan sebuah lambang. Nilai dari alamat sebuah lambang. Nilai dari alamat tersebut tidak boleh melebihi 65535 atau tersebut tidak boleh melebihi 65535 atau FFFFH.FFFFH.
Contoh.Contoh.
RESET RESET CODECODE 00
EXTIOEXTIO CODECODE RESET + (1024 / RESET + (1024 / 16)16)
erna kumalasari nurnawatierna kumalasari nurnawati 22
DATADATA
Pengarah DATA digunakan untuk menyatakan Pengarah DATA digunakan untuk menyatakan secara langsung alamat pada memori internal secara langsung alamat pada memori internal dengan sebuah lambang. Alamat yang di mulai dengan sebuah lambang. Alamat yang di mulai dari 00 hingga 7FH menunjukkan RAM Internal dari 00 hingga 7FH menunjukkan RAM Internal dan alamat 80H hingga FFH menunjukkan dan alamat 80H hingga FFH menunjukkan alamat dari Register Fungsi Khusus.alamat dari Register Fungsi Khusus.
Contoh :Contoh :
BUFFERBUFFER DATA 32HDATA 32H
; Lambang buffer menunjukkan ; Lambang buffer menunjukkan
; alamat 32H; alamat 32H
erna kumalasari nurnawatierna kumalasari nurnawati 23
IDATAIDATA
Pengarah IDATA digunakan untuk Pengarah IDATA digunakan untuk menyatakan alamat RAM Internal dalam menyatakan alamat RAM Internal dalam sebuah lambang dengan pengalamatan sebuah lambang dengan pengalamatan tidak langsung. Alamat tersebut dapat tidak langsung. Alamat tersebut dapat dimulai dari 00 hingga FFH.dimulai dari 00 hingga FFH.
Contoh :Contoh :
BUFFERBUFFER IDATAIDATA 30H30H
BUFFER2BUFFER2 IDATAIDATA BUFFER+1BUFFER+1
erna kumalasari nurnawatierna kumalasari nurnawati 24
XDATAXDATA
XDATA digunakan menyatakan alamat yang XDATA digunakan menyatakan alamat yang ada pada memori eksternal dalam sebuah ada pada memori eksternal dalam sebuah lambang. Nilai dari alamat ini tidak boleh lambang. Nilai dari alamat ini tidak boleh melebihi 65535 atau FFFFH.melebihi 65535 atau FFFFH.
Contoh :Contoh :
SektorEksternal1 XDATASektorEksternal1 XDATA 2000H2000H
SektorEksternal2 XDATA SektorEksternal2 XDATA SektorEksternal1+2000HSektorEksternal1+2000H