BAB IV TEKNIK PEMROGRAMAN erna kumalasari nurnawati BAB IV Teknik Pemrograman Proses Mikrokontroller membaca instruksi di memory adalah membaca kombinasi biner “0” dan “1” yang telah dirubah oleh assembler dari source program dalam bentuk kode-kode mnemonic. erna kumalasari nurnawati 2 Penyusunan source program adalah merupakan konversi dari permasalahan yang akan diselesaikan dengan mikrokontroller. Dimulai dari merubah permasalahan ke bentuk flowchart atau algorithma program, kemudian baru ditulis program assembler nya. erna kumalasari nurnawati 3 Untuk itu perlu memahami tata cara penulisan program dalam aturan yang baku, berikut diberikan contoh penulisan source program dengan struktur yang baku. Selanjutnya dari source program tersebut dirubah menjadi kode mesin (kombinasi “0” dan “1” ) erna kumalasari nurnawati 4 STATUS MULAI: L1: DELAY: L11: L2: EQU ORG MOV MOV CALL MOV CALL SJMP END MOV MOV NOP DJNZ DJNZ RET 20H.0 ;Bit 0 dari lokasi 20H 0H ;Mulai alamat 0000H SP,#60H ;Set Stack Pointer pd 60H P1,#0AAH ; 1010 1010 B DELAY P1,#55H ; 0101 0101 B DELAY L1 R0,#100 R1,#10 R1,L2 R0,L11 erna kumalasari nurnawati 5 Label Opcode Operand Comment Jika diamati, pola penyusunan program dalam bahasa assembly adalah terdiri paling tidak 4 (empat) kolom, yaitu: Label, Operation Code, Operand dan Comment (komentar) erna kumalasari nurnawati 6 Hasil dari Source Program tersebut adalah kode-kode Biner yang selanjutnya diberikan ke memory atau langsung ke mikrokontroler yang menggunakan Internal ROM 0000 0003 0006 0009 000C 000F 0011 dst 75 75 12 75 12 80 78 81 60 90 AA 00 11 90 55 00 11 F2 64 MULAI: L1: DELAY: erna kumalasari nurnawati MOV MOV LCALL MOV LCALL SJMP MOV SP,#$60 P1,#$AA DELAY P1,#$55 DELAY L1 R0,#$64 7 Assembler Directive ( Pengarah Assembler ) Seperti telah disebutkan sebelumnya, pengarah assembler merupakan mnemonic yang akan diproses oleh Program Assembler. Berikut adalah pengarah assembler yang biasa digunakan untuk program – program assembler. erna kumalasari nurnawati 8 Kontrol Kondisi Assembler ORG ( Origin ) ORG digunakan untuk menunjukkan lokasi memori tempat instruksi atau perintah yang ada di bawahnya disimpan. Bentuk dari ORG adalah : ORG ekspresi erna kumalasari nurnawati 9 Contoh : ORG MOV 2000H DPTR, #4000H Di sini, perintah MOV DPTR, #4000H yang berada di bawah ORG 2000H akan terletak di alamat 2000H. erna kumalasari nurnawati 10 END END biasanya diletakkan di akhir baris dari file program sumber assembly sebagai tanda akhir pernyataan ( statement ) bagi program assembler dalam melakukan proses assembly. Bentuk dari END adalah : ........ ........ ........ END erna kumalasari nurnawati 11 USING Bentuk dari USING adalah : USING Ekspresi Pengarah assembler ini digunakan oleh program assembler ( ASM51 ) untuk menentukan register bank yang aktif sehingga lambang – lambang yang didefinisikan terlebih dahulu oleh program assembler, seperti AR0 hingga AR7 dapat menunjuk sesuai dengan alamat yang ditentukan oleh register bank yang aktif erna kumalasari nurnawati 12 Contoh 1. Using Push 3 AR7 Perintah Push AR7 yang diawali dengan using 3 menunjukkan bahwa R7 yang terletak di Register Bank 3, yaitu 1FH sehingga setelah dilakukan proses assembly, perintah tersebut akan menghasilkan kode operasi yang sama dengan Push 1FH yaitu C0 1F. erna kumalasari nurnawati 13 Contoh 2. Using Push 0 AR7 Perintah Push AR7 yang diawali dengan using 0 menunjukkan bahwa R7 yang terletak di Register Bank 0, yaitu 07H sehingga setelah dilakukan proses assembly, perintah tersebut akan menghasilkan kode operasi yang sama dengan Push 07H yaitu C0 07 erna kumalasari nurnawati 14 Pengarah assembler ini hanya berfungsi bagi program assembler untuk menentukan bank yang aktif saja dan tidak mengubah nilai bit – bit RS0 dan RS1 di Register PSW dari MCS-51 sehingga perlu ditambahkan perintah-perintah yang mengatur nilai RS0 dan RS1 terlebih dahulu. Dengan demikian, mikrokontroler juga mengenai register bank yang aktif saat itu. erna kumalasari nurnawati 15 Contoh 3. Using Push Using Mov Push Setb Setb Mov 0 AR7 3 R7,#05 AR7 RS1 RS0 R7,#00 erna kumalasari nurnawati 16 Definisi Lambang EQU ( Equate ) EQU digunakan untuk mendefinisikan sebuah simbol atau lambang assembler secara bebas. Contoh : Bilangan EQU Mov 50H A,#Bilangan Pada perintah di atas, akumulator diisi dengan konstanta “bilangan”. Konstanta ini telah didefinisikan sebelumnya dengan nilai 50H dengan menggunakan assembler directive EQU. erna kumalasari nurnawati 17 SET Sama dengan pengarah EQU, pengarah SET digunakan untuk mendefinisikan lambang assembler secara bebas. Perbedaan dengan pengarah EQU adalah pengarah ini dapat didefinisi ulang seperti pada erna kumalasari nurnawati 18 Contoh berikut: POINTER SETR0 ; Lambang pointer didefinisikan ; sama dengan R0 POINTER SETR1 ; Lambang pointer kembali ; didefinisikan sebagai R1 erna kumalasari nurnawati 19 BIT Pengarah Bit digunakan untuk mendefinisikan suatu lambang yang menunjuk ke suatu lokasi bit pada memori yang dapat dialamati secara pengamatan bit. Contoh : Flag Bit 0 ; Lambang flag menunjukkan ke ; lokasi 0 secara pengamatan bit erna kumalasari nurnawati 20 CODE Pengarah CODE digunakan untuk menyatakan alamat yang dilokasikan dalam area memori program dengan sebuah lambang. Nilai dari alamat tersebut tidak boleh melebihi 65535 atau FFFFH. Contoh. RESET EXTIO CODE CODE 0 RESET + (1024 / 16) erna kumalasari nurnawati 21 DATA Pengarah DATA digunakan untuk menyatakan secara langsung alamat pada memori internal dengan sebuah lambang. Alamat yang di mulai dari 00 hingga 7FH menunjukkan RAM Internal dan alamat 80H hingga FFH menunjukkan alamat dari Register Fungsi Khusus. Contoh : BUFFER DATA 32H ; Lambang buffer menunjukkan ; alamat 32H erna kumalasari nurnawati 22 IDATA Pengarah IDATA digunakan untuk menyatakan alamat RAM Internal dalam sebuah lambang dengan pengalamatan tidak langsung. Alamat tersebut dapat dimulai dari 00 hingga FFH. Contoh : BUFFER IDATA BUFFER2 IDATA erna kumalasari nurnawati 30H BUFFER+1 23 XDATA XDATA digunakan menyatakan alamat yang ada pada memori eksternal dalam sebuah lambang. Nilai dari alamat ini tidak boleh melebihi 65535 atau FFFFH. Contoh : SektorEksternal1 SektorEksternal2 XDATA XDATA 2000H SektorEksternal1+2000H erna kumalasari nurnawati 24