MIkROkONTROLER KELUARGA MCS-51
Jobsheet Disusun oleh : Agus Rahmat Ramdan S.Pd
1
Kompetensi Keahlian Kontrol Proses Sekolah Menengah Kejuruan Negeri 1 CIMAHI Jl. Maharmartanegara No 48 BAGIAN
1
Arsitektur Mikrokontroler dan Keluarga MCS 51
Banyak vendor dan produsen yang telah memproduksi mikrokontroler dengan berbagai jenis dan kemampuan, secara umum mikrokontroler merupakan sebuah mikrokomputer dimana didalamnya terdiri dari CPU, RAM, ROM dan Input/output (I/O). ATMEL telah memproduksi mikrokontroler AT89S51 yang termasuk keluarga MCS-51. Beberapa fitur dari mikrokontroler AT89S51 antara lain mempunyai Flash PEROM dengan kapasitas 4 kilo Byte, 32 bit programmable I/O, 2 x16 bit timer/counter, 128 x 8 RAM internal dan beberapa fitur lain. Programming (Pengisian Flas PEROM) mikrokontroler jenis ini kompatibel dengan keluarga MCS-51. Beberapa jenis mikrokontroler buatan ATMEL dengan kapasitasnya dapat dilihat dalam tabel 1.1 berikut. Tabel 1.1 Tipe IC Mikrokontroler Keluarga Atmel Mikrokontroler
Jumlah Kaki
AT89C1051 AT89C2051 AT89C4051 AT89S51 AT89C52
20 20 20 40 40
AT89S8252
40
AT89S53 AT89S55
40 40
Flash PEROM 1 kbyte 2 kbyte 3 kbyte 4 kbyte 8 kbyte 8 kbyte +2 kbyte EEPROM 12 kbyte 20 kbyte
Jumlah I/O 15 bit 15 bit 15 bit 4X8 bit 4X8 bit 4X8 bit 4X8 bit 4X8 bit
Konfigurasi hardware mikrokontroler AT89S51 di gambar 1.1 akan diperlihatkan. Dalam perancangan sebuah sistem elektronika, mikrokontroler dapat difungsikan untuk berbagai tujuan, misalnya untuk pengendali mesin mainan anak-anak, pengendali robotic, otomasi sensor untuk pengukuran suhu, cahaya, kelembaban dan sebagainya, pengendali pengukuran jarak jauh atau telemetri dan lain-lain. Efektivitas penggunaan mikrokontroler akan sangat dirasakan apabila anda merancang system elektronika yang berbasis digital, fungsi-fungsi digital mayoritas dapat diakomodasi oleh komponen ini, misalnya saja fungsi counter, timer, Flip-flop (memori), AND, OR, dan lain-lain. Mikrokontroler merupakan komponen yang dapat dikembangkan penggunaan dan fungsinya dimana sangat tergantung pada kemampuan dan penguasaan mind programmer-nya atas kapasitas dan kapabilitas komponen 2
dan algoritma bahasa pemrograman yang dapat digunakan untuk pemrograman mikrokontroler. Tentang bahasa pemrograman dan set instruksi MCS 51 akan dibahas pada Bagian 2 Modul ini.
Gambar. 1.1 Blok Diagram seri AT89S51
3
1.1 Organisasi Memori Struktur Memori dalam konfigurasi AT89S51 terbagi menjadi memori program (hanya baca) dan memori data (baca/tulis). Pembagian alamatnya seperti gambar 1.2 berikut ini.
Gambar. 1.2 Struktur Memori AT89S51
Memori data atau memori program dalam mikrokontroler dapat juga diakses dari memori eksternal dengan memfungsikan strobe (tanda) PSEN (Program Store Enable), RD (read), dan WR (write). MemoriAT Program, Flash on chipAT89S51 sebesar 4 KB yang alamatnya selalu 16 bit. Flash PEROM (Programmable and Erasable Read only Memory) merupakan ROM yang dapat ditulis ulang atau dihapus menggunakan sebuah perangkat programmer. Program yang ada pada flash PEROM akan dijalankan pada saat system di-reset, untuk keamanan program yang ada pada Flash PEROM AT89S51 mempunyai fasilitas lock bit yang terdiri dari: Lock bit 1, instruksi MOVC yang diseksekusi dari memori eksternal untuk membaca isi Flash tidak dapat dilakukan. Lock bit 2, sama dengan lock bit 1, tetapi isi dari flash PEROM tidak dapat diverivikasi oleh AT89S51 Programmer. Lock bit 3, sama dengan lock bit 2, tetapi akses ke memori eksternal tidak dapat dilakukan. Memori Data, RAM (Random Access Memory) internal pada AT89S51 terdiri atas : Register Banks (bank register) AT89S51 mempunyai delapan buah register yaitu R0 sampai dengan R7, kedelapan register ini selalu terletak pada alamat 00H hingga 07H pada setiap kali system direset. Bit Addressable RAM
4
RAM pada alamat 20H hingga 2FH dapat diakses secara pengalamatan bit (per bit) sehingga hanya dengan sebuah instruksi saja setiap bit dalam area ini dapat di set, clear, AND dan OR. RAM Keperluan Umum RAM keperluan umum dimulai dari alamat 30H hingga 7FH dan dapat diakses dengan pengalamatan langsung maupun tidak langsung. Pengalamatan langsung dilakukan ketika salah satu operand dalam instruksi merupakan bilangan yang menunjukkan lokasi yang dialamati. 1.2 Special Function Registers (SFR) Register Fungsi Khusus (SFR) pada mikrokontroler AT89S51 terlihat dalam tabel 1.2 berikut ini. Tidak semua alamat pada SFR ini digunakan tetapi terdapat alamatalamat yang tidak dipergunakan tidak diimplementasikan dalam chip. SFR pada AT89S51 terdapat pada alamat antara 80H sampai FFH, beberapa dari register-hregister ini juga dapat dialamati per bit sehingga dapat dioperasikan seperti yang ada pada RAM yang lokasinya dapat dialamati dengan pengalamatan bit. Berikut ini SFR –SFR ini akan dijelaskan sekilas. Akumulator ACC atau akumulator yang menempati alamat E0H digunakan sebagai register untuk mengolah data pada operasi aritmatika dan logika dan menyimpanannya secara sementara, dalam program, instruksi mengacunya sebagai A (bukan ACC). Tabel 2.1 Special Functions Registers AT89S51 128 bytes F8 F0 E8 E0 D8 D0 C8 C0 B8 B0 A8 A0 98 90 88 80
B ACC PSW (TCON) IP P3 IE P2 SCON P1 TCON P0
(T2MOD)
(RCAP2L)
(RCAP2H)
(TL2)
(TH2)
TL0 DPL
TL1 DPH
TH0
TH1
SBUF TMOD SP
PCON
FF F7 EF E7 DF D7 CF C7 BF B7 AF A7 9F 97 8F 87
5
Register B Register B (Lokasi F0H) dapat digunakan seperti register A pada operasi perkalian dan pembagian, untuk instruksi lain dapat diperlakukan sebagai register scratch pad (“papan corat-coret”) lainnya.
Program Status Word (PSW) Register PSW (lokasi D0H) mengandung informasi status program, dalam PSW status yang tersimpan meliputi: carry bit, the auxiliary carry untuk operasi BCD), dua bit pemilih bank register, overflow flag, sebuah bit paritas dan dua flag status yang bias didefinisikan sendiri (user definable).
Gambar 1.3 Program Status Word Stack Pointer Register SP ini lokasinya 81H merupakan register dengan panjang 8 bit, digunakan dalam proses simpan dan ambil ke stack. Nilainya akan dinaikkan sebelum data disimpan menggunakan instruksi PUSH dan CALL. Data Pointer Data Pointer atau DPTR mengandung DPTR untuk byte tinggi (DPH) dan byte rendah (DPL) yang masing-masing berada dilokasi 83H dan 82H, bersama-sama membentuk register yang mampu menyimpan alamat 16 bit. Dapat dimanipulasi sebagai register 16 bit atau sebagai dua register 8 bit terpisah. Port 0, Port 1, Port 2 dan Port 3 P0, P1,P2 dan P3 masing-masing pada lokasi 80H, 90H, A0H, dan B0H merupakan pengunci-pengunci (latches), yang digunakan untuk menyimpan data yang akan dibaca atau ditulis dari/ke port, untuk masing-masing Port 0, Port 1, Port2 dan Port 3. Serial Data Buffer SBUF atau serial data buffer (lokasi 99H) sebenarnya terdiri dari dua register yang terpisah yaitu penyangga pengirim (transmit buffer) dan penyanga penerima (receive buffer). Pada saat data disalin ke SBUF, maka data
6
sesungguhnya dikirim ke penyangga pengirim sekaligus mengawali transmisi data serial. Sedangkan pada saat data disalin dari SBUF, maka sebenarnya data tersebut berasal dari penyangga penerima. Timer Register Pasangan register (TH0, TL0) dilokasi 8CH dan 8AH, (TH1 dan TL1) dilokasi 8DH dan 8BH serta (TH2, TL2) dilokasi CDH dan CCH merupakan registerregister pencacah 16 bit untuk masing-masing Timer 0, Timer 1 dan Timer 2. Control Register Register register IP, IE, TMOD, TCON, T2CON, T2MOD, SCON dan PCON berisi kontrol dan status untuk sistem interupsi, Pencacah/Pewaktu dan port serial, akan dijelaskan pada pembahasan selanjutnya. BAGIAN
2
7
Pemrograman Assembly MCS51 dan Instruction Set 2.1 Teknik Merancang Program Kriteria program yang baik adalah selain program dapat berjalan dengan baik, juga harus dapat ditelusuri untuk mempermudah pengembangan. Dalam prakteknya, pembuatan program biasanya diawali dengan membuat flowchart atau diagram alir, kemudian pseudo code dalam bahasa yang lebih dimengerti (misalnya pascal atau C) dan bahasa assembler (bahasa mesin). Diagram alir digunakan untuk mengetahui terlebih dahulu apa yang harus dikerjakan sebelum mulai membuat program. Contoh diagram alir pada gambar 2.1 berikut.
Gambar 2.1 Diagram alir Pseudo Code dari diagram alir diatas seperti berikut ini : ProsesX; If Hasil = X Then Begin ProsesX End Else Begin ProsesY End; Struktur rancangan program biasanya terdiri dari: Statement(pernyataan), menunjukkan dasar mekanisme dari “melakukan sesuatu” , seperti pemberian nilai pada variable atau memanggil sub rutin Contoh : Mov A,#00H ;memberi nilai pada akumulator Acall serOut ;memanggil sub ruti SerOut Loops (Putaran), struktur putaran dilakukan untuk melakukan sebuah operasi yang dilakukan berulang-ulang. Berbagai macam struktur putaran biasanya dibentuk oleh While/Do atau Repeat/Until.
8
Contoh: Psuedo Code dari Flowchart disamping sebagai berikut: [jumlah = 0] While [panjang>0] do begin [jumlah = jumlah +@pointer] [increment pointer] Decrement panjang]
Gambar 2.2 Contoh Flowchart While/Do
Program Assemmbly: Jumlah: Clr A Loop: Cjne R7,#0, Pernyataan Ajmp Keluar Pernyataan: Add A,”R0 Inc R0 Dec R7 Ajmp Loop Keluar: Ret
Choose (Pilihan), dua buah pernyataan seringkali digunakan dalam struktur ini adalah If/Then/Else dan Case/Of. 2.2 Pemrograman Assembly Penulisan program Assembly terdiri dari beberapa bagian, berikut ini satu contoh penulisan program sumber Assembly IsiMemori: Label
Movx
Mnemonic
@DPTR,A Operand1
;Isi Akumulator ke alamat yang ditunjuk DPTR
Operand2
Komentar
Pembuatan program assembly dapat dilakukan dengan menggunakan software teks editor seperti Notepad, Editor DOS, Crimson Editor atau sejenisnya. Kumpulan baris-baris perintah kemudian disimpan (di-save) dengan ekstension “ .ASM”. Penjelasan dari bagian-bagian program Assembly diatas seperti berikut ini:
Label Label sangat berguna untuk memberi nama pada alamat-alamat yang dituju, pembuat program tidak harus mengetahui nilai alamat yang akan dituju
9
cukup menunjuk label maka rutin atau baris perintah (instruksi) sudah dapat dilaksanakan. Terdapat beberapa ketentuan dalam pembuatan label yaitu : Harus diawali dengan huruf Tidak diperbolehkan terdapat label yang sama dalam satu program assembly Maksimal 16 karakter Tidak diperbolehkan adanya karakter spasi dalam penulisan label. Mnemonic Mnemonic atau operation code (opcode) adalah kode-kode yang akan dikerjakan oleh program assembler yang ada pada computer maupun mikrokontroler. Pada mikrokontroler instruksi yang akan dikerjakan tergantung dari jenis mikrokontroler yang digunakan. Sedang Asembler directive sangat tergantung pada program assembler yang digunakan. Operand Operand merupakan pelengkap dari mnemonic, operand yang diperlukan oleh sebuah mnemonic bisa lebih dari satu, atau tidak memerlukan operand sama sekali. Komentar Komentar tidak mutlak diperlukan dalam sebuah program, tetapi seringkali komentar diperlukan untuk menjelaskan proses-proses kerja dari program atau catatan-catatan tertentu pada bagian-bagian program. 2.3 Ekspresi Assembler Basis Bilangan, dalam pembuatan program operand dapat diekspresikan dalam berbagai bentuk, mikroprosesor Intel misalnya menggunakan akhiran “B” untuk ekspresi bilangan biner, “Q” untuk octal, “H” untuk heksa dan “D” untuk decimal. Misalnya 10 Desimal dapat diekspresikan dengan menuliskan : 00010101B ;biner 12Q ;octal 10D atau 10 (tanpa akhiran) ;decimal 0AH ;heksa String Karakter, ekspresi string dilakukan dengan memberikan tanda „x„ diantara nilai yang diinginkan. Ekpresi ini sangat berguna untuk pembuatan program yang membutuhkan perintah dengan nilai ASCII dari suatu operand. Misalnya : Mov A,#’B’ Operator Logika, ekspresi ini diperlukan dalam penulisan program yang memerlukan operasi logika. Operator logika itu antara lain OR untuk operator logika OR AND untuk operator logika AND XOR untuk operator logika XOR
10
NOT untuk operator logika komplemen Contoh : Mov A, #39H AND OFH adalah sama dengan Mov A,#9 Mov A,#-3 adalah sama dengan Mov A,#NOT 3 Operator Khusus, operator-operator ini terdiri dari: SHR untuk menggeser ke kanan Contoh : Mov A,#00001000B SHR 1 sama dengan Mov A,#00000100B SHL untuk menggeser ke kiri Contoh: Mov A,#00001000B SHL 1 sama dengan Mov A,#00010000B HIGH untuk mengambil nilai byte tinggi Mov A,#HIGH 1234H sama dengan Mov A,#12H LOW untuk mengambil nilai byte rendah Contoh: Mov A,#LOW 1234H sama dengan Mov A,#34H () untuk operasi yang harus didahulukan Contoh: Mov A,#(10+4) * 3 bilangan 10 desimal terlebih dahulu dijumlahkan dengan 4 sebelum dikalikan dengan 3 karena adanya operator ().
2.4 Assembler Directive Assembler Directive (Pengarah Assembler) merupakan mnemonic yang akan diproses oleh program Assembler. Berikut ini pengarah assembler yang biasa digunakan untuk program-program assembler. ORG (Origin) ORG digunakan untuk menunjukkan lokasi memori tempat instruksi atau perintah yang ada dibawahnya disimpan. Bentuk dari ORG adalah: ORG ekspresi Contoh : ORG 2000H MOV DPTR,#4000H Maka perintah MOV DPTR,#4000H yang berada dibawah ORG #2000H akan terletak dialamat 2000H. END
11
END biasanya diletakkan diakhir baris dari file program sumber assembler sebagai tanda akhir pernyataan bagi program assembler dalam melakukan proses pemograman. EQU (Equate) EQU digunakan untuk mendefinisikan sebuah simbol atau lambang assembler secara bebas. Contoh: Bilangan EQU 50H Mov A,#Bilangan Bilangan pada instruksi “Mov A,#Bilangan” berisi 50H. BIT Pengarah BIT digunakan untuk mendefinisikan suatu lambang yang menunjuk ke suatu lokasi bit pada memori yang dapat dialamati secara per bit. Contoh: Flag Bit 0 ;lambang Flag menunjuk ke lokasi 0 secara pengalamatan bit DATA Pengarah DATA digunakan untuk menyatakan secara langsung alamat pada memori internal dengan sebuah lambang. Alamat yang dimulai 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 IDATA Sama seperti DATA tapi untuk pengalamatan tidak langsung. XDATA Digunakan untuk menyatakan alamat yang ada pada memori eksternal alamatnya maksimal FFFFH. CSEG, digunakan untuk memilih lokasi memori program BSEG, untuk memilih lokasi memori yang dapat dialamati dengan pengalamatan bit DSEG, digunakan untuk memilih lokasi memori RAM internal. ISEG, digunakan untuk memilih lokasi RAM internal untuk pengalamatan tak langsung. XSEG, digunakan untuk memilih lokasi di memori eksternal. DB (Define Byte) Digunakan untuk memberi nilai tertentu pada memori di lokasi tersebut, contoh: ORG 3000H DB 50H,51H
12
DB terletak di bawah ORG 3000H, data 50H dan 51H akan menempati lokasi di alamat 3000H dan 3001H. DW (Define Word) Biasanya diikuti dengan label dan berfungsi untuk memberi nilai 2 byte pada lokasi memori tempat DW dituliskan. Nilai 2 byte berasal dari alamat tempat label diberikan. Contoh: ORG 2100H Lokasi1 : ORG 3000H DW Lokasi1 ; alamat 3000H dan 3001H diisi dengan data 21H dan 00H. DS (Define String) DS selalu diikuti dengan angka dan berfungsi untuk menyediakan tempat sebesar angka tersebut dimulai dari alamat assembler directive ini berada. Contoh: DSEG ORG 50H Memori1 DS 2 ; disediakan tempat sebesar 2 byte ; Mulai dari alamat 50H dari RAM DBIT Digunakan untuk menyediakan tempat pada segmen Bit dan dapat digunakan jika segmen yang aktif adalah BSEG, contoh: BSEG ; pilih segmen PetaIO: DBIT 32 ; sediakan 32 bit buffer untuk i/o.
2.5 Sitem Pengalamatan Sistem pengalamatan dalam pemrograman mikrokontroler terdiri dari beberapa jenis, berikut ini penjelasannya. Pengalamatan Segera (immediately addressing) Pengalamatan ini terjadi pada sebuah perintah ketika nilai operand merupakan data yanga akan diproses, biasanya selalu diawali dengan tanda ”#” (kres). Contoh: Mov A,#05H ; data didefinisikan bernilai 05H Mov A,#data ; data dapat diisi dengan suatu angka misalnya dengan Data EQU 5 Pengalamatan Langsung (direct addressing) Digunakan untuk menunjuk data yang ada pada suatu lokasi memori dengan cara menyebut lokasi memori itu berada, misalnya perintah Mov A,50H instruksi ini berarti data yang berada pada lokasi 50H disalin ke akumulator. 13
Pengalamatan Tidak Langsung (indirect addressing) Pengalamatan ini digunakan untuk mengakses data yang berada di dalam memori, tetapi memori tidak disebutkan secara langsung melainkan dititipkan ke register lain. Misalnya: Mov
A,@R0
;memori yang alamat lokasinya ; tersimpan ; di R0 isinya disalin ke akumulator.
Pengalamatan Register (register addressing) pengalamatan ini menjadikan register serbaguna R0 sampai R7 sebagai tempat menyimpan data. Contoh : Mov A,R0 ; data di R0 disalin ke akumulator Pengalamatan Kode (code addressing) Pengalamatan ini dilakukan ketika operand merupakan alamat dari instruksi JUMP dan CALL (ACALL, JMP, LJMP dan LCALL). Biasanya operand tersebut akan menunjuk ke suatu alamat yang telah diberi label sebelumnya. Misalnya: Acall Delay ……………. Delay: Mov B,#0FFH Pada saat dijalankan program akan lompat menuju sub-rutin berada pada lokasi memori yang telah diberi label Delay. Pengalamatan BIT (BIT addressing) Digunakan untuk menunjuk alamat pada memori atau Register Fungsi Khusus yang mempunyai kemampuan diakses per bit. Misalnya: Setb P3.0 ;memberikan logika 1 pada bit ke 0 pada P3. 2.6 Instruction Set Secara keseluruhan MCS-51 mempunyai 255 macam instruksi, instruksiinstruksi tersebut dikelompokkan manjadi sebagai berikut. 2.6.1 Kelompok Penyalinan Data Instruksi dasar untuk kelompok ini adalah MOV, jika perintah MOV A,R7 ini selesai dikerjakan berarti data yang ada di akumulator A sama dengan data yang ada di R7 yang sebelumnya tersimpan di R7. Pada memori data MOV dituliskan seperti berikut Mov A,20H ;salin isi lokasi memori 20H ke ;akumulator Mov A,@R1 ;salin isi lokasi yang ditunjuk R1 ;ke A Mov P3,A ;salin isi A ke latch Port 1 14
Untuk pemakain pada memori program penulisannya menjadi: Movc A,@A+DPTR ;DPTR sebagai register tak langsung Movc A,@A+PC ;PC sebagai register tak langsung Untuk memori eksternal hanya berlaku bagi mikrokontroler yang mendukung penggunaan memori eksternal, hanya ada 6 buah instruksi, yaitu: Movx A,@DPTR Movx A,@R0 Movx A,@R1 Movx @DPTR,A Movx @R0,A Movx @R1,A 2.6.2 Kelompok Instruksi Aritmetik Instruksi ADD dan ADDC Kedua instruksi ini selalu melibatkan akumulator, jika isi akumulator dijumlahkan dengan suatu bilangan maka hasilnya akan kembali ditampung di akumulator. Perbedaan ADD dan ADDC apabila ADD melakukan operasi yang melebihi kapasitas 1 byte, maka Carry Flag di PSW akan menunjukkan angka 1. sedangkan ADDC nilai bit carry sebelumnya ikut dijumlahkan. Contoh penulisan instruksi ini sebagai berikut: ADD A,R0 ; melalui register serbaguna R0 ADD A,#23H ; langsung dengan suatu bilangan ADD A,@R0 ; dengan isi memori yang ditunjuk R0 ADD A,P1 ; dengan isi register P1 Instruksi SUBB Isi akumulator A dikurangi dengan satu bilangan (1 byte) beserta dengan bit Carry, hasil pengurangan akan ditampung kembali di Akumulator. Jika terjadi nilai pengurangan kurang dari „0‟ maka bit Carry akan bernilai „1‟. Contoh penulisannya adalah: SUBB A,R0 ;A=A-R0-Carry SUBB A,#23H ;A=A-23H SUBB A,@R1 ;A=A-[R1] R1 artinya isi dari R1 SUBB A,P0 ;A=A-P0 Instruksi DA A Digunakan untuk mengubah nilai biner 8 bit yang tersimpan dalam akumulator menjadi 2 digit dalam format BCD digunakan setelah instruksi ADD, ADDC, atau SUBB. Instruksi MUL AB Bilangan biner dalam akumulator A dikalikan dengan bilangan biner 8 bit pada register B, hasil perkalian berupa bilangan biner 16 bit disimpan di B untuk 8 bit bagian atas (high byte) dan di akumulator A untuk 8 bit bagian bawah (low byte). Bit Overflow (OV) di PSW akan bernilai 1 jika register B bernilai bukan 00H. contoh operasinya: 15
Mov Mov MUL
A,#20 B,#10 AB
Instruksi DIV AB Instruksi pembagian bilangan di A oleh bilangan di B, OV akan bernilai „1‟ jika register B sebelumnya bernilai. Instruksi DEC dan INC DEC digunakan untuk menurunkan suatu nilai (I byte), yang tersimpan di A, register, nilai langsung atau tak langsung yang melalui register sebesar 1. INC sebaliknya dari DEC yaitu menaikan nilainya sebesar 1. Contoh : DEC A ; artinya A=A-1 DEC R0 ; artinya R0 = R0-1 DEC #50H ; artinya jumlahnya adalah 4FH DEC @R1 ; artinya R1-1 INC A ; artinya A=A+1 INC R0 ; artinya R0 = R0+1 INC #50H ; artinya jumlahnya adalah 51H INC @R1 ; artinya R1+1 2.6.3 Kelompok Instruksi Logika Intstruksi yang terdapat pad kelompok ini antara lain operasi AND (ANL), OR (ORL), XOR (XRL), operasi clear (CLR), komplemen (CPL), pergeseran kanan atau kiri (RR, RL, RRC, dan RLC) serta instruksi penukaran data (SWAP). 2.6.4 Kelompok Instruksi JUMP Instruksi dalam kelompok ini ada tiga yaitu LJMP (long jump), AJMP (absolute jump) dan SJMP (short jump) perbedaan dari ketiga jenis instruksi tersebut terletak pada luas jangkauan dalam memori program, dimana LJMP mampu menjangkau 64 Kilobyte sedangkan AJMP menjangkau daerah di 2 Kilobyte yang sama, dan SJMP menjangkau antara -128 sampai +127 byte. Nilai negative dapat digunakan untuk melompat ke instruksi sebelumnya. Proses yang dilakukan oleh ketiga instruksi ini persis sama. 2.6.5 Kelompok Instruksi Sub Rutin Untuk berbagai pertimbangan mungkin saja dalam satu rutin program diperlukan sub-rutin yang menyimpan potongan program, untuk memanggil subrutin dapat menggunakan instruksi LCALL, ACALL, dan SCALL jangkauannya setara dengan instruksi JUMP. Untuk kembali pada program sebelumnya setelah instruksi terakhir sub-rutin digunakan instruksi RET.
2.6.5 Kelompok Instruksi Lompatan Bersyarat Instruksi JZ /JNZ 16
Instruksi JZ (Jump if Zero) dan instruksi JNZ (Jump if Not Zero) instruksi Jump untuk memantau nilai akumulator, perhatikan contoh berikut ini: MOV A,#0 JNZ BukanNol JZ Nol …………… BukanNol: …………… Nol: …………. Dalam contoh tersebut MOV A,#0 menjadika akumulator berisi „0‟, hal ini mengakibatkan instruksi JNZ Bukan Nol tidak dikerjakan, sedangkan JZ Nol akan terus dikerjakan karena syaratnya dipenuhi. Instruksi JC/JNC Instruksi JC (Jump on Carry) /JNC (Jump on Not Carry) digunakan untuk memantau bit Carry pada Program Status Word (PSW). Instruksi JB / JNB / JBC Instruksi JB (Jump on Bit Set), JNB (Jump on Not Bit set) dan JBC (Jump on Bit Set Then Clear Bit) digunakan untuk memantau bit-bit tertentu, bisa berupa register-register status tertentu atau bit masukan mikrokontroler. Instruksi DJNZ dan CJNE DJNZ (Decrement and Jump if Not Zero) merupakan instruksi yang akan mengurangi 1 nilai register serbaguna (R0 sampai R7) atau memori data dan akan melompat ke memori program yang dituju jika setelah 1 tersebut hasilnya belum nol. Berikut ini contoh penulisannya: MOV R0,#23H DJNZ R0,$ R0 akan dikurangi 1 hingga R0 belum nol maka pengurangan akan terus diulangi. CJNE (Compare And Jump If Not Equal) membandingkan dua nilai yang disebut MCS dan akan melompat ke memori program yang dituju jika kedua nilai tersebut tak sama. Lebih lengkap mengenai instruction set MCS-51 dapat dibaca dalam lampiran tentang MCS51 Set Instruction. 2.7 Microcontroller USB-MCS51 Software dan ProsesPemograman Source Code Software ini dikembangkan oleh Thomas Fischl yang dapat secara lengkap didownload baik aplikasi dan rangkaiannya pada alamat http://www.fischl.de/usbasp/ berfungsi sebagai downloader program yang berbasiskan antarmuka (interface) USB pada PC kedalam mikrokontroler. Berikut ini langkah-langkah pembuatan dan download program source: 1. Jalankan aplikasi Pinnacle51, Mide51, atau aplikasi programmer lainnya
17
2. Buat folder baru didalam windows explorer, khusus untuk program mikrokontroler. 3. Membuat Program sumber (source program) dengan bahasa Assembler pada text editor seperti Notepad, Pinnacle51, Mide51 Crimson Editor, dll. 4. Simpan program sumber yang sudah dibuat pada pada folder yang khusus mikrokontroler dengan extention file”.asm”. 5. Lakukan proses kompilasi dengan compileryang tersedia pada aplikasi Pinnacle sehingga menghasilkan file Heksa dengan extention file”.hex” 6. Jalankan aplikasi progisp v1.68 Software portable yang ada dalam folder windows explorer. 7. Buka folder dimana program berkestensi “.hex”. disimpan, 8. Lakukan proses flash programmer dengan menekan toolbar”write to chip “ pada aplikasi progisp v1.68.
BAGIAN
3
Aplikasi Port Paralel Mikrokontroler AT89S51 Dan Percobaan 18
Pada bagian ini kita akan mencoba mengaplikasikan mikrokontroler AT89S51 yang telah terintegrasi dalam modul MDSR Ver. 0, modul disiapkan untuk melakukan percobaan pemrograman mikrokontroler, beberapa komponen yang di-interfacing dengan AT89S51 ini antara lain LED, Seven Segmen, Switch dan Keypad. Tetapi sebelum memasuki percobaan kita akan melihat sekilas tentang konfigurasi pin mikrokontroler AT89S51 untuk mengetahui pola pengawatan (wiring) dalam Modul MDSR ver. 0 ini. 3.1 Konfigurasi Pin AT89S51
Gambar 3.1 Konfigurasi Pin AT89S51 AT89S51 terdiri dari beberapa bentuk package, seperti gambar diatas, tetapi yang banyak dipasaran berbentuk PDIP 40 pin. Fungsi dari pin-pin tersebut bisa dijelaskan dalam table berikut ini: Tabel 3.1 Tabel Fungsi Pin AT89S51
19
VCC GND Port 0 (P0) Port 1 & Port 2 (P1 &P2) Port 3 (P3)
RST XTAL1, XTAL2 EA
Tegangan supply bagi mikrokontroler Ground Port I/O dua arah 8 bit dengan konfigurasi open drain, umumnya memerlukan pull-up Port I/O dua arah 8 bit dengan internal pull-up Port I/O dengan 8 bit dan internal pull-up, tetapi mempunyai fungsi alternatif yaitu : P3.0 RXD (port input serial) P3.1 TXD (port output serial) P3.2 INT0 (interrupt eksternal 0) P3.2 INT1 (interrupt eksternal 1) P3.4 T0 (input eksternal timer 0) P3.5 T1 (input eksternal timer 1) P3.6 WR (strobe penulisan untuk memori data eksternal) P3.7 RD (strobe pembacaan untuk memori data eksternal) Input reset, kondisi high selama dua siklus mesin akan mengembalikan program pada alamat 0000H Input untuk internal clock, pin ini dihubungkan dengan kristal Eksternal Akses, untuk memfungsikan memori internal maka pin ini diberi logaki high dan apabila mengakses memori eksternal pin ini diberi logika low
3.2 Blok Diagram MODUL DASAR Secara umum modul MDSR Ver.0 ini mempunyai blok diagram seperti berikut ini:
Gambar 3.2 Diagram Blok MDSR Ver.0
3.3 Blok Diagram MODUL ADVANCE Ver. 0
Baris LED Matrix (P1.0 – P1.6)
P0.0 – P0.7
P1.0 – P1.7
AT89S51
ADC0804 LCD 16 Char Kolom LED Marix (P0.0-P0.4)
20
Gambar 3.3 Diagram Blok Modul Advance
SEKOLAH MENENGAH KEJURUAN NEGERI 1 CIMAHI Kelompok : Instrumentasi Industri Jurusan Kontrol Proses
No. Form. : F:ISO-KUR-06
Job Sheet Mikrontroler Dasar 1 21
Jl. Mahar Martanegara No. 48 Kota Cimahi
Pemrograman LED 8 Bit 1. Tujuan Kegiatan Belajar - Siswa dapat memahami penggunaan port pada AT89S51 sebagai output - Siswa mampu merancang program assembler untuk mengendalikan LED - Siswa mampu membuat minimum system pengendali LED dengan menggunakan AT89S51 2. Materi Seperti digambarkan pada diagram blok diatas LED terhubung dengan Port 0 (P0.0 sampai dengan P0.7), contoh program berikut ini dibuat untuk LED pada posisi Port 0. vcc P1.0
P0.0
P1.1
P0.1
P1.2
P0.2
P1.3
P0.3
P1.4
P0.4
P1.5
P0.5
P1.6
P0.6
P1.7
P0.7
P3.0
P2.0
P3.1
P2.1
P3.2
P2.2
P3.3
P2.3
P3.4
P2.4
P3.5
P2.5
P3.6 P3.7
P2.6 P2.7
Gambar 3.3. Hubungan led terhadap port I/O mikrokontroller Lampu flip-flop pada Port 0 Program1 $mod51 org 0 Mulai: mov call mov call jmp Delay: mov Delay1: mov Delay2: mov Delay3: djnz
P0,#0 Delay P0,#0ffh Delay Mulai R7,#50 R6,#100 R5,#100 R5,Delay3
; ; ; ; ; ; ; ; ; ;
Led nyala panggil subrutin Delay Led padam panggil subrutin Delay lompat ke label mulai Isi register R7 dengan 50 Isi register R6 dengan 100 Isi register R5 dengan 100 kurangi R5 dengan 1, bila hasil belum sama dengan 0 maka lompat
22
djnz
R6,Delay2
djnz
R7,Delay1
ke Delay3 ; kurangi R6 dengan 1, bila hasil ; belum sama dengan 0 maka lompat ke Delay2 ; kurangi Rl dengan 1, bila hasil ; belum sama dengan 0 maka lompat ke Delay1 ; Keluar dari subrutin
ret end
Lampu flip-flop nible atas dan nible bawah Program2 $mod51 ORG 0H MULAI: Mov CALL Mov CALL Sjmp Delay: Delay1: Delay2: Delay3:
mov mov mov djnz djnz djnz ret
P0,#00001111B ; LED P0.4 s/d P0.7 nyala DELAY ; panggil subrutin Delay P0,#11110000B ; LED P3.0 s/d P3.3 nyala DELAY ; panggil subrutin Delay MULAI ; lompat ke label mulai ; R7,#50 ; Isi register R7 dengan 50 R6,#100 ; Isi register R6 dengan 100 R5,#100 ; Isi register R5 dengan 100 R5,Delay3 ; kurangi R5 dengan 1, bila hasil ; belum sama dengan 0 maka lompat ke Delay3 R6,Delay2 ; kurangi R6 dengan 1, bila hasil ; belum sama dengan 0 maka lompat ke Delay2 R7,Delay1 ; kurangi Rl dengan 1, bila hasil ; belum sama dengan 0 maka lompat ke Delay1 ; Keluar dari subrutin
end
Running led dari kanan ke kiri Program3 $mod51 org 0 Mulai: mov
a,#0ffh
clr Loop: mov
c P0,a
call Delay rlc a jmp
Loop
; ; ; ; ; ; ; ; ;
Isi register accumulator dengan FFh Nolkan carry flag Pindahkan isi register accumulator ke P0 Panggil subrutin Delay Geser ke kiri isi register accumulator dengan carry Lompat ke label loop
23
Delay: Delay1: Delay2: Delay3:
mov mov mov djnz
R7,#50 R6,#100 R5,#100 R5,Delay3
; ; ; ; ;
djnz
R6,Delay2
; ;
djnz
R7,Delay1
; ;
ret
;
Isi register R7 dengan 50 Isi register R6 dengan 100 Isi register R5 dengan 100 kurangi R5 dengan 1, bila hasil belum sama dengan 0 maka lompat ke Delay3 kurangi R6 dengan 1, bila hasil belum sama dengan 0 maka lompat ke Delay2 kurangi Rl dengan 1, bila hasil belum sama dengan 0 maka lompat ke Delay1 Keluar dari subrutin
end
3. Langkah Kerja - Buat program 1 pada text editor (notepad, pinnacle, crimson editor), kemudian simpan file tersebut dengan nama file LED dengan ekstensi .asm pada folder khsusus*. - Lakukan pengkonversian (meng-compile) file tersebut ke bentuk hexa (.hex) dengan menggunakan ASM51.exe atau langsung pada aplikasi yang telah tersedia compilernya. - Hubungkan AT89S51 downloader ke PC melalui port parallel / serial. - Jalankan aplikasi Atmel ISP programmer pada PC. - Download file yang berekstensi .hextersebut ke dalam IC AT89S51 dengan menggunakan aplikasi Atmel ISP programmer. - Run target pada Atmel ISP programmer untuk menjalankan hasil yang telah deprogram. - Ulangi langkah di atas untuk mencoba program 2 dan 3. 4. Analisa - Catat perubahan yang dikeluarkan setelah program 1, 2 dan 3 dijlankan**. - Buat program running led dari kiri ke kanan**! - Buat program running led secara pingpong**! - Buat program running led dari luar ke dalam dan dari dalam keluar**! - Buat program kombinasi dari seluruh program yang telah dibuat**. 5. Kesimpulan Buat kesimpulan yang diperoleh pada saat praktek**
Keterangan: * Folder baru yang di dalamnya terdapat file ASM51.exe dan file Mod51 ** Dibuat dalam bentuk laporan praktikum No. Form. : F:ISO-KUR-06 SEKOLAH MENENGAH KEJURUAN NEGERI 1 CIMAHI 24
Kelompok : Teknologi & Industri Jurusan Teknik Pendinginan & Tata Udara Jl. Mahar Martanegara No. 48 Kota Cimahi
Job Sheet Mikrontroler Dasar 2
Pemrograman Display Seven Segmen 1. Tujuan Kegiatan Belajar - Siswa dapat memahami penggunaan port pada AT89S51 sebagai output - Siswa mampu merancang program assembler untuk mengendalikan 7-Segmen - Siswa mampu membuat minimum system pengaturan display 7-Segmen dengan menggunakan AT89S51 2. Materi P1.0
P0.0
P1.1
P0.1
P1.2 P1.3
P0.2 P0.3
P1.4
P0.4
P1.5
P0.5
P1.6
P0.6
P1.7
P0.7
P3.0
P2.0
P3.1 P3.2
P2.1 P2.2
P3.3 P3.4
P2.3 P2.4
P3.5
P2.5
P3.6 P3.7
P2.6 P2.7
f a b c d e g dot
vcc
vcc
Gambar 3.4. Susunan hubungan 7 segmen dengan port I/O mikrokontroller Program menampilkan angka 0-9 Program1
$mod51 org Mulai: mov call mov call mov call mov call mov call mov
0 P2,#0c0h delay P2,#0f3h delay P2,#089h delay P2,#0a1h delay P2,#0b2h delay P2,#0a4h
; ; ; ; ; ; ; ; ; ; ;
keluarkan data angka nol ke P2 panggil sub rutin delay keluarkan data angka satu ke P2 panggil sub rutin delay keluarkan data angka dua ke P2 panggil sub rutin delay keluarkan data angka tiga ke P2 panggil sub rutin delay keluarkan data angka empat ke P2 panggil sub rutin delay keluarkan data angka lima ke P2
25
call delay mov P2,#084h call delay mov P2,#0f1h call delay mov P2,#080h
; ; ; ; ; ;
panggil sub rutin delay keluarkan data angka enam ke P2 panggil sub rutin delay keluarkan data angka tujuh ke P2 panggil sub rutin delay keluarkan data angka delapan
ke
P2 call delay ; panggil sub rutin delay mov P2,#0a0h ; keluarkan data angka sembilan ke P2 call delay ; panggil sub rutin delay sjmp Mulai delay: mov r7,#100 delay_1: mov r6,#100 delay_2: mov r5,#100 djnz r5,$ djnz r6,delay_2 djnz r7,delay_1 ret end
Program menampilkan angka 0-9 dengan metode Look Up Table Program2 $mod51 org Mulai: mov mov
0 R4,#10 ; isi register R4 dengan 10 Dptr,#Tabel_Data ; isi register DPTR dengan alamat ; yang ditunjukkan label Tabel_Data
Loop: clr a movc a,@a+dptr
; ; ; ; ; ; mov p2,a ; call delay ; inc dptr ; djnz r4,Loop ; ; ; sjmp Mulai
nolkan isi akumulator copy data ke akumulator dari lokasi memori program yang ditunjukkan oleh isi akumulator ditmbah dengan isi DPTR keluarkan data ke P2 panggil sub rutin delay isi DPTR +1 kurangkan isi R4 dengan 1 dan lompat ke label Loop jika isi R4 tidak nol
Tabel_Data: db 0c0h,0f3h,89h,0a1h,0b2h,0a4h,84h,0f1h,80h,0a0h
26
delay: mov
r7,#100
mov
r6,#100
delay_1: delay_2: mov r5,#100 djnz r5,$ djnz r6,delay_2 djnz r7,delay_1 ret end
Program menampilkan angka A-F dengan metode Look Up Table Program3 $mod51 org
0 mov mov
R4,#6 Dptr,#Tabel_Data
Loop: clr movc mov call inc djnz sjmp ; Tabel_Data: db ; delay: mov delay_1: mov delay_2: mov djnz djnz djnz ret
a a,@a+dptr p2,a delay dptr r4,Loop 0 090h,086h,0cch,83h,8ch,9ch r7,#100 r6,#100 r5,#100 r5,$ r6,delay_2 r7,delay_1
end
3. Langkah Kerja
27
-
-
-
Buat program 1 pada text editor (notepad, pinnacle, crimson editor), kemudian simpan file tersebut dengan nama file Seven-Segment dengan ekstensi .asm pada folder khsusus*. Lakukan pengkonversian (meng-compile) file tersebut ke bentuk hexa (.hex) dengan menggunakan ASM51.exe atau langsung pada aplikasi yang telah tersedia compilernya. Hubungkan AT89S51 downloader ke PC melalui port parallel / serial. Jalankan aplikasi Atmel ISP programmer pada PC. Download file yang berekstensi .hextersebut ke dalam IC AT89S51 dengan menggunakan aplikasi Atmel ISP programmer. Run target pada Atmel ISP programmer untuk menjalankan hasil yang telah deprogram. Ulangi langkah di atas untuk mencoba program 2 dan 3.
4. Analisa - Catat perubahan yang dikeluarkan setelah program 1, 2 dan 3 dijlankan**. - Buat program menampilkan hitungan mundur**. - Buat program menampilkan hitungan 0-99**. 5. Kesimpulan Buat kesimpulan yang diperoleh pada saat praktek**
Keterangan: * Folder baru yang di dalamnya terdapat file ASM51.exe dan file Mod51 ** Dibuat dalam bentuk laporan praktikum SEKOLAH MENENGAH KEJURUAN
No. Form. : F:ISO-KUR-06
28
NEGERI 1 CIMAHI Kelompok : Insrtrumentasi Industri Jurusan Kontrol Proses Jl. Mahar Martanegara No. 48 Kota Cimahi
Job Sheet Mikrontroler Dasar 3
Pemrograman Input Switch 1. Tujuan Kegiatan Belajar - Siswa dapat memahami penggunaan port pada AT89S51 sebagai I/O - Siswa mampu merancang program assembler untuk mengendalikan LED dan 7Segmen dengan input switch - Siswa mampu membuat minimum system pengaturan LED dan display 7-Segmen dengan menggunakan AT89S51 2. Materi vcc P1.0
P0.0
P1.1
P0.1
P1.2
P0.2
P1.3
P0.3
P1.4
P0.4
P1.5
P0.5
P1.6
P0.6
P1.7
P0.7
P3.0
P2.0
P3.1
P2.1
P3.2
P2.2
P3.3
P2.3
P3.4
P2.4
P3.5
P2.5
P3.6 P3.7
P2.6 P2.7
Gambar 3.5. Susunan hubungan switch I/O dengan port I/O mikrokontroller Program menghidup-matikan led dengan switch I/O Program1 $mod51 org Mulai:
0 mov a,P3 cjne a,#0fbh,Terus
mov P0,#0 sjmp Mulai
; ; ; ; ; ; ; ;
cjne a,#0f7h,Mulai
;
copy data P3 ke akumulator bandingkan isi akumulator dengan FBh dan lompat ke label Terus jika tidak sama,jika sama eksekusi program dibawahnya nyalakan led lompat ke awal program
Terus: bandingkan
isi
akumulator
dengan F7h
29
mov P0,#0ffh sjmp Mulai
; ; ; ; ;
dan lompat ke label Mulai jika tidak sama,jika sama eksekusi program dibawahnya matikan led lompat ke awal program
end
Progam toggle switch Program2 $mod51 org Mulai:
0 mov a,P3 cjne a,#0fbh,Mulai
; copy data P3 ke a ; bandingkan isi
cjne r0,#0,Terus
; ; ; ;
dan lompat ke label Mulai jika tidak sama,jika sama eksekusi program dibawahnya bandingkan isi R0 dengan 0 dan
mov mov
; ; ; ; ;
label Terus jika tidak sama, jika sama eksekusi program dibawahnya isi R0 dengan 1 nyalakan led
akumulator
dengan FBh
lompat ke
r0,#1 P0,#0
Tunggu: mov a,P3 cjne a,#0ffh,Tunggu
; copy data P3 ke a ; tunggu hingga
sjmp Mulai
; lompat ke awal program
mov r0,#0 mov P0,#0ffh sjmp Tunggu
; isi R0 dengan 0 ; matikan led ; lompat ke label tunggu
tombol-tekan
dilepas Terus:
end
P1.0
P0.0
P1.1
P0.1
P1.2
P0.2
P1.3
P0.3
P1.4
P0.4
P1.5 P1.6
P0.5 P0.6
P1.7
P0.7
P3.0
P2.0
P3.1
P2.1
P3.2
P2.2
P3.3
P2.3
P3.4
P2.4
P3.5
P2.5
P3.6
P2.6
P3.7
P2.7
g a b c d e f dot
vcc
vcc
30
Gambar 3.6. Susunan switch I/O dengan port I/O mikrokontroller dan 7 seg
Program counter berdasarkan input switch Program3 $mod51 org
0 mov
r0,#0
Mulai: mov a,P3 cjne a,#0fbh,Mulai call Delay Tunggu: mov a,P3 cjne a,#0ffh,Tunggu call Delay inc r0 cjne r0,#10,Lanjut mov r0,#0 Lanjut: cjne r0,#0,Banding1 mov P2,#0c0h sjmp Mulai Banding1: cjne r0,#1,Banding2 mov P2,#0f3h sjmp Mulai Banding2: cjne r0,#2,Banding3 mov P2,#089h sjmp Mulai Banding3: cjne r0,#3,Banding4 mov P2,#0a1h sjmp Mulai Banding4: cjne r0,#4,Banding5 mov P2,#0b2h sjmp Mulai Banding5: cjne r0,#5,Banding6 mov P2,#0a4h sjmp Mulai Banding6: cjne r0,#6,Banding7 mov P2,#084h sjmp Mulai
31
Banding7: cjne r0,#7,Banding8 mov P2,#0f1h sjmp Mulai Banding8: cjne r0,#8,Banding9 mov P2,#080h sjmp Mulai Banding9: cjne r0,#9,Mulai mov P2,#0a0h sjmp Mulai Delay: mov
r7,#100
Delay1: mov r6,#200 djnz r6,$ djnz r7,Delay1 ret end
3. Langkah Kerja - Buat program 1 pada text editor (notepad, pinnacle, crimson editor), kemudian simpan file tersebut dengan nama file Switch dengan ekstensi .asm pada folder khsusus*. - Lakukan pengkonversian (meng-compile) file tersebut ke bentuk hexa (.hex) dengan menggunakan ASM51.exe atau langsung pada aplikasi yang telah tersedia compilernya. - Hubungkan AT89S51 downloader ke PC melalui port parallel / serial. - Jalankan aplikasi Atmel ISP programmer pada PC. - Download file yang berekstensi .hextersebut ke dalam IC AT89S51 dengan menggunakan aplikasi Atmel ISP programmer. - Run target pada Atmel ISP programmer untuk menjalankan hasil yang telah deprogram. - Ulangi langkah di atas untuk mencoba program 2 dan 3.
4. Analisa - Catat perubahan yang dikeluarkan setelah program 1, 2 dan 3 dijlankan**. - Buat program running led dari kanan ke kiri jika salah salah satu switch ditekan dan running led dari kiri ke kanan jika switch lainnya ditekan. - Buat program nyala led per step jika salah satu switch ditekan dan padam led per step jika switch lainnya ditekan. - Buat program Up-Down binary counter (4 bit) ditampilkan di LED. - Buat program Up-Down decade counter ditampilkan ke 7 segmen. 5. Kesimpulan Buat kesimpulan yang diperoleh pada saat praktek** 32
Keterangan: * Folder baru yang di dalamnya terdapat file ASM51.exe dan file Mod51 ** Dibuat dalam bentuk laporan praktikum No. Form. : F:ISO-KUR-06 SEKOLAH MENENGAH KEJURUAN NEGERI 1 CIMAHI Kelompok : Insrtrumentasi Industri Job Sheet Mikrontroler Jurusan Kontrol Proses Dasar 4 Jl. Mahar Martanegara No. 48 Kota Cimahi
Pemrograman Keypad 1. Tujuan Kegiatan Belajar - Siswa dapat memahami penggunaan port pada AT89S51 sebagai I/O
33
-
Siswa mampu merancang program assembler untuk mengendalikan 7-Segmen dengan input keypad Siswa mampu membuat minimum system pengaturan display 7-Segmen melalui keypad dengan menggunakan AT89S51
2. Materi 1
2
3
A
4
5
6
B
7
8
9
C
F
0
E
D
P1.3 P1.2 P1.1 P1.0
P3.4 P3.5 P3.6 P3.7
Gambar 3.7. Susunan konfigurasi keypad matrik
P1.3 P1.2 P1.1 P1.0
P3.4 P3.5 P3.6 P3.7
P1.7
P0.0
P1.6
P0.1
P1.5
P0.2
P1.4
P0.3
P1.3
P0.4
P1.2 P1.1
P0.5 P0.6
P1.0
P0.7
P3.0
P2.0
P3.1
P2.1
P3.2
P2.2
P3.3
P2.3
P3.4
P2.4
P3.5
P2.5
P3.6
P2.6
P3.7
P2.7
g a b c d e f dot
vcc
vcc
Gambar 3.8. Susuna keypad matrik dengan 7 segmen
Program menampilkan 0-9 dan A-F Program1 $mod51 org
0
Mulai: mov P1,#0f7h jb P3.7,Key1 mov P2,#0f3h sjmp Mulai Key1:
34
jb P3.6,Key2 mov P2,#089h sjmp Mulai Key2: jb P3.5,Key3 mov P2,#0a1h sjmp Mulai Key3: jb P3.4,Key4 mov P2,#090h sjmp Mulai Key4: mov P1,#0fbh jb P3.7,Key5 mov P2,#0b2h sjmp Mulai Key5: jb P3.6,Key6 mov P2,#0a4h sjmp Mulai Key6: jb P3.5,Key7 mov P2,#084h sjmp Mulai Key7: jb P3.4,Key8 mov P2,#086h sjmp Mulai Key8: mov P1,#0fdh jb P3.7,Key9 mov P2,#0f1h sjmp Mulai Key9: jb P3.6,Key10 mov P2,#080h sjmp Mulai Key10: jb P3.5,Key11 mov P2,#0a0h sjmp Mulai Key11: jb P3.4,Key12 mov P2,#0cch sjmp Mulai Key12: mov P1,#0feh jb P3.7,Key13 mov P2,#09ch sjmp Mulai Key13: jb
P3.6,Key14 35
mov P2,#0c0h sjmp Mulai Key14: jb P3.5,Key15 mov P2,#08ch ljmp Mulai Key15: jb P3.4,Key16 mov P2,#083h ljmp Mulai Key16: ljmp Mulai end
Program menampilkan 0-9 dan A-F dengan metode Look Up Table Program2 $mod51 org
0
Mulai: mov mov mov mov
73h,#4 r5,#0f7h DPTR,#Angka 71h,#0
mov mov
70h,#07fh 72h,#0
mov mov call mov cjne mov add movc mov sjmp
P1,r5 a,P3
Ulang: Ulang1: delay a,P3 a,70h,Geser1 a,72h a,71h a,@a+DPTR P2,a Mulai
Geser1: inc 72h mov a,70h RR a mov 70h,a mov a,72h cjne a,#4,Ulang1 NextScan: mov add mov
a,71h a,#4 71h,a
36
mov a,r5 RR a mov r5,a djnz 73h,Ulang mov P0,#0ffh ljmp mulai Delay: mov
r7,#50
Delay1: mov r6,#100 djnz r6,$ djnz r7,Delay1 ret Angka: db db db db
0f3h,89h,0a1h,090h 0b2h,0a4h,84h,086h 0f1h,80h,0a0h,0cch 9ch,0c0h,8ch,83h
end
3. Langkah Kerja - Buat program 1 pada text editor (notepad, pinnacle, crimson editor), kemudian simpan file tersebut dengan nama file Keypad dengan ekstensi .asm pada folder khsusus*. - Lakukan pengkonversian (meng-compile) file tersebut ke bentuk hexa (.hex) dengan menggunakan ASM51.exe atau langsung pada aplikasi yang telah tersedia compilernya. - Hubungkan AT89S51 downloader ke PC melalui port parallel / serial. - Jalankan aplikasi Atmel ISP programmer pada PC. - Download file yang berekstensi .hextersebut ke dalam IC AT89S51 dengan menggunakan aplikasi Atmel ISP programmer. - Run target pada Atmel ISP programmer untuk menjalankan hasil yang telah deprogram. - Ulangi langkah di atas untuk mencoba program 2.
4. Analisa - Catat perubahan yang dikeluarkan setelah program 1, 2 dijalankan**. - Buat program penampilan angka 0-9 dan huruf A-F pada display 7 segmen sebagaimana susunan keypad pada pesawat telepon. 5. Kesimpulan Buat kesimpulan yang diperoleh pada saat praktek**
37
Keterangan: * Folder baru yang di dalamnya terdapat file ASM51.exe dan file Mod51 ** Dibuat dalam bentuk laporan
38