Top Banner
Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 1 Microcontroller AT89s51 Trainer Kit Experiment Manual Petunjuk Praktikum Microcontroller AT89sXXX Trainer Kit (Edisi V2.0-Update) Oleh: Triwiyanto Media Pengembangan Mikrokontroler Keluarga MCS-51 LABORATORIUM MIKROKONTROLLER JURUSAN TEKNIK ELEKTROMEDIK POLTEKKES DEPKES SURABAYA 2009
171

Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Apr 16, 2015

Download

Documents

Rizqi Fajril
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 1

Microcontroller AT89s51 Trainer Kit Experiment Manual

Petunjuk Praktikum Microcontroller AT89sXXX Trainer Kit

(Edisi V2.0-Update)

Oleh: Triwiyanto

Media Pengembangan Mikrokontroler

Keluarga MCS-51

LABORATORIUM MIKROKONTROLLER JURUSAN TEKNIK ELEKTROMEDIK

POLTEKKES DEPKES SURABAYA 2009

Page 2: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 2

PERCOBAAN 1 DISPLAY LED

TUJUAN:

1. Mahasiswa memahami rangkaian mikrokontroller untuk menghidupkan dan mematikan LED.

2. Mahasiswa dapat memahami program assembly untuk menghidupkan dan mematikan LED.

3. Mahasiswa memahami beberapa instruksi assembly dasar, MOV, Setb, Clr, RL dan RR, CJNE.

4. Mahasiswa memahami pembuatan instruksi waktu tunda

DASAR TEORI

P3.4

P2.2

RST

U1

AT89S51

91819 29

30

31

40

12345678

2122232425262728

1011121314151617

3938373635343332

RSTXTAL2XTAL1 PSEN

ALE/PROG

EA/VPP

VCC

P1.0P1.1P1.2P1.3P1.4P1.5/MOSIP1.6/MISOP1.7/SCK

P2.0/A8P2.1/A9

P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15

P3.0/RXDP3.1/TXD

P3.2/INTOP3.3/INT1

P3.4/TOP3.5/T1

P3.6/WRP3.7/RD

P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7

P0.2

P1.0

P2.7

P1.5

P0.4

P3.5

P2.3

VCC

P1.1

J2CON8

12345678

P3.0

P1.6

P0.1

P0.5

P3.6

P0.3P2.4

P1.2

VCC

P3.1

P1.7

J1CON8

12345678

P3.7

P3.2

XTAL1

P2.5

P2.0

P1.3

P0.6

J3CON8

12345678

P3.3

XTAL2

P2.1P0.0

P0.7P2.6

P1.4

J4CON8

12345678

Gambar 1.1. Diagram skematik IC89s51

Pada diagram skematik tersebut, terdapat 4 (empat) buah port, Port0, Port 1, Port 2 dan Port 3, yang masing-masing terdiri dari 8 bit data. Tata cara penulisan port adalah: P0.0 s/d P0.7, P1.0 s/d P1.7, P2.0 s/d P2.7 dan P3.0 s/d P3.7. Instruksi MOV, adalah instruksi copy data 8 bit. Contoh: Mov P0,A ; copy isi data yang ada di akumulator ke Port 0 Mov P0,#01010101b; isi Port 0 dengan data biner 01010101b atau keluarkan data biner

tersebut ke P0 Instruksi Setb, adalah instruksi mengirim logika 1 pada sebuah bit port Instruksi Clr, adalah instruksi mengirim logika 0 pada sebut bit port Contoh: Setb P0.0; kirim logika 1 pada P0.0 Clr P0.7; kirim logika 0 pada P0.7

Page 3: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 3

Instruksi RL, Geser data A ke kiri Instruksi RR, Geser data A ke kanan Contoh: Mov A,#00000001b; isi data akumulator dengan data biner tersebut RL A; Geser data yang ada di akumulator ke kiri, shg data akan berisi A=00000010b RL A; Geser data yang ada di akumulator ke kiri, shg data akan berisi A=00000100b RR A; Geser data yang ada di akumulator ke kanan, shg data akan berisi A=00000010b Instruksi CJNE, Compare and Jump if Not Equal (bandingkan dan lompatlah jika tidak sama) Contoh: Mov A, P2 Periksa: CJNE A,#1,Periksa Mov P0,A Pada instruksi tersebut, copy data dari P2 ke A, bandingkan data A dengan 1 apabila tidak sama (A=/ 1 maka akan lompat ke label Periksa ). Apabila sama ( A=#1, maka akan turun ke bawah). Instuksi DEC, Decrement register (mengurangi isi data register) Instruksi INC, Increment register (menambah isi data register) Contoh: Mov R0,#10; isi R0 dengan data 10 (sepuluh) DEC R0; kurangi isi R0 dengan 1, sehingga isi R0 sekarang menjadi 9(sembilan) DEC R0; kurangi isi R0 dengan 1, sehingga isi R0 sekarang menjadi 8(delapan) INC R0; tambahkan isi R0 dengan 1, sehingga isi R0 sekarang menjadi 9(sembilan) Instruksi SJMP, short jump, melompat ke sebuah label dengan jarak dekat Contoh: Mulai1: mov P0,#01010101b Sjmp Mulai1 Pada perintah tersebut berarti, program akan melompat ke label Mulai1, ingat label tidak diperkenankan ada spasi: Mulai 1 Instruksi CALL, memanggil sebuah subrutin Contoh: Ayo: mov P0,#01010101b Call WaktuTunda Sjmp Ayo WaktuTunda: Bla Bla Bla Ret end Pada perintah tersebut, program akan memanggil subrutin WaktuTunda, yang berisi instruksi Bla-Bla-Bal, dan diakhiri dengan RET. Seperti halnya sebuah label, penamaan sebuah subrutin, tidak diperkenankan ada spasi: Waktu Tunda Instruksi DJNZ, Decrement and Jump if Not Zero Mov R0,#10 AyoRek: DJNZ R0,AyoRek End

Page 4: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 4

Pada program tersebut data register R0, diisi dengan data 10, pada instruksi DJNZ, maka program akan mengurangi data pada register R0 (R0=R0-1), apabila data register R0 tidak nol (R0=/ 0) maka program akan melompat ke AyoRek. Struktur dalam penulisan bahasa Asembly Contoh: AyoMulai: mov P0,#01010101b Call Pekerjaan1 Call Pekerjaan2 Sjmp AyoMulai ; Pekerjaan1: Bla Bla Ret ; Pekerjaan2: Bla Bla ret End Pada contoh penulisan program assembly tersebut, tampak sebuah label AyoMulai (perhatikan tatacara pembuatan lebel ini, tanpa ada spasi dan boleh dalam bahasa indonesia, untuk keperluan lompatan, dan diakhiri dengan End. Perhatikan tataletak pembuatan subrutin tersebut.

Struktur progam yang salah AyoMulai: mov P0,#01010101b Sjmp AyoMulai

Call Pekerjaan1 Call Pekerjaan2 ; Pekerjaan1: Bla Bla Ret ; Pekerjaan2: Bla Bla ret End Apabila instruksi tersebut dilakukan pada saat instruksi SJMP AyoMulai, maka pemanggilan instruksi yang ada dibawahnya akan terabaikan atau tidak diproses.

Page 5: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 5

D1

P0.0..P0.7

D8

VCC

J3

EN LED12

Gambar 1.2 Rangkaian Display LED

Perhatikan pada gambar 1.1 tersebut. Delapan buah LED terhubung ke port 0, yang difungsikan sebagai output. Pada konfigurasi tersebut LED akan nyala bila diberi logika LOW ‘0’ melalui port 0, dan LED akan padam bila diberi logika HIGH ‘1’ melalui port 0. Agar Display LED ini dapat aktiv maka jumper EN LED harus dihubungkan singkat.

Percobaan 1.1. Menghidupkan LED dengan Instruksi MOV Pada percobaan 1.1 ini LED akan dihidupkan atau dimatikan dengan mengirimkan data tertentu pada port 0. Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hubungkan jumper pada LED_EN, untuk mengaktifkan 8 buah LED 2. Hubungkan modul Microcontroller Trainer dengan power supply +5V 3. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Gambar 1.3. Tampilan kosong MIDE Studio for MCS51

Gambar 1.4. Diagram alir percobaan 1.1

Page 6: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 6

5. Ketik program berikut ini:

Org 0h Start: Mov P0,#11110000b ; Isi P0 dengan 11110000 sjmp start ; lompat ke start End 6. Simpanlah program yang anda ketik dan beri nama : prog11a.asm

7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

Gambar 1.5. Tampilan program ISP Software

9. Lakukan pengamatan pada LED

10. Gantilah data #11110000b tersebut diatas dengan data seperti pada tabel berikut dan lakukan pencatatan LED mana yang padam.

D0 D1 D2 D3 D4 D5 D6 D7 LED YANG PADAM

1 1 1 1 1 1 1 0

1 1 1 1 1 1 0 1

1 1 1 1 1 0 1 1

1 1 1 1 0 1 1 1

1 1 1 0 1 1 1 1

1 1 0 1 1 1 1 1

1 0 1 1 1 1 1 1

0 1 1 1 1 1 1 1

Percobaan 1.2. Pembuatan Subrutine Waktu Tunda Pada percobaan ini, 8 LED akan berkedip secara kontinu, yang diakibatkan oleh pemberian waktu tunda. Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hubungkan modul Microcontroller Trainer dengan power supply +5V 2. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 3. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Page 7: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 7

Gambar 1.6. Diagram alir percobaan 1.2

4. Ketik program berikut ini:

Org 0h Start: Mov P0,#11111111b ; Kirim data biner 11111111 ke P0 Call Delay ; Memanggil waktu tunda Mov P0,#00000000b ; Kirim data biner 00000000 ke P0 Call Delay ; Memanggil waktu tunda Sjmp start ; lompat ke start ; Delay: mov R1,#255 ; Isi 255 ke R1 Del1: mov R2,#255 ; Isi 255 ke R2 Del2: djnz R2,del2 ; Dec. R2 dan lompat ke del2 if NZ djnz R1,del1 ret end 5. Simpanlah program yang anda ketik dan beri nama : prog12a.asm

6. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

7. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

8. Lakukan pengamatan pada LED 9. Gantilah data tersebut untuk mengedipkan sebuah LED, dua buah LED dan

seterusnya,sesuai tabel berikut ini.

D0 D1 D2 D3 D4 D5 D6 D7 LED YANG PADAM

1 1 1 1 1 1 1 0

1 1 1 1 1 1 0 0

1 1 1 1 1 0 0 0

1 1 1 1 0 0 0 0

1 1 1 0 0 0 0 0

1 1 0 0 0 0 0 0

1 0 0 0 0 0 0 0

Subrutin waktu Tunda/delay

Page 8: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 8

Percobaan 1.3. Instruksi Setb dan Clr Pada percobaan ini, sebuah LED atau lebih dapat dihidupkan atau dimatikan dengan perintah setb dan clr. Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hubungkan modul Microcontroller Trainer dengan power supply +5V 2. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 3. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program 4. Ketik program berikut ini:

Org 0h Start: Clr P0.0 ; Kirim logika ‘0’ ke P0.0 Clr P0.1 ; Kirim logika ‘0’ ke P0.1

Clr P0.2 ; Kirim logika ‘0’ ke P0.2 Clr P0.3 ; Kirim logika ‘0’ ke P0.3 Clr P0.4 ; Kirim logika ‘0’ ke P0.4

Clr P0.5 ; Kirim logika ‘0’ ke P0.5 Clr P0.6 ; Kirim logika ‘0’ ke P0.6 Clr P0.7 ; Kirim logika ‘0’ ke P0.7 Call Delay ; Memanggil waktu tunda

Setb P0.0 ; Kirim logika ‘1’ ke P0.0 Setb P0.1 ; Kirim logika ‘1’ ke P0.1 Setb P0.2 ; Kirim logika ‘1’ ke P0.2 Setb P0.3 ; Kirim logika ‘1’ ke P0.3 Setb P0.4 ; Kirim logika ‘1’ ke P0.4 Setb P0.5 ; Kirim logika ‘1’ ke P0.5 Setb P0.6 ; Kirim logika ‘1’ ke P0.6 Setb P0.7 ; Kirim logika ‘1’ ke P0.7

Call Delay ; Memanggil waktu tunda Sjmp start ; lompat ke start ; Delay: mov R1,#255 Del1: mov R2,#255 Del2: djnz R2,del2 djnz R1,del1 ret end 5. Simpanlah program yang anda ketik dan beri nama : prog13a.asm

6. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

7. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

8. Lakukan pengamatan pada LED 9. Rencanakan program untuk mengedipkan dua buah LED, tiga buah LED dan seterusnya dengan instruksi Setb dan Clr.

Percobaan 1.4. LED Berjalan dengan Instruksi RL/ RR ( Rotate Left dan Right ) Pada percobaan ini, sebuah LED akan berjalan dari kiri ke kanan dan sebaliknya, program ini memanfaatkan instruksi RL dan RR. Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hubungkan modul Microcontroller Trainer dengan power supply +5V

Page 9: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 9

2. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 3. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Gambar 1.6. Diagram alir percobaan 1.3

4. Ketik program berikut ini:

Org 0H Start: Mov A,#11111110b;isi A dengan 11111110b Mov R0,#7 ;isi R0 dengan 7 Kiri: Mov P0,A ;copy A ke P0 Call Delay ;panggil sub rutine delay RL A ;data A diputar ke kiri DEC R0 ;data R0 dikurangi 1 CJNE R0,#0,Kiri ;bandingkan R0 dg 0, if NE jump kiri ; Mov R0,#7 Kanan: Mov P0,A Call Delay RR A ;data A diputar ke kanan DEC R0 ;data RO dikurangi 1 CJNE R0,#0,Kanan ;bandingkan R0 dg 0, if NE jump kanan Sjmp Start ; Delay: mov R1,#255 Del1: mov R2,#255 Del2: djnz R2,del2 djnz R1,del1 ret end

Page 10: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 10

5. Simpanlah program yang anda ketik dan beri nama : prog14a.asm

6. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

7. Lakukan pemrograman mikrokontroller dengan menggunakan Program Downloader 8. Lakukan pengamatan pada LED Soal Tantangan:

1. Lakukan perubahan pada program tersebut untuk menjalankan/ menggerakkan dua buah LED kekiri dan kekanan,

2. Lakukan modifikasi program 1.4. tersebut dengan mengganti instruksi CJNE dan DEC dengan instruksi DJNZ.

Soal Kuis (sebelum kegiatan praktek):

1. Pelajari instruksi bahasa assembly tersebut, fungsi dan tatacara penulisan instruksi, struktur program.

2. Pelajari dengan benar rangkaian elektronik pada percobaan ini, LED

Page 11: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 11

PERCOBAAN 2 SAKLAR PUSH BUTTON

TUJUAN:

1 Mahasiswa memahami rangkaian mikrokontroller dengan interface ke saklar 2. Mahasiswa dapat memahami program assembly untuk mengambil data saklar dan

mengeluarkan data ke LED. 3. Mahasiswa memahami beberapa instruksi assembly dasar, MOV, Setb, Clr, RL dan

RR.

DASAR TEORI Instruksi Mov A, P2 Contoh: Mov A, P2; pada instruksi ini, data pada port P2 akan di copy ke register Akumulator Instruksi JB, Jump if Bit set Contoh: MasihDiSini: JB P2.0, MasihDiSini Call AyoBelajarRek ............... ............... Pada instruksi tersebut, menyatakan bahwa bit P2.0 akan diuji, apakah berlogika 1(satu), bila ya maka program akan melompat ke label MasihDiSini, apabila bit P2.0 berlogika 0(nol), maka program akan melanjutkan instruksi dibawahnya (subrutin AyoBelajarRek) GAMBAR:

SW1

SW8

P2.7..P2.0

(a)

Page 12: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 12

D1

P0.0..P0.7

D8

VCC

J3

EN LED12

( b )

Gambar 2.2. Rangkaian Interface (a) Push Button dan LED (b)

Pada gambar 2.2.a tersebut tampak rangkaian push button, bila saklar ditekan maka port sesuai dengan bit tersebut akan mendapat logika low ‘0’ dan sebaliknya bila saklar tidak ditekan maka port tersebut akan mendapat logika high ‘1’.

Percobaan 2.1. Mengambil Data Saklar dan Mengeluarkan ke LED Pada percobaan ini, LED akan nyala bila saklar ditekan sesuai dengan bit saklar yang ditekan. Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Buka jumper pada EN_DAC apabila sedang terhubung. 2. Hubungkan modul Microcontroller Trainer dengan power supply +5V 3. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Gambar 2.3. Diagram alir percobaan 2.1

5. Ketik program berikut ini:

Org 0h Start: Mov A, P2 ;copy data P2 dan Simpan ke A Mov P0, A ;Kirim data A ke P0 sjmp start ;lompat ke start

Page 13: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 13

end 6. Simpanlah program yang anda ketik dan beri nama : prog21a.asm

7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

9. Lakukan pengamatan pada LED.

Saklar Kondisi LED yang Nyala (D1-D2-D3-D4-D5-D6-D7-D8 SW1

SW2 SW3

SW4

SW5

SW6

SW7 SW8

Percobaan 2.2. Mengatur Arah Gerak LED Ke Kanan-Kiri dengan Saklar Push Button P2.0 dan P2.1 Pada percobaan ini, LED akan berjalan kekanan atau kekiri mengikuti penekanan tombol P2.0 (arah kiri) atau P2.1 (arah kanan). Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hubungkan modul Microcontroller Trainer dengan power supply +5V 2. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 3. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Gambar 2.4. Diagram alir percobaan 2.2

4. Ketik program berikut ini: org 0h

CekP20: JB P2.0,CekP21 ; Menguji bit P2.0, apakah adalah logika '1' call RLeft ; Jika P2.0=0, maka LED putar kiri ; sjmp CekP20 ; jump forever to CekP20 CekP21: JB P2.1,CekP20 ; Menguji bit P2.1, apakah adalah logika '1' call RRight ; Jika P2.1=0, maka LED putar kanan sjmp CekP20 ; jump forever to CekP2.0

Page 14: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 14

;====================================================== ;Subrutin ini digunakan untuk menggerakkan LED Ke Kanan ;====================================================== RLeft: mov A,#11111110b ;send data 11111110 to Acc RLeft1: mov P0,A ;send data A to P0 call delay ;call delay time JB P2.1,RLeft2 ;Menguji bit P2.1, apakah adalah logika '1' sjmp EndRLeft ;Jika P2.1=0, maka lompat ke EndRLeft RLeft2: RL A ;data A di putar ke kiri sjmp RLeft1 ;lompat ke Rleft1 EndRLeft: ret ; ;==================================================== ;Subrutin ini digunakan untuk menggerakkan LED Ke Kiri ;==================================================== RRight: mov A,#01111111b ;send data to Acc RRight1: mov P0,A ;send data to P0 call delay ;call delay time JB P2.0,RRight2 ;Menguji bit P2.0, apakah adalah logika '1' sjmp EndRRight ;Jika P2.0=0, maka lompat ke EndRRight RRight2: RR A ;data A putar ke kanan sjmp RRight1 ;lompat ke Rright1 EndRRight: ret ;============================================= ;subroutine delay time ;============================================= delay: mov R1,#255 del1: mov R2,#255 del2: djnz R2,del2 djnz R1,del1 ret end 5. Simpanlah program yang anda ketik dan beri nama : prog22a.asm

6. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

7. Lakukan pemrograman mikrokontroller dengan menggunakan Downloader Software ( Lihat Petunjuk Penggunaan)

Soal Tantangan: 1. Lakukan modifikasi pada percobaan 2.2. tersebut sesuai dengan dengan mengganti port

dengan P2.2 ( putar kanan ) dan P2.3 ( putar kiri ). 2. Buatlah suatu percobaan untuk menghidupkan dan mematikan sebuah led yang

terhubung ke P0.0, dengan menggunakan sebuah saklar P2.0, sehingga apabila saklar ditekan sekali, LED nyala, dan ditekan berikutnya maka LED akan padam.

Page 15: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 15

Percobaan 2.3. Setting Up/Dn dan Enter dengan display LED Pada percobaan ini, LED yang ON akan bertambah atau berkurang mengikuti penekanan tombol P2.1 (UP) atau P2.2 (DN). LED akan berhenti bertambah atau atau berkurang bila ditakan tombol P2.0 ( ENTER). Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hubungkan modul Microcontroller Trainer dengan power supply +5V 2. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 3. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Gambar 2.5. Diagram alir percobaan 2.3 4. Ketik program berikut ini: org 0h start: mov R7,#1 ;inisialisasi data setting Setup: mov A,R7 ;simpan data R7 ke A cpl A ;komplemen A,

Page 16: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 16

mov P0,A ;output data ke LED jnb p2.0,getout;bila sw1(P2.0) ditekan mk getout(selesai) jb P2.1,SetDn ;bila sw2(P2.1) ditekan mk INC R7 inc R7 ;R7:=R7+1 acall delay ;waktu tunda, antar penekanan tombol cjne R7,#100d,setup;deteksi apakah setting=100d mov R7,#1 ;reset R7 -> 1 sjmp Setup ; SetDn: Mov A,R7 ;simpan data R7 ke A cpl A ;komplemen A, mov P0,A ;output data ke LED jnb P2.0,getout;bila sw1(P2.0) ditekan mk getout(selesai) jb p2.2,Setup ;bila sw2(P2.1) ditekan mk INC R7 dec R7 ;R7:=R7-1 acall delay ;waktu tunda lama penekanan tombol cjne R7,#0d,setDn;deteksi apakah setting=0d mov R7,#1d ;reset R7 -> 1 sjmp Setdn getout: sjmp getout ; delay: mov R0,#255 delay1: mov R2,#255 djnz R2,$ djnz R0,delay1 ret end 5. Simpanlah program yang anda ketik dan beri nama : prog23a.asm

6. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

7. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

8. Lakukan pengamatan pada LED. Soal Tantangan:

1. Lakukan modifikasi pada percobaan tersebut sesuai dengan dengan mengganti port tersebut dengan P2.5 (Setting UP), P2.6 (Setting Dn) dan P2.7 (Enter).

Soal Kuis:

1. Pelajari instruksi assembly pada percobaan ini, fungsi dan tata cara penulisannya

2. Pelajari rangkaian elektronik pada percobaan ini

Page 17: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 17

PERCOBAAN 3 DISPLAY 7 SEGMEN

TUJUAN: 1. Mahasiswa memahami rangkaian interface mikrokontroller dengan 7 segmen 2. Mahasiswa dapat memahami program assembly untuk menampilkan data ke 7 segment 3. Mahasiswa memahami beberapa instruksi assembly dasar, MOV, Setb, Clr, dan waktu

tunda. DASAR TEORI

VCC

aa

VCC

ee

c

FCS 9013

PNP

7 x 220 ohm

d

f

FCS 9013

b

Common Anoda

PNP

FCS 9013

VCC

FCS 9013

VCC

P0.6..P0.0

FCS 9013

PNP

VCC

FCS 9013

PNP

g

Y7..Y0

g

f

VCC

FCS 9013

PNP

c

8 x 1k ohm

VCC

PNP

d

FCS 9013

VCC

b

PNPPNP

(a)

VCC

P3.6 U8

74LS138

123

645

15141312111097

ABC

G1G2AG2B

Y0Y1Y2Y3Y4Y5Y6Y7

P3.5

R28

10K

J2

EN 7 SEGMEN12

Y7..Y0

P3.7

VCC

(b)

Gambar 3.1. (a) Rangkaian display 7 segmen (b) rangkaian dekoder 74ls138

Tabel 3.1. Tabel kebenaran 74LS138

SELEKTOR ENABLE OUTPUT C B A G1 /G2A /G2B Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7

0 0 0 1 0 0 0 1 1 1 1 1 1 1 0 0 1 1 0 0 1 0 1 1 1 1 1 1

0 1 0 1 0 0 1 1 0 1 1 1 1 1

0 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 0 1 0 0 1 1 1 1 0 1 1 1

1 0 1 1 0 0 1 1 1 1 1 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 1

1 1 1 1 0 0 1 1 1 1 1 1 1 0

Y0

Page 18: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 18

Pada tabel kebenaran tersebut tampak bahwa seven segmen yang hidup tergantung pada output dari dekoder 74LS138, yang sedang mengeluarkan logika low ”0”, sehingga dari 8 buah display tersebut, selalu hanya satu display yang akan dihidupkan. Agar display tampak nyala secara bersamaan maka ketiga display tersebut harus dihidupkan secara bergantian dengan waktu tunda tertentu. Pada gambar tersebut seven segment commont anoda dikendalikan dengan menggunakan transistor PNP melalui decoder 74LS138, apabila ada logika low pada basis transistor, maka 7 segment akan nyala dan sebaliknya akan padam.

Gambar 3.2 Modul 7 Segment tunggal Tabel 3.2. Data Display 7 Segmen

P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 g f e d c b a

Display

1 0 0 0 0 0 0 0

1 1 1 1 0 0 1 1

0 1 0 0 1 0 0 2

0 1 1 0 0 0 0 3

:

: 0 0 0 1 0 0 0 A

0 0 0 0 0 1 1 b

1 0 0 0 1 1 0 C

:

Pada tabel tersebut tampak bahwa untuk menghidupkan sebuah segmen, harus dikirimkan data logika low ”0” dan sebaliknya untuk mematikan segmen, harus dikirimkan data logika high ”1”.

Percobaan 3.1. Tulis Karakter “A” pada 7 Segmen ( Display 1 ) Pada percobaan ini, karakter ‘A’ akan ditampilkan pada 7 Segmen Display 1 Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hubungkan jumper 7Segmen_EN, untuk mengaktifkan Decoder 74LS138 2. Hubungkan modul Microcontroller Trainer dengan power supply +5V 3. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Page 19: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 19

Gambar 3.3 Diagram alir percobaan 3.1

5. Ketik program berikut ini:

org 0h

start: clr P3.5 ; P3.5 = ‘0’ clr P3.6 ; P3.6 = ‘0’ clr P3.7 ; P3.7 = ‘0’ mov P0,#10001000b ; isi P0 dg. 10001000. Cetak Karakter 'A' sjmp start ; Lompat ke start end 6. Simpanlah program yang anda ketik dan beri nama : prog31a.asm

7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

9. Lakukan pengamatan pada 7 segmen. 10.Lakukan modifikasi pada program tersebut untuk mencetak karakter lain, sesuai tabel:

No Nama Karakter Posisi Display 1 C Display 2

2 E Display 5

3 3 Display 8

Percobaan 3.2. Tulis Tiga Karakter ”AbC” pada 7 Segmen Pada percobaan ini, karakter ‘AbC’ akan ditampilkan pada 7 Segmen Display 1, Display 2 dan Display 3 secara berturutan Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hubungkan jumper 7Segmen_EN, untuk mengaktifkan Decoder 74LS138 2. Hubungkan modul Microcontroller Trainer dengan power supply +5V 3. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Page 20: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 20

Gambar 3.4 Diagram alir percobaan 3.2

5. Ketik program berikut ini:

org 0h

start: clr P3.5 ; P3.5 = '0' clr P3.6 ; P3.6 = '0' clr P3.7 ; P3.7 = '0' mov P0, #10001000b ; isi P0 dg. 10001000. Cetak Karakter 'A' call delay ; Panggil Waktu Tunda ; setb P3.5 ; P3.5 = '1' clr P3.6 ; P3.6 = '0' clr P3.7 ; P3.7 = '0' mov P0,#10000011b ; isi P0 dg.100000011. Cetak Karakter 'b' call delay ; Panggil Waktu Tunda

Page 21: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 21

; clr P3.5 ; P3.5 = '0' setb P3.6 ; P3.6 = '1' clr P3.7 ; P3.7 = '0' mov P0,#11000110b ; Cetak Karakter 'C' call delay ; Panggil Waktu Tunda ; sjmp start ; Lompat ke start ;============================================= ;subroutine delay created to rise delay time ;============================================= delay: mov R1,#25 del1: mov R2,#25 del2: djnz R2,del2 djnz R1,del1 ret end 6. Simpanlah program yang anda ketik dan beri nama : prog32a.asm

7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

9. Lakukan pengamatan pada 7 segmen. 10.Lakukan modifikasi pada program tersebut untuk mencetak karakter lain, sesuai tabel:

No Nama Karakter Posisi Display 1 HAI Display 1, Display 2, Display 3 2 Ay0 Display 3, Display 4, Display 5

3 OLE Display 6, Display 7, Display 8

Percobaan 3.3. Tulis 8 Karakter pada 7 Segmen Pada percobaan ini, karakter ‘12345678’ akan ditampilkan pada 7 Segmen Display 1, Display 2 dan Display 3 s/d Display 8 secara berturutan : Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hubungkan jumper 7Segmen_EN, untuk mengaktifkan Decoder 74LS138 2. Hubungkan modul Microcontroller Trainer dengan power supply +5V 3. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program 5. Ketik program berikut ini:

org 0h

start: clr P3.5 clr P3.6 clr P3.7 mov P0,#11111001b ; Cetak Karakter '1' call delay ; setb P3.5 clr P3.6 clr P3.7

Page 22: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 22

mov P0,#10100100b ; Cetak Karakter '2' call delay ; clr P3.5 setb P3.6 clr P3.7 mov P0,#10110000b ; Cetak Karakter '3' call delay ; setb P3.5 setb P3.6 clr P3.7 mov P0,#10011001b ; Cetak Karakter '4' call delay ; clr P3.5 clr P3.6 setb P3.7 mov P0,#10010010b ; Cetak Karakter '5' call delay ; setb P3.5 clr P3.6 setb P3.7 mov P0,#10000010b ; Cetak Karakter '6' call delay ; clr P3.5 setb P3.6 setb P3.7 mov P0,#11111000b ; Cetak Karakter '7' call delay ; setb P3.5 setb P3.6 setb P3.7 mov P0,#10000000b ; Cetak Karakter '8' call delay ; sjmp start ; Lompat ke Start ;============================================= ;subroutine delay created to rise delay time ;============================================= delay: mov R1,#25 del1: mov R2,#25 del2: djnz R2,del2 djnz R1,del1 ret end 6. Simpanlah program yang anda ketik dan beri nama : prog33a.asm

Page 23: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 23

7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

9. Lakukan pengamatan pada 7 Segmen. 10. Lakukan modifikasi pada program tersebut untuk mencetak karakter lain, sesuai tabel:

No Nama Karakter 1 A b C d E F G H 2 9 8 7 6 5 4 3 2

3 J K L n O P r S

Soal Tantangan:

1. Buatlah tulisan data pada 7 Segmen, dan buatlah tulisan tersebut berjalan ke kanan. 2. Buatlah tuisan Surabaya pada 7 segmen, dan buatlah tulisan tersebut berjalan ke kiri.

Percobaan 3.4. Setting Up/ Dn dan Enter dengan Display ke 7 Segmen. Pada percobaan ini, akan dibuat suatu simulasi setting UP (P2.1)/ DN (P2.2) dan penekanan tombol Enter (P2.0), dan di displaykan ke display 7 Segmen. Data display akan bertambah dari 00 s/d 99 atau berkurang dari 99 s/d 00, sesuai dengan penekanan pada tombol UP/ DN.Bila ditekan tombol Enter, maka tombol UP/ DN tidak akan berfungsi lagi. Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hubungkan jumper 7Segmen_EN, untuk mengaktifkan Decoder 74LS138 2. Hubungkan modul Microcontroller Trainer dengan power supply +5V 3. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Page 24: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 24

Gambar 3.5. Diagram alir percobaan 3.4. 5. Ketik program berikut ini: Org 0h ratusan equ 30h puluhan equ 31h satuan equ 32h ; start: mov R7,#1 ;inisialisasi data setting Setup: mov A,R7 ;simpan data R7 ke A call bin2dec call display2sevensegmen jnb p2.0,getout;bila sw1(P2.0) ditekan mk getout(selesai) jb P2.1,SetDn ;bila sw2(P2.1) ditekan mk INC R7 inc R7 ;R7:=R7+1 acall delay ;waktu tunda lama penekanan tombol cjne R7,#100d,setup;deteksi apakah setting=100d mov R7,#1 ;reset R7 -> 1 sjmp Setup ;

Page 25: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 25

SetDn: Mov A,R7 ;simpan data R7 ke A call bin2dec call display2sevensegmen jnb P2.0,getout;bila sw1(P2.0) ditekan mk getout(selesai) jb p2.2,Setup ;bila sw2(P2.1) ditekan mk INC R7 dec R7 ;R7:=R7-1 acall delay ;waktu tunda lama penekanan tombol cjne R7,#0d,setDn;deteksi apakah setting=0d mov R7,#99d ;reset R7 -> 99 sjmp Setdn getout:sjmp getout ; Display2SevenSegmen: mov A,puluhan mov DPTR,#Data7segmen movc A,@A+DPTR mov P0,A clr P3.5 ; Setb P3.6 Setb P3.7 call delay ; mov A,satuan mov DPTR,#Data7segmen movc A,@A+DPTR mov P0,A Setb P3.5 ; Setb P3.6 Setb P3.7 call delay ret ; Bin2Dec: mov b,#100d div ab mov ratusan,a mov a,b mov b,#10d div ab mov puluhan,a mov satuan,b ret delay: mov R0,#0 delay1:mov R2,#0fh djnz R2,$ djnz R0,delay1 ret ; Data7segmen: db 11000000b,11111001b,10100100b,10110000b,10011001b db 10010010b,10000010b,11111000b,10000000b,10010000b end

Page 26: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 26

6. Simpanlah program yang anda ketik dan beri nama : prog34a.asm

7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

9. Lakukan pengamatan pada 7 Segmen. Soal Tantangan:

1. Rencanakan program untuk membatasi setting Up dan Down, batas bwah 30 dan batas atas 40

2. Kembangkan program tersebut, apabila tombol ENT ditekan maka akan menampilkan tulisan OyE

Soal Kuis:

1. Pelajari tentang sebuah seven segmen, jenis dan persamaannya (apabila dibangun dengan LED)

2. Pelajari tentang Dekoder 74LS138, fungsi dan penggunaan masing-masing pin 3. Pelajari instruksi assembly yang diperlukan pada pemrograman ini

Page 27: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 27

PERCOBAAN 4 LCD KARAKTER

TUJUAN: 1. Mahasiswa memahami rangkaian interface mikrokontroller dengan LCD Karakter 2 x 16 2. Mahasiswa dapat memahami program assembly untuk menampilkan data ke LCD Karakter

2 x 16 3. Mahasiswa memahami beberapa instruksi assembly dasar, MOV, Setb, Clr, dan waktu

tunda. 4. Mahasiswa memahami mencetak karakter pada posisi baris dan kolom tertentu

DASAR TEORI

VSS

2

1116

7VCC

D2

EN

LCD Character

3

14

D5

8

1

GND

10k

Potensio Multiturn

D1

P3.7

D74

13

12

9BPL

6

P0.7..P0.0

2 X 16

VCC

D4

J3

EN LCD 1 2

10

D1

RSP3.6

D3

D6

D0

15

Gambar 4.1. Rangkaian interface ke LCD Karakter 2 x16

Modul LCD Character dapat dengan mudah dihubungkan dengan mikrokontroller seperti AT89S51. LCD yang akan kita praktikumkan ini mempunyai lebar display 2 baris 16 kolom atau biasa disebut sebagai LCD Character 2x16, dengan 16 pin konektor, yang didifinisikan sebagai berikut:

Gambar 4.2. Modul LCD Karakter 2x16

Page 28: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 28

Tabel 4.1 Pin dan Fungsi

PIN Name Function

1 VSS Ground voltage

2 VCC +5V

3 VEE Contrast voltage

4 RS Register Select 0 = Instruction Register 1 = Data Register

5 R/W Read/ Write, to choose write or read mode 0 = write mode 1 = read mode

6 E Enable 0 = start to lacht data to LCD character 1= disable

7 DB0 LSB

8 DB1 -

9 DB2 -

10 DB3 -

11 DB4 -

12 DB5 -

13 DB6 -

14 DB7 MSB

15 BPL Back Plane Light

16 GND Ground voltage

Display karakter pada LCD diatur oleh pin EN, RS dan RW:

Jalur EN dinamakan Enable. Jalur ini digunakan untuk memberitahu LCD bahwa anda sedang mengirimkan sebuah data. Untuk mengirimkan data ke LCD, maka melalui program EN harus dibuat logika low “0” dan set pada dua jalur kontrol yang lain RS dan RW. Ketika dua jalur yang lain telah siap, set EN dengan logika “1” dan tunggu untuk sejumlah waktu tertentu ( sesuai dengan datasheet dari LCD tersebut ) dan berikutnya set EN ke logika low “0” lagi.

Jalur RS adalah jalur Register Select. Ketika RS berlogika low “0”, data akan dianggap sebagi sebua perintah atau instruksi khusus ( seperti clear screen, posisi kursor dll ). Ketika RS berlogika high “1”, data yang dikirim adalah data text yang akan ditampilkan pada display LCD. Sebagai contoh, untuk menampilkan huruf “T” pada layar LCD maka RS harus diset logika high “1”.

Jalur RW adalah jalur kontrol Read/ Write. Ketika RW berlogika low (0), maka informasi pada bus data akan dituliskan pada layar LCD. Ketika RW berlogika high ”1”, maka program akan melakukan pembacaan memori dari LCD. Sedangkan pada aplikasi umum pin RW selalu diberi logika low ”0”.

Page 29: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 29

Pada akhirnya, bus data terdiri dari 4 atau 8 jalur ( bergantung pada mode operasi yang dipilih oleh user ). Pada kasus bus data 8 bit, jalur diacukan sebagai DB0 s/d DB7.

Beberapa perintah dasar yang harus dipahami adalah inisialisasi LCD Character,

Function Set Mengatur interface lebar data, jumlah dari baris dan ukuran font karakter

KONTROL DATA

RS EN R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 pulse 0 0 0 1 DL N F X X

CATATAN: X : Don’t care DL: Mengatur lebar data

DL=1, Lebar data interface 8 bit ( DB7 s/d DB0) DL=0, Lebar data interface 4 bit ( DB7 s/d DB4)

Ketika menggunakan lebar data 4 bit, data harus dikirimkan dua kali N=1, Display dua baris N=0, Display satu baris

Entry Mode Set Mengatur increment/ decrement dan mode geser

KONTROL DATA

RS EN R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 pulse 0 0 0 0 0 0 1 I/D S

Catatan: I/D: Increment/ decrement dari alamat DDRAM dengan 1 ketika kode karakter dituliskan ke

DDRAM. I/D = “0”, decrement I/D= “1”, increment S: Geser keseluruhan display kekanan dan kekiri S=1, geser kekiri atau kekanan bergantung pada I/D S=0, display tidak bergeser

Display On/ Off Cursor Mengatur status display ON atau OFF, cursor ON/ OFF dan fungsi Cursor Blink

KONTROL DATA

RS EN R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 pulse 0 0 0 0 0 1 D C B

D : Mengatur display D = 1, Display is ON D = 0, Display is OFF

Page 30: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 30

Pada kasus ini data display masih tetap berada di DDRAM, dan dapat ditampilkan kembali secara langsung dengan mengatur D=1.

C : Menampilkan kursor C = 1, kursor ditampilkan C = 0, kursor tidak ditampilkan B : Karakter ditunjukkan dengan kursor yang berkedip B=1, kursor blink

Clear Display Perintah ini hapus layar

KONTROL DATA

RS EN R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 pulse 0 0 0 0 0 0 0 0 1

Geser Kursor dan Display Geser posisi kursor atau display ke kanan atau kekiri tanpa menulis atau baca data display. Fungsi ini digunakan untuk koreksi atau pencarian display

KONTROL DATA

RS EN R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 pulse 0 0 0 0 1 D/C R/L X X

Catatan : x = Dont care

D/C R/L Note

0 0 Geser posisi kursor ke kiri

0 1 Geser posisi kursor ke kanan

1 0 Geser keseluruhan display ke kiri

1 1 Geser keseluruhan display ke kanan

Memori LCD 1. DDRAM ( Display Data RAM ) Memori DDRAM digunakan untuk menyimpan karakter yang akan ditampilkan. Semua teks yang kita tuliskan ke modul LCD adalah disimpan didalam memory ini, dan modul LCD secara berturutan membaca memory ini untuk menampilkan teks ke modul LCD itu sendiri.

Page 31: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 31

Gambar 4.3. Lokasi memori display LCD Karakter

Pada peta memori tersebut, daerah yang berwarna kuning ( 00 s/d 0F dan 40 s/d 4F ) adalah display yang tampak. Sebagaimanan yang anda lihat, jumlahnya sebanyak 16 karakter per baris dengan dua baris. Angka pada setiap kotak adalah alamat memori yang bersesuaian dengan posisi dari layar. Demikianlah karakter pertama di sudut kiri atas adalah menempati alamah 00h. Posisi karakter berikutnya adalah alamat 01h dan seterusnya.

Akan tetapi, karakter pertama dari baris 2 sebagaimana yang ditunjukkan pada peta memori adalah pada alamat 40h. Dimikianlah kita perlu untuk mengirim sebuah perintah ke LCD untuk mangatur letak posisi kursor pada baris dan kolom tertentu. Instruksi Set Posisi Kursor adalah 80h. Untuk ini kita perlu menambahkan alamat lokasi dimana kita berharap untuk menempatkan kursor.Sebagai contoh, kita ingin menampilkan kata ”World” pada baris ke dua pada posisi kolom ke sepuluh. Sesuai peta memori, posisi karakter pada kolom 11 dari baris ke dua, mempunyai alamat 4Ah, sehingga sebelum kita tulis kata ”World” pada LCD, kita harus mengirim instruksi set posisi kursor, dan perintah untuk instruksi ini adalah 80h ditambah dengan alamat 80h+4Ah =0Cah. Sehingga dengan mengirim perintah Cah ke LCD, akan menempatkan kursor pada baris kedua dan kolom ke 11 dari DDRAM.

Page 32: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 32

2. CGROM ( Character Generator ROM ) Sebuah peta karakter yang dapat ditampilkan, sesuai dengan lokasi dari masing-masing karakter.

Page 33: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 33

INISIALISASI

Page 34: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 34

Sebelum kita dapat menggunakan modul LCD, kita harus melakukan inisialisasi dan mengkonfigurasikannya. Hal ini dijalankan dengan mengirimkan sejumlah instruksi ke LCD. Antara lain: pengaturan lebar data interface 8 bit atau 4 bit data bus, pemilihan ukuran font karakter 5x8 atau 5x7 dan lain-lain, dengan instruksi sebagai berikut.

Init_lcd: mov r1,#00000001b ;Display clear call write_inst ;EN=pulse dan RS=0 mov r1,#00111000b ;Function set, ;Data 8 bit,2 line font 5x7 call write_inst ;Set bit EN=pulse dan RS=0 mov r1,#00001100b ;Display on, ;cursor off,cursor blink off call write_inst ;EN=pulse dan RS=0 mov r1,#00000110b ;Entry mode, Set increment call write_inst ret

Percobaan 4.1. Tulis Sebuah Karakter pada LCD Karakter Pada percobaan ini, karakter ‘A’ akan ditampilkan pada LCD Karakter Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Pasang jumper LCD_EN, yang berfungsi untuk memberikan power supply +5V 2. Hubungkan modul Microcontroller Trainer dengan power supply +5V 3. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Page 35: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 35

Gambar 4.4. Diagram alir (a) rutin utama cetak karakter “A”, (b) subrutin inisialisasi LCD karakter pada percobaan 4.1

5. Ketik program berikut ini:

org 0h

call init_LCD start: mov R1,#80h ; Lokasi Display RAM, Row=1 Col=1 call write_inst ; panggil tulis instruksi mov R1,#'A' ; Cetak Karakter A call write_data ; panggil tulis data stop: sjmp stop Init_lcd: mov r1,#00000001b ;Display clear call write_inst mov r1,#00111000b ;Function set,Data 8 bit,2 line font 5x7 call write_inst mov r1,#00001100b ;Display on, ;cursor off,cursor blink off call write_inst mov r1,#00000110b ;Entry mode, Set increment call write_inst ret ; Write_inst:

Page 36: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 36

clr P3.6 ; P3.6 = RS =0 mov P0,R1 ; copy R1 ke P0 setb P3.7 ; P3.7 =EN = 1 call delay ; call delay time clr P3.7 ; P3.7 =EN = 0 ret ; Write_data: setb P3.6 ; P3.6 = RS =1 mov P0,R1 ; copy R1 ke P0 setb P3.7 ; P3.7 =EN = 1 call delay ; call delay time clr p3.7 ; P3.7 =EN = 0 ret ; delay: mov R0,#0 delay1:mov R7,#0fh djnz R7,$ djnz R0,delay1 ret end 6. Simpanlah program yang anda ketik dan beri nama : prog41a.asm

7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

9. Lakukan pengamatan pada karakter yang tercetak pada LCD. 10. Lakukan modifikasi pada program tersebut untuk mencetak karakter lain, sesuai tabel:

No Nama Karakter Posisi Display 1 1 Row 1, Col 2 2 Z Row 1, Col 8

3 & Row 2, Col 12

Percobaan 4.2. Tulis Delapan Karakter pada LCD Karakter Pada percobaan ini, kalimat ” Welcome” akan ditampilkan pada LCD Karakter pada baris 1 dan colom 1 Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Pasang jumper LCD_EN, yang berfungsi untuk memberikan power supply +5V 2. Hubungkan modul Microcontroller Trainer dengan power supply +5V 3. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program 5. Ketik program berikut ini:

org 0h call init_LCD start: mov R1,#80h ; Lokasi Display RAM, Row=1 Col=1 call write_inst mov R1,#'W' call write_data mov R1,#'e'

Page 37: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 37

call write_data mov R1,#'l' call write_data mov R1,#'c' call write_data mov R1,#'o' call write_data mov R1,#'m' call write_data mov R1,#'e' call write_data stop: sjmp stop Init_lcd: mov r1,#00000001b ;Display clear call write_inst mov r1,#00111000b ;Function set, Data 8 bit,2 line font 5x7 call write_inst mov r1,#00001100b ;Display on, cursor off,cursor blink off call write_inst mov r1,#00000110b ;Entry mode, Set increment call write_inst ret ; Write_inst: clr P3.6 ; P3.6 = RS =0 mov P0,R1 ; copy R1 ke P0 setb P3.7 ; P3.7 =EN = 1 call delay ; call delay time clr P3.7 ; P3.7 =EN = 0 ret ; Write_data: setb P3.6 ; P3.6 = RS =1 mov P0,R1 ; copy R1 ke P0 setb P3.7 ; P3.7 =EN = 1 call delay ; call delay time clr p3.7 ; P3.7 =EN = 0 ret ; delay: mov R0,#0 delay1:mov R7,#0fh djnz R7,$ djnz R0,delay1 ret end 6. Simpanlah program yang anda ketik dan beri nama : prog42a.asm

7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

Page 38: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 38

9. Lakukan pengamatan pada display LCD Karakter 10.Lakukan modifikasi pada program tersebut untuk mencetak karakter lain, sesuai tabel:

No Nama Karakter Posisi Display 1 Selamat Datang Baris 1, Colom 1 2 Mikrokontroller Baris 2, Colom 1

Percobaan 4.3. Tulis Karakter Dengan Look Up Table Pada percobaan ini, kalimat ”Welcome home” akan ditampilkan pada layar LCD Karakter dengan menggunakan look up table. Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Pasang jumper LCD_EN, yang berfungsi untuk memberikan power supply +5V 2. Hubungkan modul Microcontroller Trainer dengan power supply +5V 3. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program 5. Ketik program berikut ini:

org 0h

call init_LCD start: call write_char stop: sjmp stop ; write_char: mov dptr,#word1 ;DPTR = [ address word1 ] mov r3,#16 ;R3=16,number character to be display mov r1,#80h ;R1=80h,address DDRAM start position call write_inst ; write1:clr a ; A = 0 movc a,@a+dptr ; A = [A+ DPTR] mov r1,A ; R1 = A inc dptr ; DPTR = DPTR +1 call write_data; djnz r3,write1 ; R3 = R3-1, ret ; Init_lcd: mov r1,#00000001b ;Display clear call write_inst ; mov r1,#00111000b ;Function set, Data 8 bit,2 line font 5x7 call write_inst ; mov r1,#00001100b ;Display on, cursor off,cursor blink off call write_inst mov r1,#00000110b ;Entry mode, Set increment call write_inst ret ; Write_inst: clr P3.6 ; P3.6 = RS =0

Page 39: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 39

mov P0,R1 ; copy R1 ke P0 setb P3.7 ; P3.7 =EN = 1 call delay ; call delay time clr P3.7 ; P3.7 =EN = 0 ret ; Write_data: setb P3.6 ; P3.6 = RS =1 mov P0,R1 ; copy R1 ke P0 setb P3.7 ; P3.7 =EN = 1 call delay ; call delay time clr p3.7 ; P3.7 =EN = 0 ret ; delay: mov R0,#0 delay1:mov R7,#0fh djnz R7,$ djnz R0,delay1 ret ; word1: DB ' Welcome Home '; Karakter yang disimpan di ROM end 6. Simpanlah program yang anda ketik dan beri nama : prog43a.asm

7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

9. Lakukan pengamatan pada LCD. 10. Lakukan modifikasi pada program tersebut untuk mencetak karakter lain, sesuai tabel:

No Nama Karakter Posisi Display 1 Selamat Datang Baris 1, Colom 1

2 Mikrokontroller Baris 2, Colom 1

Soal Tantangan: 1. Dengan memanfaatkan instruksi shift display dan cursor, cetaklah kata Surabaya yang

dapat bergeser kekanan sebanyak 10 x dan bergeser kekiri sebanyak 10x dan berhenti. 2. Buatlah interaksi geser karakter ke kanan dan ke kiri, dengan menggunakan tombol

P2.0, P2.1, untuk mengatur geser ke kanan dan ke kiri, untuk dengan kata Surabaya

Soal Kuis: 1. Apakah yang dimaksud dengan 2 x 16 pada LCD Karakter 2x16 2. Pelajari tentang pin konfigurasi, dan fungsi dari LCD Karakter 3. Pelajari tentang Function Set, Entry Mode, Display On/Off, Shift Cursor/Display 4. Pelajari rangkaian lengkap interfacing LCD ke Mikrokontroller

Page 40: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 40

PERCOBAAN 5 ANALOG TO DIGITAL CONVERTER ( ADC )

TUJUAN: 1. Mahasiswa memahami rangkaian interface mikrokontroller dengan ADC 0804 2. Mahasiswa memahami setting tegangan referensi Vref ADC0804 3. Mahasiswa memahami perhitungan tegangan resolusi ADC0804 4. Mahasiswa dapat memahami program assembly untuk menampilkan data ADC ke 7

Segmen 5. Mahasiswa dapat memahami program assembly untuk menampilkan data ADC ke LCD

Karakter 2 x 16 DASAR TEORI

P1.6

P2.6

P1.3

P3.4

R3910K

13

2

P3.2

MISO

P1.0

AD2

P1.0

P1.4

P1.1

U9 ADC0804

67

9

1112131415161718

194

5

123

+IN-IN

VREF/2

DB7DB6DB5DB4DB3DB2DB1DB0

CLKRCLKIN

INTR

CSRDWR

SCK

P3.2+ C10

10uF

P1.1

D12

3V

AD1

MOSI

AD0

P1.4

P1.3

P3.4

GND

R3810K

C9150pF

CS

P1.2

GND

GND

VCC

P3.3

AD3

P1.2

U8

4051

13141512

1524

61110

9

3X0X1X2X3X4X5X6X7

INHABC

X

P3.3

P2.7

P1.5

P1.7

R3668

Gambar 5.1 Rangkaian ADC0804

Konverter A/D tersedia secara komersial sebagai rangkaian terpadu dengan resolusi 8 bit sampai dengan 16 bit. Pada percobaan ini akan memperkenalkan ADC0801, yaitu sebagai sebuah konverter A/D 8 bit yang mudah diinterfacekandengan sistem mikrokontroller. A/D ini menggunakan metode approksimasi berturut-turut untuk mengkonversikan masukan analog (0-5V) menjadi data digital 8 bit yang ekivalen. ADC0801 mempunyai pembangkit clock internal dan memerlukan catu daya +5V dan mempunyai waktu konversi optimum sekitar 100us.

Page 41: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 41

Gambar 5.2 Konfigurasi pin ADC0804 Diagram konfigurasi pin ADC0804 ditunjukkan pada gambar 5.2. Pin 11 sampai 18 ( keluaran digital ) adalah keluaran tiga keadaan, yang dapat dihubungkan langsung dengan bus data bilamana diperlukan. Apabila CS ( pin 1 ) atau RD (pin2) dalam keadaan high (“1”), pin 11 sampai 18 akan mengambang ( high impedanze ), apabila CS dan RD rendah keduanya, keluaran digital akan muncul pada saluran keluaran. Sinyal mulai konversi pada WR (pin 3). Untuk memulai suatu konversi, CS harus rendah. Bilamana WR menjadi rendah, konverter akam mengalami reset, dan ketika WR kembali kepada keadaan high, konversi segera dimulai. Konversi detak konverter harus terletak dalam daereh frekuensi 100 sampai 800kHz. CLK IN ( pin 4) dapat diturunkan dari detak mikrokontroller, sebagai kemungkinan lain, kita dapat mempergunakan pembangkit clock internal dengan memasang rangkaian RC antara CLN IN ( pin 4) dan CLK R ( pin 19). Pin 5 adalah saluran yang digunakan untuk INTR, sinyal selesai konversi. INTR akan menjadi tinggi pada saat memulai konversi, dan akan aktiv rendah bila konversi telah selesai. Tepi turun sinyal INTR dapat dipergunakan untuk menginterupsi sistem mikrokontroller, supaya mikrokontroller melakukan pencabangan ke subrutine pelayanan yang memproses keluaran konverter. Pin 6 dan 7 adalah masukan diferensial bagi sinyal analog. A/D ini mempunyai dua ground, A GND (pin 8) dan D GND ( pin10). Kedua pin ini harus dihubungkan dengan ground. Pin 20 harus dihubungkan dengan catu daya +5V A/D ini mempunyai dua buah ground, A GND ( pin 8 ) dan D GND ( pin 10). Keduanya harus dihubungkan dengan catu daya, sebesar +5V.

Pada A/D 0804 REFV merupakan tegangan referensi yang digunakan untuk offset suatu

keluaran digital maksimum. Dengan persamaan sebagai berikut:

maksVV INREF 21

=

255

MAKSVV IN

RESOLUSI =

Misalnya anda menginginkan masuk analog maksimum sebesar 4 V, maka:

2421

== xVREF volt

Page 42: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 42

0156,0255

4==RESOLUSIV volt

Resolusi ini mempunyai arti sebagai berikut:

No INV ( volt ) Data Digital ( biner )

1 0,000 0000 0000

2 0,0156 0000 0001

3 0,0313 0000 0010

4 :

5 4 1111 1111 A/D ini dapat dirangkai untuk menghasilkan konversi secara kontinu. Untuk melaksanakannya, kita harus menghubungkan CS, dan RD ke ground dan menyambungkan WR dengan INTR seperti pada gambar dibawah ini. Maka dengan ini keluaran digital yang kontinu akan muncul, karena sinyal INTR menggerakkan masukan WR. Pada akhir konversi INTR berubah menjadi low, sehingga keadaan ini akan mereset konverter dan mulai konversi. Tabel 5.1 Koneksi Interface ADC ke Mikrokontroller

ADC Mikrokontroller

/INTR P3.2

/WR P3.3

/RD P3.4 D0 s/d D7 P1.0 s/d P1.7

Tabel 5.2. Instruksi logika pada pin kontrol A/D 0804

INPUT OUTPUT /WR /RD /INTR DO S/D D7

KEGIATAN

1 1 1 Hi-Z Berada dalam keadaan High Impedansi

0 1 1 Hi-Z A/D mengalami reset Data

1 1 1 Hi-Z Mulai konversi Analog ke Digital

1 1 0 Hi-Z Konversi telah selesai

1 0 1 D0 s/d D7 Data digital telah siap diambil

Page 43: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 43

Percobaan 5.1. ADC0804 dan Display ke 7 Segmen Pada percobaan ini, Data ADC yang telah diubah dalam desimal ( ratusan, puluhan dan satuan) akan ditampilkan pada 8 x 7 Segmen pada Display 1, Display 2, dan Display 3 yang masing-masing menampilkan data ratusan, puluhan dan satuan.

(a)

VCC

P3.6 U8

74LS138

123

645

15141312111097

ABC

G1G2AG2B

Y0Y1Y2Y3Y4Y5Y6Y7

P3.5

R28

10K

J2

EN 7 SEGMEN12

Y7..Y0

P3.7

VCC

(b)

Gambar 5.3. Interface rangkaian display 7 segmen

Tabel 5.1. kebenaran 74LS138

SELEKTOR ENABLE OUTPUT C B A G1 /G2A /G2B Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 0 0 0 1 0 0 0 1 1 1 1 1 1 1

0 0 1 1 0 0 1 0 1 1 1 1 1 1 0 1 0 1 0 0 1 1 0 1 1 1 1 1

0 1 1 1 0 0 1 1 1 0 1 1 1 1

1 0 0 1 0 0 1 1 1 1 0 1 1 1 1 0 1 1 0 0 1 1 1 1 1 0 1 1

1 1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0

Pada tabel kebenaran tersebut tampak bahwa seven segmen yang hidup tergantung pada output dari dekoder 74LS138, yang sedang mengeluarkan logika low ”0”, sehingga dari 8 buah display tersebut, selalu hanya satu display yang akan dihidupkan. Agar display tampak nyala

VCC

aa

VCC

ee

c

FCS 9013

PNP

7 x 220 ohm

d

f

FCS 9013

b

Common Anoda

PNP

FCS 9013

VCC

FCS 9013

VCC

P0.6..P0.0

FCS 9013

PNP

VCC

FCS 9013

PNP

g

Y7..Y0

g

f

VCC

FCS 9013

PNP

c

8 x 1k ohm

VCC

PNP

d

FCS 9013

VCC

b

PNPPNP

Page 44: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 44

secara bersamaan maka ketiga display tersebut harus dihidupkan secara bergantian dengan waktu tunda tertentu. Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Pada saat langkah pemrograman posisikan saklar togle ke posisi PROG 2. Posisikan saklar togle ke RUN untuk mengaktifkan ADC0804 CS=0 3. Hubungkan modul Microcontroller Trainer dengan power supply +5V 4. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 5. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Gambar 5.4. Diagram alir rutin utama percobaan 5.1

Gambar 5.5. Diagram alir subrutin proses ADC

Page 45: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 45

Gambar 5.6. Diagram alir subrutin konversi hex ke desimal

Gambar 5.7. Diagram alir subrutin display ke 7 Segmen

6. Ketik program berikut ini:

Page 46: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 46

org 0h

ratusan equ 30h puluhan equ 31h satuan equ 32h ; org 0h start: call ADC call Bin2Dec call Display2SevenSegmen sjmp start ; ;=============================================== ;Subrutin ini digunakan untuk mengambil data ADC MUX X0 ;=============================================== ADC: clr P2.6 clr P2.7

clr P3.3 ; Reset ADC. P3.3 = 0 Nop ; delay 1us Nop ; delay 1 us Nop ; delay 1 us setb P3.3 ; Start Conversi eoc: jb P3.2,eoc ; Tunggu interupsi INT, apakah P3.2= 1, jika Ya ; lompat ke EOC clr P3.4 ; Baca Data. P3.4=0 mov A,P1 ; Copy data P1 ke A setb P3.4 ; Disable RD. P3.4=1 ret ; ;================================================= ;Subrutin ini untuk menampilkan data ke 7 Segmen ;dalam bentuk: ratusan, puluhan, and satuan ;data desimal diubah ke segmen dengan menggunakan ;Look up table Data7segmen ;================================================= Display2SevenSegmen: mov A, ratusan ;Copy data Ratusan ke A mov DPTR,#Data7segmen ;Copy Address #Data7segmen ke DPTR movc A,@A+DPTR ;Copy Isi A+DPTR ke A mov P0,A ;Copy A ke P0 Setb P3.5 ;Decoder, A=1, clr P3.6 ;B=0 Setb P3.7 ; dan C=1 call delay ;Panggil waktu tunda ; mov A,puluhan mov DPTR,#Data7segmen movc A,@A+DPTR mov P0,A clr P3.5 ; Setb P3.6 Setb P3.7

Page 47: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 47

call delay ; mov A,satuan mov DPTR,#Data7segmen movc A,@A+DPTR mov P0,A Setb P3.5 ; Setb P3.6 Setb P3.7 call delay ret ; delay: mov R0,#0 delay1:mov R2,#0fh djnz R2,$ djnz R0,delay1 ret ; ;======================================== ;Subrutin ini untuk merubah data biner ke desimal ;menjadi 3 digit = ratusan-puluhan-satuan ;========================================= Bin2Dec: mov b,#100d div ab mov ratusan,a mov a,b mov b,#10d div ab mov puluhan,a mov satuan,b ret ; Data7segmen: db 11000000b,11111001b,10100100b,10110000b,10011001b db 10010010b,10000010b,11111000b,10000000b,10010000b ; end 7. Simpanlah program yang anda ketik dan beri nama : prog51a.asm

8. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

9. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

Soal Tantangan: 1. Lakukan modifikasi pada program tersebut dengan manambahkan kata SUHU, pada

Display1, 2, 3 dan 4 diikuti dengan data ADC.( contoh: SUHU 255 )

Page 48: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 48

2. Lakukan modifikasi pada program tersebut dengan manambahkan kata UOLT, pada Display5, 6, 7dan 8 setelah data ADC.( contoh: 255 UOLT)

Percobaan 5.2. ADC0804 dan Display ke LCD Karakter 2x16 Pada percobaan ini, Data ADC dalam desimal akan ditampilkan pada LCD Karakter 2x16 pada Baris 1, Colom 1, 2 dan 3, yang masing-masing menampilkan data ratusan, puluhan dan satuan.

VSS

2

1116

7VCC

D2

EN

LCD Character

3

14

D5

8

1

GND

10k

Potensio Multiturn

D1

P3.7

D74

13

12

9BPL

6

P0.7..P0.0

2 X 16

VCC

D4

J3

EN LCD 1 2

10

D1

RSP3.6

D3

D6

D0

15

Gambar 5.8. Rangkaian Interface LCD Karakter Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Pada saat langkah pemrograman posisikan saklar togle ke posisi PROG 2. Posisikan saklar togle ke RUN untuk mengaktifkan ADC0804 CS=0 3. Hubungkan modul Microcontroller Trainer dengan power supply +5V 4. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 5. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Page 49: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 49

Gambar 5.9 Diagram alir utama percobaan 5.2

6. Ketik program berikut ini:

org 0h

ratusan equ 30h puluhan equ 31h satuan equ 32h ; org 0h call init_LCD call write_char start: call ADC call Bin2Dec call Write2LCD sjmp start ; ;=============================================== ;Subrutin ini digunakan untuk mengambil data ADC MUX X0 ;=============================================== ADC: clr P2.6 clr P2.7

clr P3.3 nop nop nop setb P3.3 eoc: jb P3.2,eoc clr P3.4 mov A,P1 setb P3.4 ret ; ;================================================= ;Subrutin untuk menampilkan data ke LCD character 2 x16 ;pada DDRAM 0C9 0CA 0CB untukratusan, puluhan, and satuan ;================================================= Write2LCD: mov r1,#0c9h call write_inst mov a,ratusan add a,#30h mov r1,a call write_data ; mov r1,#0cah call write_inst mov a,puluhan add a,#30h mov r1,a call write_data ;

Page 50: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 50

mov r1,#0cbh call write_inst mov a,satuan add a,#30h mov r1,a call write_data ret ; ;======================================= ;Subrutin ini untuk merubah data biner ke desimal ;menjadi 3 digit = ratusan-puluhan-satuan ;======================================= Bin2Dec: mov b,#100d div ab mov ratusan,a mov a,b mov b,#10d div ab mov puluhan,a mov satuan,b ret ; ;=============================================== ;Subrutin untuk menampilkan tulisan Data ADC0804 ; pada baris 1 ;=============================================== write_char: mov dptr,#word1 ;DPTR = [ address word1 ] mov r3,#16 ;R3=16,number character to be display mov r1,#80h ;R1=80h,address DDRAM start position acall write_inst ; write1:clr a ; A = 0 movc a,@a+dptr ; A = [A+ DPTR] mov r1,A ; R1 = A inc dptr ; DPTR = DPTR +1 acall write_data ; djnz r3,write1 ; R3 = R3-1, ret ; Init_lcd: mov r1,#00000001b ;Display clear call write_inst mov r1,#00111000b ;Function set,Data 8 bit,2 line font 5x7 call write_inst mov r1,#00001100b ;Display on, cursor off,cursor blink off call write_inst mov r1,#00000110b ;Entry mode, Set increment call write_inst ret ;

Page 51: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 51

write_inst: clr P3.6 ; RS = P2.0 = 0, write mode instruction mov P0,R1 ; D7 s/d D0 = P0 = R1 setb P3.7 ; EN = 1 = P2.1 call delay ; call delay time clr P3.7 ; EN = 0 = P2.1 ret ; Write_data: setb P3.6 ; RS = P2.0 = 1, write mode data mov P0,R1 ; D7 s/d D0 = P0 = R1 setb P3.7 ; EN = 1 = P2.1 call delay ; call delay time clr p3.7 ; EN = 0 = P2.1 ret ; delay: mov R0,#0 delay1:mov R2,#0fh djnz R2,$ djnz R0,delay1 ret ; word1: DB ' Data ADC0804 ' end

7. Simpanlah program yang anda ketik dan beri nama : prog52a.asm

7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

9. Lakukan modifikasi pada program tersebut dengan manambahkan kata SUHU: , pada Baris 2 diikuti dengan data ADC.

Percobaan 5.3. Aplikasi program komparator dengan memanfaatkan instruksi aritmatika dan instruksi lompatan untuk pengaturan suhu dengan display LCD Karakter Dalam dunia elektronika, rangkaian komparator, umumnya diwujudkan dengan memanfaatkan rangkaian op-amp yang dibangun sebagai komparator. Sesuai dengan prinsip kerja komparator, membandingkan dua buah tegangan yang masuk pada input INV dan NON INV, untuk menghasilkan suatu output tegangan saturasi. Dengan memanfaatkan instruksi aritmatika SUBB dan instruksi lompatan JZ dan JC, maka rangkaian analog ini dapat digantikan dengan menggunakan pemrograman assembly.

Page 52: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 52

Gambar 5.10 Rangkaian komparator analog dengan IC OP-AMP

Apabila tegangan yang masuk pada VREF lebih besar daripada tegangan yang masuk pada VIN maka VOUT akan mengeluarkan tegangan ~0 volt. Dan sebaliknya bila tegangan yang masuk pada VREF lebih kecil dari pada VIN maka VOUT akam mengeluarkan tegangan VSAT. ControlSuhu:

mov a,dataSetting ; contoh dataSetting=50 mov b,dataADC ; contoh dataADC=30 clr c subb a,b jnz OnHeater ret

OnHeater: jc OffHeater call HeaterOn ;Instruksi hidupkan heater ret

OffHeater: Call HeaterOff ;Instruksi matikan heater ret ;

Pada instruksi tersebut diambil selisih antara dataSetting dan dataADC dengan menggunakan instruksi SUBB, pengurangan ini akan menghasilkan tiga keadaan yaitu: NOL, NEGATIF atau POSITIF. Hasil-hasil inilah yang harus dideteksi, keadaan NEGATIF dapat dideteksi dengan memantau bit C (carry ), keadaan NOL dapat dideteksi dengan memantau register A (accumulator). Apabila diberikan keadaan input sesuai dengan contoh tersebut maka: A=dataSetting=50 B=dataADC=30 SUBB A,B A=50-30 =20 (keadaan POSITIF) Sesuai dengan instruksi diatas maka program akan menuju ke Ret OnHeater, pada baris ini dilakukan proses pengujian keadaan, dengan instruksi JC, karena keadaan POSITIF maka C=0 (clear) sehingga program akan memanggil HeaterOn Apabila diberikan keadaan input sesuai dengan contoh tersebut maka:

Page 53: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 53

A=dataSetting=50 B=dataADC=50 SUBB A,B A=50-50 =00 (keadaan NOL) Sesuai dengan instruksi diatas maka program akan menuju ke Ret. Apabila diberikan keadaan input sesuai dengan contoh tersebut maka:

A=dataSetting=50 B=dataADC=51 SUBB A,B A=50-51 =-1 (keadaan NEGATIF) Sesuai dengan instruksi diatas maka program akan menuju ke OnHeater, pada baris ini dilakukan proses pengujian keadaan, dengan instruksi JC, karena keadaan NEGATIF maka C=1 (clear) sehingga program akan memanggil label OffHeater Pada percobaan 5.3. ini indikator heater On dan Off, ditunjukkan pada layar LCD Karakter pada baris 1. seperti yang ditunjukkan pada pemrograman berikut ini: 1. Pada saat langkah pemrograman posisikan saklar togle ke posisi PROG 2. Posisikan saklar togle ke RUN untuk mengaktifkan ADC0804 CS=0 3. Hubungkan modul Microcontroller Trainer dengan power supply +5V 4. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 5. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Start

Subrutin Control Suhu

Subrutin Konversi Bin2Dec

Ratusan-Puluhan-Satuan

Inisialisasi LCD

Subrutin ADC

Inisialisasi DataSetting

dataSetting 50

Subrutin Display2LCD

Start

Simpan dataSetting

A dataSetting

Simpan dataADC

B dataADC

Reset bit C

C 0

SUBB A,B

A=0 ?

C=1 ?

NO End

YES

NO

End End

YES

(a) (b)

Heater On Heater Off

Gambar 5.11. Diagram alir (a) rutin utama (b) subrutin kontrol suhu pada percobaan 5.3.

dataSetting equ 30h dataADC equ 31h ratusan equ 32h puluhan equ 33h

Page 54: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 54

satuan equ 34h org 0h mov dataSetting,#50d; contoh datasetting=50 call init_lcd start: call ADC call ControlSuhu call bin2dec call Display2LCD sjmp start ; ControlSuhu: mov a,dataSetting ; contoh dataSetting=50 mov b,dataADC ; contoh dataADC=30 clr c subb a,b jnz OnHeater ret OnHeater: jc OffHeater call HeaterOn ;Instruksi hidupkan heater ret OffHeater: Call HeaterOff ;Instruksi matikan heater ret ; HeaterOn: mov R1,#80h call write_inst mov R1,#'O' call write_data ; mov R1,#81h call write_inst mov R1,#'n' call write_data ; mov R1,#82h call write_inst mov R1,#' ' call write_data ret HeaterOff: mov R1,#80h call write_inst mov R1,#'O' call write_data ; mov R1,#81h call write_inst mov R1,#'f' call write_data ;

Page 55: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 55

mov R1,#82h call write_inst mov R1,#'f' call write_data ret ;======================================= ;Subrutin ini untuk merubah data biner ke desimal ;menjadi 3 digit = ratusan-puluhan-satuan ;======================================= Bin2Dec: mov A,dataADC mov b,#100d div ab mov ratusan,a mov a,b mov b,#10d div ab mov puluhan,a mov satuan,b ret ;================================================= ;Subrutin untuk menampilkan data ke LCD character 2 x16 ;pada DDRAM 0C9 0CA 0CB untukratusan, puluhan, and satuan ;================================================= Display2LCD: mov r1,#0c0h call write_inst mov a,ratusan add a,#30h mov r1,a call write_data ; mov r1,#0c1h call write_inst mov a,puluhan add a,#30h mov r1,a call write_data ; mov r1,#0c2h call write_inst mov a,satuan add a,#30h mov r1,a call write_data ret ;============================================== ;Subrutin ini digunakan untuk mengambil data ADC MUX X0 ;============================================== ADC: clr P2.6 clr P2.7 clr P3.3

Page 56: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 56

nop nop nop setb P3.3 eoc: jb P3.2,eoc clr P3.4 mov A,P1 mov dataADC,A setb P3.4 ret ; Init_lcd: mov r1,#00000001b ;Display clear call write_inst mov r1,#00111000b ;Function set,Data 8 bit,2 line font 5x7 call write_inst mov r1,#00001100b ;Display on, cursor off,cursor blink off call write_inst mov r1,#00000110b ;Entry mode, Set increment call write_inst ret ; write_inst: clr P3.6 ; RS = P2.0 = 0, write mode instruction mov P0,R1 ; D7 s/d D0 = P0 = R1 setb P3.7 ; EN = 1 = P2.1 call delay ; call delay time clr P3.7 ; EN = 0 = P2.1 ret ; Write_data: setb P3.6 ; RS = P2.0 = 1, write mode data mov P0,R1 ; D7 s/d D0 = P0 = R1 setb P3.7 ; EN = 1 = P2.1 call delay ; call delay time clr p3.7 ; EN = 0 = P2.1 ret ; delay: mov R0,#0 delay1:mov R2,#0fh djnz R2,$ djnz R0,delay1 ret end 6. Simpanlah program yang anda ketik dan beri nama : prog53a.asm

7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

9. Lakukan modifikasi pada program tersebut dengan manambahkan kata SUHU: , pada Baris 2 diikuti dengan data ADC.

Page 57: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 57

Percobaan 5.4. Kalibrasi dataADC ke suhu dengan menggunakan metode Look Up Table.

Kenapa kita membutuhkan look up table?: Look up table adalah suatu cara yang digunakan untuk menghindari proses perkalian dan pembagian yang bertele-tele dan memusingkan bila dilakukan dengan menggunakan bahasa assembly, yang tentunya harus dilakukan bila kita akan kalibrasi suatu alat ukur. Contoh kalibrasi Termometer dengan menggunakan persamaan persamaan berikut ini: Suhu = DataADC * 100/ 255 oC.

Contoh table untuk konversi data ke besaran suhu ( dengan menggunakan program Microsoft Excell ). Karena data decimal maksimal adalah 255 dan suhu maksimal 100 maka Data look up tablenya adalah 255/100.

Data Desimal Suhu Ratusan Puluhan Satuan Pecahan 0 0 0 0 0 0 1 0.4 0 0 0 4 2 0.8 0 0 0 8 3 1.2 0 0 1 2 4 1.6 0 0 1 6 5 2.0 0 0 2 0 6 2.4 0 0 2 4 7 2.7 0 0 2 7 8 3.1 0 0 3 1 9 3.5 0 0 3 5 10 3.9 0 0 3 9

: : : : : :

: : : : : :

: : : : : :

243 95.3 0 9 5 3 244 95.7 0 9 5 7 245 96.1 0 9 6 1 246 96.5 0 9 6 5 247 96.9 0 9 6 9 248 97.3 0 9 7 3 249 97.6 0 9 7 6 250 98.0 0 9 8 0 251 98.4 0 9 8 4 252 98.8 0 9 8 8 253 99.2 0 9 9 2 254 99.6 0 9 9 6 255 100.0 1 0 0 0

Pada percobaan 5.4, kalibrasi dilakukan untuk perubahan range desimal (0 s/d 255) menjadi range suhu(000.0 s/d 100.0 oC) 1. Pada saat langkah pemrograman posisikan saklar togle ke posisi PROG 2. Posisikan saklar togle ke RUN untuk mengaktifkan ADC0804 CS=0

Page 58: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 58

3. Hubungkan modul Microcontroller Trainer dengan power supply +5V 4. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 5. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program dataADC equ 30h org 0h start: call ADC call Display2SevenSegmen sjmp start ; ;======================================= ;Subrutin ini digunakan untuk mengambil data ADC ;======================================== ADC: clr P2.6 clr P2.7 clr P3.3 nop nop nop setb P3.3 eoc: jb P3.2,eoc clr P3.4 mov A,P1 mov dataADC,A setb P3.4 ret ; Display2SevenSegmen: mov DPTR,#ratusan ; DPTR = [ Ratusan ] mov A,DataADC ; A = [DataADC] movc A,@A+DPTR ; A = [A+DPTR] mov DPTR,#Data7segmen ; DPTR = [Data7Segmen] movc A,@A+DPTR ; A = [A+DPTR] mov P0,A ; Copy A ke P0 Clr P3.5 ; Decoder, A=1, Clr P3.6 ; B=0 Setb P3.7 ; dan C=1 call delay ; Panggil waktu tunda ; mov DPTR,#puluhan ; DPTR = [ Puluhan ] mov A,DataADC ; A = DataADC movc A,@A+DPTR ; A =[ A+DPTR] mov DPTR,#Data7segmen ; DPTR = [Data7Segmen] movc A,@A+DPTR ; A = [A+DPTR] mov P0,A Setb P3.5 Clr P3.6 Setb P3.7 call delay ; mov DPTR,#Satuan

Page 59: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 59

mov A,DataADC movc A,@A+DPTR mov DPTR,#Data7segmen movc A,@A+DPTR mov P0,A Clr P3.5 ; Setb P3.6 Setb P3.7 call delay ; mov DPTR,#Pecahan mov A,DataADC movc A,@A+DPTR mov DPTR,#Data7segmen movc A,@A+DPTR mov P0,A Setb P3.5 ; Setb P3.6 Setb P3.7 call delay ret ; delay: mov R0,#0 delay1:mov R2,#0fh djnz R2,$ djnz R0,delay1 ret ; Pecahan: db 0,4,8,2,6,0,4,7,1,5,9,3,7,1,5,9,3,7,1,5,8,2,6,0,4,8,2,6,0,4,8,2,5,9,3,7,1,5 db 9,3,7,1,5,9,3,6,0,4,8,2,6,0,4,8,2,6,0,4,7,1,5,9,3,7,1,5,9,3,7,1,5,8,2,6,0,4 db 8,2,6,0,4,8,2,5,9,3,7,1,5,9,3,7,1,5,9,3,6,0,4,8,2,6,0,4,8,2,6,0,4,7,1,5,9,3 db 7,1,5,9,3,7,1,5,8,2,6,0,4,8,2,6,0,4,8,2,5,9,3,7,1,5,9,3,7,1,5,9,3,6,0,4,8,2 db 6,0,4,8,2,6,0,4,7,1,5,9,3,7,1,5,9,3,7,1,5,8,2,6,0,4,8,2,6,0,4,8,2,5,9,3,7,1 db 5,9,3,7,1,5,9,3,6,0,4,8,2,6,0,4,8,2,6,0,4,7,1,5,9,3,7,1,5,9,3,7,1,5,8,2,6,0 db 4,8,2,6,0,4,8,2,5,9,3,7,1,5,9,3,7,1,5,9,3,6,0,4,8,2,6,0 ; Satuan: db 0,0,0,1,1,2,2,2,3,3,3,4,4,5,5,5,6,6,7,7,7,8,8,9,9,9,0,0,1,1,1,2,2,2,3,3,4,4 db 4,5,5,6,6,6,7,7,8,8,8,9,9,0,0,0,1,1,2,2,2,3,3,3,4,4,5,5,5,6,6,7,7,7,8,8,9,9 db 9,0,0,1,1,1,2,2,2,3,3,4,4,4,5,5,6,6,6,7,7,8,8,8,9,9,0,0,0,1,1,2,2,2,3,3,3,4 db 4,5,5,5,6,6,7,7,7,8,8,9,9,9,0,0,1,1,1,2,2,2,3,3,4,4,4,5,5,6,6,6,7,7,8,8,8,9 db 9,0,0,0,1,1,2,2,2,3,3,3,4,4,5,5,5,6,6,7,7,7,8,8,9,9,9,0,0,1,1,1,2,2,2,3,3,4 db 4,4,5,5,6,6,6,7,7,8,8,8,9,9,0,0,0,1,1,2,2,2,3,3,3,4,4,5,5,5,6,6,7,7,7,8,8,9 db 9,0,0,0,1,1,2,2,2,3,3,3,4,4,5,5,5,6,6,7,7,7,8,8,9,9,9,0 ; puluhan: db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1 db 1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 db 2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4 db 4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 db 5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7

Page 60: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 60

db 7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 db 8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0 ; Ratusan: db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 ; Data7segmen: db 11000000b,11111001b,10100100b,10110000b,10011001b db 10010010b,10000010b,11111000b,10000000b,10010000b ; end Soal Kuis:

1. Pelajari mengenai pin konfigurasi dan fungsi dari ADC0804 2. Pelajari mengenai tegangan referensi, output data digital (bila diberi input tertentu) 3. Pelajari tentang instruksi assembly untuk keperluan ambil data ADC0804 4. Pelajari tentang interface ADC ke mikrokontroller

Page 61: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 61

PERCOBAAN 6 DIGITAL TO ANALOG CONVERTER

TUJUAN 1. Mahasiswa memahami rangkaian interface mikrokontroller dengan DAC0808 2. Mahasiswa memahami setting arus referensi pada DAC 3. Mahasiswa memahami perhitungan output tegangan 4. Mahasiswa memahami pemrograman assembly DAC

DASAR TEORI

P2.1

R33

1K

J14

CON2

12

VCC

J12

CON1

1

P3.4

U5

DAC0808

121110

98765

14

15

4

2

161

33

A8A7A6A5A4A3A2A1

VR+

VR-

IOUT

IOUT

COMPV

+V

-

R34 5K

VE

E

P2.5

P2.2

VR+

R29 5K

P2.4

P2.7 VD

D

U4 74LS3733478

13141718

111

256912151619

D0D1D2D3D4D5D6D7

OCG

Q0Q1Q2Q3Q4Q5Q6Q7

P2.3

GNDV-

VCC

+

-

U6

107

3

26

74

VEEP2.6 C415P

P2.0

Gambar 6.1. Rangkaian DAC0808

DAC0808 merupakan salah satu contoh kenverter D/A. IC ini tidak mahal dan digunakan secara luas dalam beberapa aplikasi, D/A ini menerapkan metode tangga R-2R 8 bit yang dilengkapi dengan sumber arus acuan dan delapan buah transistor saklar untuk mengarahkan arus biner. Suatu tegangan dan hambatan eksternal dipergunakan untuk mengatur arus acuan pada nilai yang lazim berlaku yaitu 2 mA. DAC0808 mempunyai waktu pemantapan 150ns

dan ketelitian relatif LSB21

± .

Konfigurasi pin ditunjukkan seperti pada gambar 6.2. dengan penjelasan sebagai berikut. Pin 1 tidak dipakai ( NC singkatan dari no connection ). Pin 2 adalah penghubung ke ground. Pin 3 (

EEV ) harus dipasang pada -12V. Pin 4 adalah saluran balik dari ground, yang sifatnya sebagi

output pembalik. Pin 5 s/d 12 merukan 8 bit masukan data. Pin 13 ( CCV ) harus dipasang pada

catu daya +5V. Pin 14 dihubungkan dengan catu daya positif melalui hambatan R14, dan pin 15 dihubungkan ke ground melalui hambatan R15. Akhirnya sebuah kapasitor antar pin 16 dan pin 13 berfungsi untuk memberi kompensasi frekuensi bagi IC ini.

Page 62: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 62

Gambar 6.2. Pin konfigurasi

Percobaan 6.1. Mengeluarkan Tegangan Tertentu pada DAC Pada percobaan ini, suatu tegangan tertentu akan dikeluarkan melalui DAC Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Pasang jumper pada konektor EN_DAC untuk mengaktifkan rangkaian DAC 2. Atur arus IREF dengan menghubungkan konektor dengan menggunakan ampermeter, atur

potensio R14 untuk memberikan referensi arus tertentu sekitar 2mA 3. Pasang jumper pada konektor IREF 4. Hubungkan modul Microcontroller Trainer dengan power supply +5V 5. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 6. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Gambar 6.3. Diagram alir percobaan 6.1

Page 63: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 63

7. Ketik program berikut ini:

org 0h clr P3.4

start: mov P2,#50 ; isi data 50 ke P2 sjmp start

end

8. Simpanlah program yang anda ketik dan beri nama : prog61a.asm

9. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

10. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

11. Lakukan pengamatan dengan menggunakan Voltmeter. 12. Lakukan modifikasi pada program tersebut untuk mengelurakan tegangan lain, sesuai tabel:

No Output Tegangan ( volt ) Data Desimal 1 1 ….. 2 1,5 ….. 3 2 ….. 4 2,5 ….. 5 3 ….. 6 3,5 ….. 7 5 ….. 8 6 ….. 9 7 ….. 10 8 …..

Percobaan 6.2. Mengeluarkan Tegangan Tangga 0 s/d 10V Pada percobaan ini, tegangan tertentu akan dikeluarkan melalui DAC Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Pasang jumper pada konektor EN_DAC untuk mengaktifkan rangkaian DAC 2. Atur arus IREF dengan menghubungkan konektor dengan menggunakan ampermeter, atur

potensio R14 untuk memberikan referensi arus tertentu sekitar 2mA 3. Pasang jumper pada konektor IREF 4. Hubungkan modul Microcontroller Trainer dengan power supply +5V 5. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 6. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Page 64: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 64

Inisialisasi DataA 0

Waktu Tunda

A:=A+1

Start

Output Data ke DACP2 A

A=255 ?NO

Inisialisasi DataA 0

YES

Gambar 6.4. Diagram alir percobaan 6.2

7. Ketik program berikut ini:

org 0h mov A,#0 clr P3.4 start: mov P2,A inc A call delay cjne A,#255,start mov A,#0 sjmp start ; delay: mov R1,#255 del1: mov R2,#255 del2: djnz R2,del2 djnz R1,del1 ret end 7. Simpanlah program yang anda ketik dan beri nama : prog62a.asm

8. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

9. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

10. Lakukan pengamatan dengan menggunakan Voltmeter.

Page 65: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 65

PERCOBAAN 7 KEYPAD 4X4

TUJUAN: 1. Mahasiswa memahami rangkaian interface keypad 4x4 dengan mikrokontroller 2. Mahasiswa memahami bahasa assembly untuk pengambilan data keypad 3. Mahasiswa memahami bahasa assembly untuk pengambilan data keypad dan

mengeluarkan ke LED 4. Mahasiswa memahami bahasa assembly untuk pengambilan data keypad dan

mengeluarkan ke 7 Segmen 5. Mahasiswa memahami bahasa assembly untuk pengambilan data keypad dan

mengeluarkan ke LCD Karakter DASAR TEORI

2

KEYPAD 4 X 4

5

7

3

9

P2.7..P2.0

0

6

1

8

4

Gambar 7.1 Rangkaian interface keypad 4x4

Keypad serig digunakan sebagi suatu input pada beberapa peralatan yang berbasis mikroprosessor atau mikrokontroller. Keypad sesungguhnya terdiri dari sejumlah saklar, yang terhubung sebagai baris dan kolom dengan susuan seperti yang ditunjukkan pada gambar 7.2. Agar mikrokontroller dapat melakukan scan keypad, maka port mengeluarkan salah satu bit dari 4 bit yang terhubung pada kolom dengan logika low “0” dan selanjutnya membaca 4 bit pada baris untuk menguji jika ada tombol yang ditekan pada kolom tersebut. Sebagai konsekuensi, selama tidak ada tombol yang ditekan, maka mikrokontroller akan melihat sebagai logika high “1” pada setiap pin yang terhubung ke baris.

Page 66: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 66

Gambar 7.3. Rangkaian dasar keypad 4x4

7.1. Percobaan scan data keypad 1x4, COR-MEN-UpArrow-DnArrow Pada percobaan ini, akan dilakukan scan data keypad COR-MEN-UpArr.- DnArr. Seperti yang ditunjukkan pada gambar 7.3 dan mengeluarkan data ke LED. Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Buka jumper pada DAC_EN, apabila sedang terpasang. 2. Hubungkan jumper pada LED_EN. 3. Hubungkan modul Microcontroller Trainer dengan power supply +5V 4. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer

D1

P0.0..P0.7

D8

VCC

J3

EN LED12

Gambar 7.4. Display LED sebagai Output Data Keypad 5. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Page 67: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 67

Panggil Subrutin KeypadKeydata Tombol ditekan

A:= NOT A

Simpan Keydata Ke AA Keydata

Start

A=FF ?

NO

YES

Output Data ke LEDP0 A

Gambar 7.5. Diagram alir rutin utama percobaan 7.1

Inisialisasi

Keybounch 50

Keyport FF

Kolom4 0

Baris4 (COR)=1?

Keybounc:=Keybounc-1

Keybounc=0 ?

Keydata #0Ah

Baris3 (MEN)=1?

Keybounc:=Keybounc-1

Keybounc=0 ?

Keydata #0Bh

End End

YES

NO

YES

NO

YES

NO

YES

Gambar 7.6. Diagram alir subrutin keypad 4 x 1

6. Ketik program berikut ini: col4 bit P2.0 col3 bit P2.1 col2 bit P2.2 col1 bit P2.3 row1 bit P2.4

Page 68: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 68

row2 bit P2.5 row3 bit P2.6 row4 bit P2.7 ; keydata equ 70h keybounc equ 71h keyport equ P2 ; org 0h mov P2,#11111111b ;isi P2 dg. 11111111 start: call keypad4x4 ;calling subroutine keypad4x4 Mov A,keydata ;Copy keydata ke A Cjne A,#0FFh,send ;Bandingkan apakah A=FF if Not E, jump ke send sjmp start ;LOOPING ke start send: CPL A ;A = NOT A Mov P0,A ;Copy A ke P0 Sjmp start ;LOOPING FOREVER PART 2 ; ;========================================== ; subroutine scan keypad 1 column x 4 row ;========================================== Keypad4x4: mov keybounc,#50 ;keybounc = 50 mov keyport,#0FFh ;keyport=P2= FF clr col4 ;col4= P2.0 = 0 ; keyCOR:

jb row4,keyMEN ;Key COR. Jump ke keyMEN, ;jika row4= 1

djnz keybounc,KeyCOR ;delay untuk bouncing mov keydata,#0Ah ;Data Output = 0Ah ret ; keyMEN:

jb row3,keyUpA ; Key MEN djnz keybounc,keyMEN mov keydata,#0bh ;Data Output = 0bh ret ; keyUpA:

jb row2,keyDnA ; djnz keybounc,keyUpA mov keydata,#0ch ; Data Output = 0ch ret ; keyDnA:

jb row1,Nokey ; djnz keybounc,keyDnA mov keydata,#0dh ; Data Output = 0dh ret Nokey:mov keydata,#0FFh ret

Page 69: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 69

;================================ ;The end of Keypad 4x4 subroutine ;================================ delay: mov R0,#0 delay1:mov R2,#50 djnz R2,$ djnz R0,delay1 ret end 7. Simpanlah program yang anda ketik dan beri nama : prog71a.asm

8. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

9. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

10. Lakukan modifikasi pada program tersebut diatas untuk scan data keypad 3-6-9-ENT 11. Lakukan modifikasi pada program tersebut diatas untuk scan data keypad 2-5-8-0 12. Lakukan modifikasi pada program tersebut diatas untuk scan data keypad 1-4-7-CAN

7.2. Percobaan scan data keypad 4x4 dan mengeluarkan ke LCD

Pada percobaan ini, akan dilakukan scan data keypad dan mengeluarkan data ke LCD Karakter. Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Pasang jumper EN_LCD 2. Buka jumper pada EN_DAC, apabila sedang terpasang 3. Hubungkan modul Microcontroller Trainer dengan power supply +5V 4. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer

VSS

2

1116

7VCC

D2

EN

LCD Character

3

14

D5

8

1

GND

10k

Potensio Multiturn

D1

P3.7

D74

13

12

9BPL

6

P0.7..P0.0

2 X 16

VCC

D4

J3

EN LCD 1 2

10

D1

RSP3.6

D3

D6

D0

15

Gambar 7.7. Rangkaian LCD Karakter 2x16 5. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Page 70: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 70

Gambar 7.8. Diagram alir subrutin keypad 4x4 6. Ketik program berikut ini:

col4 bit P2.0 col3 bit P2.1 col2 bit P2.2 col1 bit P2.3 row1 bit P2.4 row2 bit P2.5 row3 bit P2.6 row4 bit P2.7 keydata equ 70h keybounc equ 71h keyport equ P2 org 0h mov P2,#11111111b call Init_LCD start: call keypad4x4 ;calling subroutine keypad4x4 Mov A,keydata ;A = keydata Cjne A,#0FFh,WrLCD; sjmp start ;LOOPING FOREVER PART 1 ; WrLCD: Mov R1,#80h ;Pick DDRAM 1st row and 1st col call write_inst Mov R1,#30h Add A,R1 Mov R1,A call write_data ;write data Sjmp start ;LOOPING FOREVER PART 2; ;

Page 71: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 71

Init_lcd: mov r1,#00000001b ;Display clear call write_inst ; mov r1,#00111000b ;Function set, Data 8 bit,2 line font 5x7 call write_inst ; mov r1,#00001100b ;Display on, cursor off,cursor blink off call write_inst mov r1,#00000110b ;Entry mode, Set increment call write_inst ret ; Write_inst: clr P3.6 ; P3.6 = RS =0 mov P0,R1 ; P0 = D7 s/d D0 = R1 setb P3.7 ; P3.7 =EN = 1 call delay ; call delay time clr P3.7 ; P3.7 =EN = 0 ret ; Write_data: setb P3.6 ; P3.6 = RS =1 mov P0,R1 ; P0 = D7 s/d D0 = R1 setb P3.7 ; P3.7 =EN = 1 call delay ; call delay time call delay ; call delay time clr p3.7 ; P3.7 =EN = 0 ret ;==================================== ; subroutine scan keypad 4x4 ;==================================== Keypad4x4: mov keybounc,#50 ;keybounc = 50 mov keyport,#0FFh ;keyport=P2= FF clr col4 ;col4 = 0 ; keyCOR: jb row4,keyMEN ; Key COR djnz keybounc,KeyCOR mov keydata,#0Ah ;Data Output ret ; keyMEN: jb row3,keyUpA ; Key MEN djnz keybounc,keyMEN mov keydata,#0bh ;Data Output ret keyUpA: jb row2,keyDnA ; Key Up Arrow djnz keybounc,keyUpA mov keydata,#0ch ;Data Output ret ; keyDnA: jb row1,key3 ; Key Down Arrow djnz keybounc,keyDnA

Page 72: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 72

mov keydata,#0dh ;Data Output ret ;========================================== key3: setb col4 clr col3 jb row4,key6 djnz keybounc,key3 ; Key 3 mov keydata,#03h ;Data Output ret ; key6: jb row3,key9 djnz keybounc,key6 ; Key 6 mov keydata,#06h ;Data Output ret ; key9: jb row2,keyENT djnz keybounc,key9 ; Key 9 mov keydata,#09h ;Data Output ret ; keyENT: jb row1,key2 djnz keybounc,keyENT ; Key ENT mov keydata,#0eh ;Data Output ret ;============================================ key2: setb col3 clr col2 jb row4,key5 djnz keybounc,key2 mov keydata,#02h ;Data Output ret ; key5: jb row3,key8 djnz keybounc,key5 mov keydata,#05h ; Data Output ret ; key8: jb row2,key0 djnz keybounc,key8 mov keydata,#08h ;Data Output ret ; key0: jb row1,key1 djnz keybounc,key0 mov keydata,#00h ;Data Output ret ;============================================== key1: setb col2 clr col1 jb row4,key4 djnz keybounc,key1 mov keydata,#01h ;Data Output

Page 73: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 73

ret key4: jb row3,key7 djnz keybounc,key4 mov keydata,#04h ;Data Output ret key7: jb row2,keyCAN djnz keybounc,key7 mov keydata,#07h ;Data Output ret keyCAN: jb row1,Nokey djnz keybounc,keyCAN mov keydata,#0Fh ;Data Output ret Nokey: mov keydata,#0FFh ret ;================================ ;The end of Keypad 4x4 subroutine ;================================ delay: mov R0,#0 delay1: mov R2,#50 djnz R2,$ djnz R0,delay1 ret end

5. Simpanlah program yang anda ketik dan beri nama : prog72a.asm

6. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

7. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

8. Lakukan pengamatan pada LCD 9. Lakukan modifikasi pada program tersebut untuk menampilkan data keypad ke lokasi

DDRAM LCD:

No Lokasi Display Data Keypad 1 Baris 2 Kolom 2

2 Baris 2 Kolom 16 10. Lakukan modifikasi pada rangkaian tersebut untuk menampilan data keypad ke display 7 segmen sesuai dengan percobaan 3.

Page 74: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 74

PERCOBAAN 8 T I M E R/ COUNTER

TUJUAN 1. Mahasiswa memahami fungsi timer dan counter pada mikrokontroller 2. Mahasiswa memahami rangkaian interface untuk aplikasi timer dan counter 3. Mahasiswa dapat memanfaatkan fungsi counter untuk mencacah pulsa 4. Mahasiswa dapat memanfaatkan fungsi timer untuk membangkitkan clock dengan periode

tertentu. DASAR TEORI Timer Counter

Pada dasarnya sarana input yang satu ini merupakan seperangkat pencacah biner (binary counter) yang terhubung langsung ke saluran-data mikrokontroler, sehingga mikrokontroler bisa membaca kedudukan pancacah, bila diperlukan mikrokontroler dapat pula merubah kedudukan pencacah tersebut. Seperti layaknya pencacah biner, bilamana sinyal denyut (clock) yang diumpankan sudah melebihi kapasitas pencacah, maka pada bagian akhir untaian pencacah akan timbul sinyal limpahan, sinyal ini merupakan suatu hal yang penting sekali dalam pemakaian pencacah. Terjadinya limpahan pencacah ini dicatat dalam sebuah flip-flop tersendiri. Di samping itu, sinyal denyut yang diumpankan ke pencacah harus pula bisa dikendalikan dengan mudah. Hal-hal yang dibicarakan di atas diringkas dalam Gambar 1.

MCS-51 mempunyai dua buah register timer/ counter 16 bit, yaitu Timer 0 dan Timer 1. Keduanya dapat dikonfigurasikan untuk beroperasi sebagai timer atau counter, seperti yang terlihat pada gambar di bawah.

Dapat

Diset

Pembacan Isi

Pencacah

Gambar 9.1. Konsep dasar Timer/Counter sebagai sarana input

Page 75: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 75

Sinyal denyut yang diumpankan ke pencacah bisa dibedakan menjadi 2 macam, yang pertama ialah sinyal denyut dengan frekuensi tetap yang sudah diketahui besarnya dan yang kedua adalah sinyal denyut dengan frekuensi tidak tetap. Jika sebuah pencacah bekerja dengan frekuensi tetap yang sudah diketahui besarnya, dikatakan pencacah tersebut bekerja sebagai timer, karena kedudukan pencacah tersebut setara dengan waktu yang bisa ditentukan dengan pasti. Jika sebuah pencacah bekerja dengan frekuensi yang tidak tetap, dikatakan pencacah tersebut bekerja sebagai counter, kedudukan pencacah tersebut hanyalah menyatakan banyaknya pulsa yang sudah diterima pencacah. Untaian pencacah biner yang dipakai, merupakan pencacah biner menaik (count up binary

counter)

Fasilitas Timer/Counter

Keluarga mikrokontroler MCS51, misalnya AT89s51 dan AT89sx051, dilengkapi dengan dua perangkat Timer/Counter, masing-masing dinamakan sebagai Timer 0 dan Timer 1. Sedangkan untuk jenis yang lebih besar, misalnya AT89s52, mempunyai tambahan satu perangkat Timer/Counter lagi yang dinamakan sebagai Timer 2. Perangkat Timer/Counter tersebut merupakan perangkat keras yang menjadi satu dalam chip mikrokontroler MCS51, bagi pemakai mikrokontroler MCS51 perangkat tersebut dikenal sebagai SFR (Special Function Register) yang berkedudukan sebagai memori-data internal. Pencacah biner untuk Timer 0 dibentuk dengan register TL0 (Timer 0 Low) dan register TH0

(Timer 0 High Byte). Pencacah biner untuk Timer 1 dibentuk dengan register TL1 (Timer 1 Low Byte) dan register

TH1 (Timer 1 High Byte). Pencacah biner pembentuk Timer/Counter MCS51 merupakan pencacah biner naik (count up

binary counter) yang mencacah dari $0000 sampai $FFFF (apabila menggunakan

timer/Counter 16 bit/mode 0), saat kedudukan pencacah berubah dari $FFFF

kembali ke $0000 akan timbul sinyal limpahan (overflow).

Untuk mengatur kerja Timer/Counter dipakai 2 register tambahan yang dipakai bersama oleh Timer 0 dan Timer 1. Register tambahan tersebut adalah register TCON (Timer Control) dan

register ini, bisa dialamat secara bit) dan register TMOD (Timer Mode Register).

Pencacah biner Timer 0 dan 1

TL0, TH0, TL1 dan TH1 merupakan SFR (Special Function Register) yang dipakai untuk

membentuk pencacah biner perangkat Timer 0 dan Timer 1. Kapasitas keempat register tersebut masing-masing 8 bit, bisa disusun menjadi 4 macam Mode pencacah biner seperti terlihat dalam Gambar 2a sampai Gambar 2d. Pada Mode 0, Mode 1 dan Mode 2 Timer 0 dan Timer 1 masing-masing bekerja sendiri, artinya bisa dibuat Timer 0 bekerja pada Mode 1 dan Timer 1 bekerja pada Mode 2, atau kombinasi mode lainnya sesuai dengan keperluan. Pada Mode 3 TL0, TH0, TL1 dan TH1 dipakai bersama-sama untuk menyusun sistem timer yang tidak bisa di-kombinasi lain. Susunan TL0, TH0, TL1 dan TH1 pada masing-masing mode adalah sebagai berikut:

Mode 0 – Pencacah Biner 13 bit

Gambar 9.2 Mode 0 - Pencacah Biner 13 Bit

Page 76: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 76

Pencacah biner dibentuk dengan TLx (maksudnya bisa TL0 atau TL1) sebagai pencacah biner 5

bit (meskipun kapasitas sesungguhnya 8 bit), limpahan dari pencacah biner 5 bit ini dihubungkan ke THx (maksudnya bisa TH0 atau TH1) membentuk sebuah untaian pencacah biner 13 bit, limpahan dari pencacah 13 bit ini ditampung di TFx (maksudnya bisa TF0 atau

TF1) yang berada di dalam register TCON. Mode 1 – Pencacah Biner 16 bit

Gambar 9.3 Mode 1 - Pencacah Biner 16 Bit

Mode ini sama dengan Mode 0, hanya saja register TLx dipakai sepenuhnya sebagai pencacah

biner 8 bit, sehingga kapasitas pencacah biner yang tersbentuk adalah 16 bit. Seiring dengan sinyal denyut, kedudukan pencacah biner 16 bit ini akan bergerak dari $0000 (biner 0000 0000 0000 0000), $0001, $0002 … sampai $FFFF (biner 1111 1111 1111 1111), kemudian melimpah kembali menjadi $0000. Mode 2 – Pencacah Biner 8 bit dengan Isi Ulang

Gambar 9.4 Mode 2 - Pencacah Biner 8 Bit dengan Isi Ulang

TLx dipakai sebagai pencacah biner 8 bit, sedangkan THx dipakai untuk menyimpan nilai yang diisikan ulang ke TLx, setiap kali kedudukan TLx melimpah (berubah dari $FF menjadi $00).

Dengan cara ini bisa didapatkan sinyal limpahan yang frekuensinya ditentukan oleh nilai yang disimpan dalam TH0.

Mode 3 – Gabungan Pencacah Biner 16 bit dan 8 Bit

Gambar 9.5 Mode 3 – Gabungan Pencacah Biner 16 Bit dan 8 Bit

Pada Mode 3 TL0, TH0, TL1 dan TH1 dipakai untuk membentuk 3 untaian pencacah, yang

pertama adalah untaian pencacah biner 16 bit tanpa fasiltas pemantau sinyal limpahan yang dibentuk dengan TL1 dan TH1. Yang kedua adalah TL0 yang dipakai sebagai pencacah biner 8

Page 77: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 77

bit dengan TF0 sebagai sarana pemantau limpahan. Pencacah biner ketiga adalah TH0 yang

dipakai sebagai pencacah biner 8 bit dengan TF1 sebagai sarana pemantau limpahan.

Register Pengatur Timer

Register TMOD dan register TCON merupakan register pembantu untuk mengatur kerja Timer 0 dan Timer 1, kedua register ini dipakai bersama oleh Timer 0 dan Timer 1.

Gambar 9.6 Denah susunan bit dalam register TMOD

Register TMOD dibagi menjadi 2 bagian secara simitris, bit 0 sampai 3 register TMOD (TMOD bit 0

.. TMOD bit 3) dipakai untuk mengatur Timer 0, bit 4 sampai 7 register TMODE (TMOD bit 4 .. TMOD bit 7) dipakai untuk mengatur Timer 1, pemakaiannya sebagai berikut : 1. Bit M0/M1 dipakai untuk menentukan Mode Timer seperti yang terlihat dalam Tabel di

Gambar 3a. 2. Bit C/T* dipakai untuk mengatur sumber sinyal denyut yang diumpankan ke pencacah

biner. Jika C/T*=0 sinyal denyut diperoleh dari osilator kristal yang frekuensinya sudah

dibagi 12, sedangkan jika C/T*=1 maka sinyal denyut diperoleh dari kaki T0 (untuk Timer

0) atau kaki T1 (untuk Timer 1).

3. Bit GATE merupakan bit pengatur saluran sinyal denyut. Bila bit GATE=0 saluran sinyal denyut hanya diatur oleh bit TRx (maksudnya adalah TR0 atau TR1 pada register TCON).

Bila bit GATE=1 kaki INT0 (untuk Timer 0) atau kaki INT1 (untuk Timer 1) dipakai juga

untuk mengatur saluran sinyal denyut (lihat Gambar 4).

Gambar 9.7 Denah susunan bit dalam register TCON

Register TCON dibagi menjadi 2 bagian, 4 bit pertama (bit 0 .. bit 3, bagian yang diarsir dalam Gambar 3b) dipakai untuk keperluan mengatur kaki INT0 dan INT1, ke-empat bit ini dibahas dibagian lain.

BIT SYMBOL FUNCTION

TCON.7 TF1 Timer 1 overflow flag. Set by hardware on Timer/Counter overflow. Cleared by hardware when processor vector to interrupt routine, or clearing the bit in software.

TCON.6 TR1 Timer 1 Run control bit . Set/ cleared by software to turn Timer/ Counter on/off

TCON.5 TF0 Timer 0 overflow flag. Set by hardware on Timer/Counter overflow. Cleared by hardware when processor vector to

Page 78: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 78

interrupt routine, or clearing the bit in software.

TCON.4 TR0 Timer 1 Run control bit . Set/ cleared by software to turn Timer/ Counter on/off

TCON.3 IE1 Interrupt 1 Edge flag. Set by hardware when external interrupt edge detected. Cleared when interrupt processed.

TCON.2 IT1 Interrupt 1 type control bit. Set/ cleared by software to specefy falling edge/ low level trigerred external interupts

TCON.1 IE0 Interrupt 0 Edge flag. Set by hardware when external interrupt edge detected. Cleared when interrupt processed.

TCON.0 IT0 Interrupt 0 type control bit. Set/ cleared by software to specefy falling edge/ low level trigerred external interupts

Sisa 4 bit dari register TCON (bit 4..bit 7) dibagi menjadi 2 bagian secara simitris yang dipakai

untuk mengatur Timer0/Timer 1, sebagai berikut: 1. Bit TFx (maksudnya adalah TF0 atau TF1) merupakan bit penampung limpahan (lihat

Gambar 2), TFx akan menjadi ‘1’ setiap kali pencacah biner yang terhubung padanya melimpah (kedudukan pencacah berubah dari $FFFF kembali menjadi $0000). Bit TFx di-

nol-kan dengan istruksi CLR TF0 atau CLR TF1. Jika sarana interupsi dari Timer 0/Timer 1

dipakai, TRx di-nol-kan saat MCS51 menjalankan rutin layanan interupsi (ISR – Interupt

Service Routine). 2. Bit TRx (maksudnya adalah TR0 atau TR1) merupakan bit pengatur saluran sinyal denyut,

bila bit ini =0 sinyal denyut tidak disalurkan ke pencacah biner sehingga pencacah berhenti

mencacah. Bila bit GATE pada register TMOD =1, maka saluran sinyal denyut ini diatur bersama oleh TRx dan sinyal pada kaki INT0/INT1 (lihat Gambar 4).

Mengatur Timer

Gambar 9.8 merupakan bagan susunan rangkaian yang bisa terjadi pada Timer 1 secara lengkap, digambarkan pula hubungan-hubungan semua register pembentuk dan pengatur Timer

1. Gambar ini berlaku pula untuk Timer 0. Dalam pemakaian sesungguhnya, rangkaian yang dipakai hanya sebagian dari rangkaian lengkap tersebut, sesuai dengan keperluan sistem yang dibangun. Rangkaian yang dikehendaki dibentuk dengan mengatur register TMODE, sedangkan kerja dari Timer dikendalikan lewat

register TCON.

Page 79: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 79

Gambar 9.8. Diagram blok timer/ counter Setelah MCS51 di-reset register TMOD bernilai $00, hal ini berarti :

1. bit C/T* =’0’, menurut Gambar 9.8 keadaan ini membuat saklar S1 ke posisi atas, sumber sinyal denyut berasal dari osilator kristal yang frekuensinya sudah dibagi 12, pencacah biner yang dibentuk dengan TL1 dan TH1 berfungsi sebagai timer. Jika sistem yang dirancang memang menghendaki Timer 1 bekerja sebagai timer maka bit C/T* tidak perlu

diatur lagi. Tapi jika sistem yang dirancang menghendaki agar Timer 1 bekerja sebagai counter untuk menghitung pulsa yang masuk lewat kakai T1 (P3.5), maka posisi saklar S1 harus dikebawahkan dengan membuat bit C/T* menjadi ‘1’.

2. bit GATE=’0’, hal ini membuat output gerbang OR selalu ‘1’ tidak dipengaruhi keadaan ‘0’

atau ‘1’ pada kaki INT1 (P3.3). Dalam keadaan semacam ini, saklar S2 hanya dikendalikan lewat bit TR1 dalam register TCON. Jika TR1=’1’ saklar S2 tertutup sehingga sinyal denyut

dari S1 disalurkan ke sistem pencacah biner, aliran sinyal denyut akan dihentikan jika TR=’0’. Sebaliknya jika bit GATE=’1’, output gerbang OR akan mengikuti keadaan kaki INT1, saat

INT1=’0’ apa pun keadaan bit TR1 output gerbang AND selalu =’0’ dan saklar S1 selalu terbuka, agar saklar S1 bisa tertutup kaki INT1 dan bit TR1 harus =’1’ secara

bersamaan.Jika sistem yang dirancang menghendaki kerja dari timer/counter dikendalikan dari sinyal yang berasal dari luar chip, maka bit GATE harus dibuat menjadi ‘1’

3. bit M1 dan M0=’0’, berarti TL1 dan TH1 disusun menjadi pencacah biner 13 bit (Mode 0),

jika dikehendaki Timer 1 bekerja pada mode 1 seperti terlihat dalam Gambar 4, maka bit M1 harus dibuat menjadi ‘0’ dan bit M0 menjadi ‘1’.

Pengetahuan di atas dipakai sebagai dasar untuk mengatur dan mengendalikan Timer seperti terlihat dalam contoh-contoh berikut : Setelah reset TMOD bernilai $00, berarti Timer 1 bekerja sebagai pencacah biner 13 bit, sumber

sinyal denyut dari osilator kristal atau Timer 1 bekerja sebagai ‘timer’, bit GATE =’0’ berarti

kaki INT1 tidak berpengaruh pada rangkaian sehingga Timer 1 hanya dikendalikan dari bit TR1.

Page 80: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 80

Dalam pemakaian biasanya dipakai pencacah biner 16 bit, untuk keperluan itu instruksi yang diperlukan untuk mengatur TMOD adalah :

MOV TMOD,#00010000b

Catatan:dalam instruksi di atas tanda ‘#’ menyatakan bagian di belakangnya adalah bilangan

konstan yang akan diisikan ke TMOD, ‘b’ merupakan yang menandakan bahwa

bilangan di belakangnya adalah bilangan biner. Penulisan dengan bilangan biner semacam ini, memudahkan untuk mengenali dengan cepat bit-bit apa saja yang diisikan ke TMOD.

Bilangan biner 00010000b diisikan ke TMOD, berakibat bit 7 TMOD (bit GATE) bernilai ‘0’, bit 6 (bit C/T*) bernilai ‘0’, bit 5 dan 4 (bit M1 dan M0) bernilai ‘01’, ke-empat bit ini dipakai untuk

mengatur Timer 1, sehingga Timer 1 bekerja sebagai timer dengan pencacah biner 16 bit yang dikendalikan hanya dengan TR1. Jika dikehendaki pencacah biner dipakai sebagai counter untuk mencacah jumlah pulsa yang masuk lewat kaki T1 (P3.5), instruksinya menjadi :

MOV TMOD,#01010000b

Perbedaannya dengan instruksi di atas adalah dalam instruksi ini bit 6 (bit C/T*) bernilai ‘1’.

Selanjutnya jika diinginkan sinyal dari perangkat keras di luar chip MCS51 bisa ikut mengendalikan Timer 1, instruksi pengatur Timer 1 akan menjadi :

MOV TMOD,#11010000b

Dalam hal ini bit 7 (bit GATE) bernilai ‘1’. Setelah mengatur konfigurasi Timer 0 seperti di atas, pencacah biner belum mulai mencacah sebelum diperintah dengan instruksi :

SETB TR1

Perlu diingatkan jika bit GATE = ‘1’, selama kaki INT1 bernilai ‘0’ pencacah biner belum akan mencacah. Untuk menghentikan proses pencacahan, dipakai instruksi

CLR TR1

Di atas hanya dibahas Timer 1 saja, tata canya untuk Timer 0 persis sama. Yang perlu diperhatikan adalah register TMOD dipakai untuk mengatur Timer 0 dan juga Timer 1,

sedangkan TMOD tidak bisa dialamati secara bit (non bit addressable) sehingga jika jika kedua Timer dipakai, pengisian bit-bit dalam register TMOD harus dipikirkan sekali gus untuk Timer 0

dan Timer 1. Bit TR1 dan TR0 yang dipakai untuk mengendalikan proses pencacahan, terletak di dalam

register TCON (memori-data internal nomor $88) yang bisa dialamati secara bit (bit

addressable). Sehingga TR0 dan TR1 bisa diatur secara terpisah (dengan perintah SETB atau CLR), tidak seperti mengatur TMOD yang harus dilakukan secara bersamaan.

Demikian pula bit penampung limpahan pencacah biner TF0 dan TF1, juga terletak dalam register TCON yang masing-masing bisa di-monitor sendiri.

Sebagimana ditunjukkan pada gambar 9.8 mikrokontroller dapat beraksi sebagai timer atau counter, sesuai dengan kebutuhan. Perhatikan pada saklar sebelah kiri dan kanan pada diagram blok tersebut. Mikrokontroller akan berfungsi sebagai timer ketika saklar diposisikan ke atas dan sebaliknya akan berfungsi sebagai counter bila saklar diposisikan ke bawah, dengan mengontrol bit C/T pada register TMOD. Posisi saklar sebelah kanan, bergantung pada bit GATE (register TMOD), TR1 ( register TCON0 dan INT1.

Page 81: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 81

Pada keluarga MCS-51 terdapat dua buah timer/ counter 16 bit, yang dapat dikonfigurasikan sebagai timer atau counter, 8 bit, 13 bit atau 16 bit sesuai dengan mode yang dipilih. Gambar berikut merupakan contoh aplikasi Counter 8 bit dengan menggunakan mode 3

Gambar 9.9 Diagram blok timer counter

Percobaan 9.1. Mencacah pulsa clock dengan aplikasi Mode 0 sebagai counter 13 it dengan output LED Pada percobaan ini, pulsa diambil melalui clock generator yang dibangkitkan oleh IC 555 yang mempunyai frekuensi 1 Hz, hasil cacahan biner pada register counter dari Timer 0 akan ditampilkan pada LED. Lakukan beberapa langkah percobaan sebagai berikut: 1. Hubungkan 1 buah kabel antara P3.4 dengan output astable/ clock IC 555 2. Hubungkan jumper konektor LED_EN 3. Hubungkan modul Microcontroller Trainer dengan power supply +5V 4. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 5. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Page 82: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 82

Gambar 9.2 Diagram alir percobaan 9.1

6. Ketik program berikut ini: org 0h Start: Mov TMOD,#00000100b ; TIMER 0

; mode 0 counter 13 bit sebagai counter Setb TR0 ; TR0 = 1, start counting Get: Mov A, TL0 ; A = TL0 CPL A ; A = NOT A Mov P0, A ; P0 = A. Display ke LED Sjmp Get ; Looping Forever End

D1

P0.0..P0.7

D8

VCC

J3

EN LED12

Gambar 9.3. Rangkaian display LED

7. Simpanlah program yang anda ketik dan beri nama : prog91a.asm

8. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

Page 83: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 83

9. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

10. Lakukan pengamatan pada LED ? dan lengkapi tabel berikut.

Clock D 1 D 2 D 3 D 4 D 5 D 6 D 7 D 8 1 2

3 ;

; 20

Percobaan 9.2. Mencacah pulsa clock dengan aplikasi Timer 0, Mode 3 sebagai counter 8 bit dengan output 7 Segmen Pada percobaan ini, pulsa diambil melalui clock generator yang dibangkitkan oleh IC 555 yang mempunyai frekuensi 1 Hz ( output astable ), hasil cacahan biner pada register counter akan ditampilkan pada 7 Segmen. Lakukan beberapa langkah percobaan sebagai berikut: 1. Hubungkan 1 buah kabel antara P3.5 dengan output clock IC 555 2. Hubungkan jumper konektor 7Segmen_EN 3. Hubungkan modul Microcontroller Trainer dengan power supply +5V 4. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 5. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Inisialisasi Timer0

Mode 0 sbg counter 13 bit

TMOD #00000100b

Start

Konversi Hex ke Desimal

Jalankan Timer

Setb TR0

Display ke 7 Segmen

Ambil data counter

A TL0

Gambar 9.4. Diagram alir percobaan 9.2 6. Ketik program berikut ini:

ratusan equ 30h puluhan equ 31h satuan equ 32h Org 0h

Page 84: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 84

Mov TMOD,#00000100b ; mode 0 counter 13bit timer 0 Setb TR0 ; TR0 = 0, start counting Get: Mov A, TL0 ; A = TL0 Call Bin2Dec ; panggil subroutine biner ke desimal Call Display7Segmen ; panggil subroutine display 7 segmen Sjmp Get ;Looping Forever ; Bin2Dec: mov b,#100d div ab mov ratusan,a mov a,b mov b,#10d div ab mov puluhan,a mov satuan,b ret ; Display7Segmen: clr P3.5 clr P3.6 clr P3.7 mov A, ratusan mov DPTR,#Data7segmen movc A,@A+DPTR mov P0,A call delay ; setb P3.5 clr P3.6 clr P3.7 mov A, puluhan mov DPTR,#Data7segmen movc A,@A+DPTR mov P0,A call delay ; clr P3.5 ; setb P3.6 clr P3.7 mov A, satuan mov DPTR,#Data7segmen movc A,@A+DPTR mov P0,A call delay ret ; delay: mov R0,#0 delay1: mov R2,#0fh djnz R2,$ djnz R0,delay1 ret

Page 85: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 85

; Data7segmen: db 11000000b,11111001b,10100100b,10110000b,10011001b db 10010010b,10000010b,11111000b,10000000b,10010000b ; end 7. Simpanlah program yang anda ketik dan beri nama : prog92a.asm

8. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

9. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

10. Lakukan pengamatan pada display 7 segmen ? dan lengkapi tabel berikut.

Clock ke Display 7 Segmen 1

2 3

4 5

; 20

11. Lakukan modifikasi pada program tersebut untuk menampilkan data counter ke

LCD karakter. FUNGSI TIMER Pada keluarga MCS-51 terdapat dua buah timer/ counter 16 bit, yang dapat dikonfigurasikan sebagai timer atau counter, 8 bit, 13 bit atau 16 bit sesuai dengan mode yang dipilih. Gambar berikut merupakan contoh aplikasi Counter 16 bit dengan menggunakan mode 1

Page 86: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 86

Gambar 9.5. Diagram blok timer counter mode 1 16 bit

Percobaan 9.3. Membangkitkan clock dengan aplikasi Timer 1, sebagai timer 16 bit dengan output LED Pada percobaan ini, clock akan dibangkitkan dengan menggunakan fungsi timer 16 bit, dengan periode 1 detik, Ton = 0,5 detik dan Toff = 0,5 detik, dengan tampilan LED

Gambar 9.6. Periode clock

Pada mode ini, dengan kristal 12MHz maka timer akan overflow setiap 65.536 udetik. Pada percobaan ini, untuk membangkitkan interupsi setiap 1000 udetik maka data yang harus diisikan pada register TL1 dan TH1 adalah sebagai berikut: 65536 - 10000 = 55536 d or D8F0h Maka interupsi TF1 akan segera dibangkitkan setiap 1000 x 1 udetik = 0,01 detik pada pemrograman ini, RO diimplementasikan sebagai counter software, Register R0 akan increment setiap Timer 1 overflow. Jika register R7 telah mendeteksi nilai 50 maka port P0.0 ( LED D0 ) akan nyala selama = 0,01 x 50 detik = 0,5 detik. Lakukan beberapa langkah percobaan sebagai berikut: 1. Lepas kabel yang menghubungkan antara P3.5 dengan output clock IC 555 2. Hubungkan jumper konektor LED_EN 3. Hubungkan modul Microcontroller Trainer dengan power supply +5V 4. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer

Page 87: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 87

5. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Gambar 9.7. Diagram alir (a) rutin utama (b)subrutin delay

6. Ketik program berikut ini:

Org 0h Start: Setb P0.0 ;P0.0 = 1 call Delay ;call delay time Clr P0.0 ;P0.0 = 0 call delay ;call delay time Sjmp Start ;Looping Forever ; Delay: Mov R0,#0 ;R0 = 0 Mov TMOD,#00010000b ;Mode 1, Fungsi =Timer 1 16 bit Load: Mov TH1, #0D8h ;TH1 = D8h Mov TL1, #0F0h ; TL1 = F0h Setb TR1 ; TR1 = 1, Start Running OFlow: JNB TF1, OFlow ; jump to OFlow if TF1 =0 Clr TR1 ; TR1 = 0 Clr TF1 : TF1 = 0 Inc R0 ; R0 = R0+1

Page 88: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 88

CJNE R0,#50,Load Ret ; End 7. Simpanlah program yang anda ketik dan beri nama : prog93.asm

8. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

9. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

10. Lakukan pengamatan pada nyala LED 11. Lakukan modifikasi pada program tersebut untuk membangkitkan frekuensi 10 Hz, 100 Hz,

dan 500 Hz dan lakukan pengamatan pada layar osciloscope

Soal Kuis:

1. Pelajari perbedaan antara Timer dan Counter 2. Pelajari register TMOD, TCON, fungsi dari tiap-tiap bit dari register tersebut 3. Pelajari tentang Mode 0,1,2, dan 3, apakah sifat dan fungsinya, termasuk bagaimana

menggunakannya

Page 89: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 89

PERCOBAAN 9 KOMUNIKASI SERIAL RS232

TUJUAN 1. Mahasiswa memahami rangkaian interface port serial 2. Mahasiswa memahami mengkonfigurasikan komunikasi serial pada port serial PC 3. Mahasiswa memahami penulisan bahasa assembly untuk konfigurasi port serial 4. Mahasiswa memahami penulisan pemrograman delphi untuk komunikasi dengan

mikrokontroller. DASAR TEORI Umumnya orang selalu menganggap port seri pada MCS51 adalah UART yang bekerja secara asinkron, jarang yang menyadari port seri tersebut bisa pula bekerja secara sinkron, pada hal sebagai port seri yang bekerja secara sinkron merupakan sarana yang baik sekali untuk menambah input/output bagi mikrokontroler.

Gambar 10.1. Komunikasi serial dengan komputer

Dikenal 2 macam cara transmisi data secara seri. Kedua cara tersebut dibedakan oleh sinyal denyut (clock) yang dipakai untuk men-‘dorong’ data seri, kalau clock dikirim bersama dengan data seri, cara tersebut dikatakan sebagai transmisi data seri secara sinkron. Sedangkan dalam transmisi data seri secara asinkron, clock tidak dikirim bersama data seri, rangkaian penerima data harus membangkitkan sendiri clock pendorong data seri. Port seri MCS51 bisa dipakai dalam 4 mode kerja yang berbeda. Dari 4 mode tersebut, 1 mode diantaranya bekerja secara sinkron dan 3 lainnya bekerja secara asinkron. Secara ringkas ke-empat mode kerja tersebut bisa dibedakan sebagai berikut:

Mode 0 Mode ini bekerja secara sinkron, data seri dikirim dan diterima melalui kaki P3.0

(RxD), dan kaki P3.1 (TxD) dipakai untuk menyalurkan clock pendorong data seri

yang dibangkitkan MCS51. Data dikirim/diterima 8 bit sekali gus, dimulai dari bit yang bobotnya paling kecil (bit 0) dan diakhiri dengan bit yang bobotnya paling besar (bit 7). Kecepatan pengiriman data (baud rate) adalah 1/12 frekuensi osilator kristal.

Mode 1 Mode ini dan mode-mode berikutnya bekerja secara asinkron, data dikirim melalui kaki P3.1 (TxD) dan diterima melalui kaki P3.0 (RxD).

Page 90: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 90

Pada Mode 1 data dikirim/diterima 10 bit sekali gus, diawali dengan 1 bit start, disusul dengan 8 bit data yang dimulai dari bit yang bobotnya paling kecil (bit 0), diakhiri dengan 1 bit stop. Pada MCS51 yang berfungsi sebagai penerima bit stop ditampung pada RB8 dalam register SCON. Kecepatan pengiriman data (baud rate)

bisa diatur sesuai dengan keperluan. Mode inilah yang umum dikenal sebagai UART (Universal Asynchronous

Receiver/Transmitter).

Mode 2 Data dikirim/diterima 11 bit sekali gus, diawali dengan 1 bit start, disusul 8 bit data yang dimulai dari bit yang bobotnya paling kecil (bit 0), kemudian bit ke 9 yang bisa diatur lebih lanjut, diakhiri dengan 1 bit stop. Pada MCS51 yang berfungsi sebagai pengirim, bit 9 tersebut berasal dari bit TB8 dalam register SCON. Pada MCS52 yang berfungsi sebagai penerima, bit 9

ditampung pada bit RB8 dalam register SCON, sedangkan bit stop diabaikan tidak ditampung. Kecepatan pengiriman data (baud rate) bisa dipilih antara 1/32 atau 1/64 frekuensi osilator kristal.

Mode 3 Mode ini sama dengan Mode 2, hanya saja kecepatan pengiriman data (baud rate) bisa diatur sesuai dengan keperluan, seperti halnya Mode 1.

Pada mode asinkron (Mode 1, Mode 2 dan Mode 3), port seri MCS51 bekerja secara full

duplex, artinya pada saat yang sama port seri ini bisa mengirim data sekali gus menerima data. Register SBUF merupakan register penghubung port seri. Dalam ke-empat mode di atas, semua

instruksi yang mengakibatkan perubahan isi SBUF akan mengakibatkan port seri mengirimkan

data keluar dari MCS51. Agar port seri bisa menerima data, bit REN dalam register SCON harus

bernilai ‘1’. Pada mode 0, proses penerimaan data dimulai dengan instruksi CLR RI, sedangkan dalam mode lainnya proses penerimaan data diawali oleh bit start yang bernilai ‘0’. Data yang

diterima port seri dari luar MCS51, diambil dengan instruksi MOV A,SBUF. Mengambil data dari SBUF dan menyimpan data ke SBUF sesungguhnya bekerja pada dua

register yang berlainan, meskipun nama registernya sama-sama SBUF.

Register-register Port Seri MCS51

MCS51 dilengkapi dengan 2 register dan beberapa bit tambahan untuk keperluan pemakai port seri.

Gambar 10.2. Register SBUF

SBUF merupakan SFR (Special Function Register) yang terletak pada memori-data internal

dengan nomor $99. SBUF mempunyai kegunaan ganda, data yang disimpan pada SBUF akan dikirim keluar MCS51 lewat port seri, sedangkan data dari luar MCS51 yang diterima port seri diambil dari SBUF pula. Jadi meskipun hanya menempati satu nomor memori-data internal (nomor $99), sesungguhnya SBUF terdiri dari 2 register yang berbeda.

Page 91: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 91

Gambar 10.3 Register SCON

SM2

Enables the multiprocessor communication feature in Modes 2 and 3. In Mode 2 or 3, if SM2 is set to 1, then Rl will not be activated if the received 9th data bit (RB8) is 0. In Mode 1, if SM2=1 then RI will not be activated if a valid stop bit was not received. In Mode 0, SM2 should be 0.

REN Enables serial reception. Set by software to enable reception. Clear by software to disable reception.

TB8 The 9th data bit that will be transmitted in Modes 2 and 3. Set or clear by software as desired.

RB8 In Modes 2 and 3, is the 9th data bit that was received. In Mode 1, it SM2=0, RB8 is the stop bit that was received. In Mode 0, RB8 is not used.

TI

Transmit interrupt flag. Set by hardware at the end of the 8th bit time in Mode 0, or at the beginning of the stop bit in the other modes, in any serial transmission. Must be cleared by software.

RI Receive interrupt flag. Set by hardware at the end of the 8th bit time in Mode 0, or halfway through the stop bit time in the other modes, in any serial reception (except see SM2). Must be cleared by software.

SCON merupakan SFR (Special Function Register) yang terletak pada memori-data internal dengan nomor $98, merupakan register utama untuk mengatur kerja port seri MCS51. Setelah

reset semua bit dalam SCON bernilai ‘0’. 1. Bit SM0 dan bit SM1 (bit 7 dan bit 6 pada register SMOD) dipakai untuk menentukan mode

kerja port seri. Setelah reset kedua bit ini bernilai ‘0’

2. Bit REN (bit 4) dipakai untuk mengaktipkan kemampuan port seri menerima data. Pada mode 0 kaki RxD (kaki P3.0) dipakai untuk mengirim data seri (REN=’0’) dan juga untuk

menerima data seri (REN=’1’). Sifat ini terbawa pula pada saat port seri bekerja pada mode 1, 2 dan 3, meskipun pada mode-mode tersebut kaki RxD hanya dipakai untuk mengirim

data, agar kaki RxD bisa dipakai untuk menerima data terlebih dulu harus dibuat REN=’1’.

Setelah reset bit REN bernilai ‘0’.

3. Pada mode kerja 2 dan mode kerja 3, port seri bekerja dengan 9 bit data, SBUF yang kapasitasnya 8 bit tidak cukup untuk keperluan ini. Bit ke-sembilan yang akan dikirim terlebih dulu diletakkan di TB8 (bit 3), sedangkan bit RB8 (bit 2) merupakan bit yang dipakai untuk menampung bit ke-sembilan yang diterima port seri.

4. Pada mode kerja 1, RB8 dipakai untuk menampung bit stop yang diterima, dengan demikian apa bila RB8 bernilai ‘1’ maka data diterima dengan benar, sebaliknya apa bila RB8=’0’

berarti terjadi kesalahan kerangka (framing error). Kalau bit SM2 (bit 5) bernilai ‘1’, jika terjadi kesalahan kerangka, RI tidak akan menjadi ‘1’

meskipun SBUF sudah berisi data dari port seri.

Page 92: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 92

Bit ke 9 ini bisa dipakai sebagai bit pariti, hanya saja bit pariti yang dikirim harus ditentukan sendiri dengan program dan diletakkan pada TB8, dan bit pariti yang diterima

pada RB8 dipakai untuk menentukan integritas data secara program pula. Tidak seperti dalam UART standard, semuanya itu dikerjakan oleh perangkat keras dalam IC UART.

5. Bit TI (bit 1) merupakan petanda yang setara dengan petanda TDRE (Transmitter Data Register Empty) yang umum dijumpai pada UART standard. Setelah port seri selesai mengirim data yang disimpan ke-dalam SBUF, bit TI akan bernilai ‘1’ dengan sendirinya, bit ini harus di-nol-kan dengan program agar bisa dipakai untuk memantau keadaan SBUF

dalam pengiriman data berikutnya. Sub-rutin SerialOut berikut dipakai untuk mengirim data seri, bisa dipakai untuk semua

mode port seri. Baris 02 menunggu TI menjadi ‘1’, dimaksud untuk memastikan pengiriman data sebelumnya sudah selesai. Data yang akan dikirim sebelumnya sudah disimpan di A, pada baris 03 data tersebut dikirim melalui port seri dengan cara

meletakannya di SBUF. Agar TI bisa dipakai untuk memantau keadaan SBUF pada

pengiriman data berikutnya, pada baris 04 TI di-nol-kan.

SerialOut: JNB TI,$ ; tunggu data sebelumnya selesai dikirim MOV SBUF,A ; kirim data baru CLR TI ; petanda ada pengiriman baru

RET

6. Bit RI (bit 0) merupakan petanda yang setara dengan petanda RDRF (Receiver Data Register Full) yang umum dijumpai pada UART standard. Setelah SBUF menerima data dari port seri, bit RI akan bernilai ‘1’ dengan sendirinya, bit ini harus di-nol-kan dengan program agar bisa dipakai untuk memantau keadaan SBUF dalam penerimaan data berikutnya.

Sub-rutin SerialIn berikut dipakai untuk menerima data seri, bisa dipakai untuk semua

mode port seri. Baris 02 menunggu RI menjadi ‘1’, dimaksud untuk memastikan sudah ada

data baru yang diterima pada SBUF. Pada baris 03 data pada SBUF diambil ke A. Agar RI bisa dipakai untuk memantau keadaan SBUF pada pengiriman data berikutnya, pada baris 04 RI di-nol-kan.

SerialIn:

JNB RI,$ ; tunggu SBUF berisi data baru MOV A,SBUF ; ambil data CLR RI ; pentanda data sudah diambil RET

Gambar 1.18 Bit SMOD dalam Register PCON

Mode 0 port serial

UART merupakan standard yang dipakai untuk komunikasi data seri dengan komputer, komunikasi data seri dengan modem dan lain sebagainya. Komunikasi data seri secara sinkron seperti mode 0, merupakan komunikasi data seri yang banyak dipakai untuk menghubungkan IC-IC digital dalam sebuah sistem, misalnya pada IC

Page 93: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 93

Serial EEPROM, cara ini belakangan menjadi makin populer karena rangkaiannya sederhana dan tidak makan tempat.

Dalam dunia digital, dikenal 3 macam teknik transmisi data seri secara sinkron untuk keperluan di atas, yang paling terkenal adalah teknik ciptaan Philips yang dinamakan sebagai I2C (Inter IC Communication), Motorola mengenalkan teknik yang dinamakan sebagai SPI (Serial Peripheral Interface) dan National Semiconductor menciptakan MicroWire.

Transmisi data seri yang dipakai pada mode 0, tidak sepadan dengan 3 teknik yang disebut di atas, tapi dengan perancangan yang cermat mode 0 ini bisa dihubungkan ke SPI, sehingga bisa dipakai untuk menghubungkan MCS51 dengan mikrokontroler Motorola MC68HC11. Sinyal data seri sinkron yang ada pada kaki P3.0 dan P3.1, sesungguhnya murni merupakan

sinyal yang biasa dipakai untuk mengendalikan shift-register, dengan demikian dengan menghubungkan shift register ke port seri, bisa menambah port input maupun port output dengan mudah.

Baud Rate

Baud rate pada mode 0 adalah tertentu: pada mode 0, Baud Rate = 1/12 x Frekuensi Osilator. Baud rate pada mode 2 bergantung pada nilai bit SMOD pada SFR PCON. Jika SMOD = 0, baud rate adalah 1/64 frekuensi osilator. Jika SMOD=1, baud rate adalah 1/32 frekuensi osilator. Penentuan baud rate mode 2 adalah sebagai berikut:

,

Sedangkan baud rate pada mode 1 dan 3 ditentukan oleh nilai laju overflow dari Timer 1.

Menggunakan Timer 1 untuk membangkitkan Baud Rate Ketika timer 1 digunakan untuk membangkitkan clock baud rate, baud rate pada mode 1 dan 3 adalah ditentukan oleh laju overflow timer 1 dan nilai dari SMOD. Penentuan baud rate untuk mode 1 dan 3 adalah sebagai berikut:

Interupsi timer 1 harus disable pada aplikasi ini. Pada kebanyakan aplikasi, timer ini dioperasikan sebagai timer, dengan mode auto reload mode 2. Pada kasus ini baud rate diberikan dengan rumus sebagai berikut:

Salah satu komunikasi yang paling ampuh untuk diimplementasikan dalam sistem komunikasi digital adalah komunikasi dengan memanfaatkan jalur serial RS232. Mikrokontroller 89s51 telah memiliki fasilitas UART, sehingga dapat melakukan komunikasi secara serial dengan level RS2322 antar peralatan atau dengan komputer. MAX232 merupakan IC yang difungsikan untuk merubah format TTL ke RS232 atau sebaliknya.

Page 94: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 94

VCC

MAX232

138

1110

134526

129147

R1INR2INT1INT2IN

C+C1-C2+C2-V+V-

R1OUTR2OUTT1OUTT2OUT

+ 10u

P3.1 ( Tx )

+

10u

+

10u

P3.0 ( Rx )

15P1

PC DB9 Male

594837261

+10u

16

VCC

Gambar 10.2. Rangkaian skematik MAX232

Percobaan 10.1 Menghidupkan LED melalui komunikasi serial RS232 dengan Program Hyperterminal Pengujian sistem komunikasi antara mikrokontroller dengan port serial computer dapat dilakukan dengan memanfaatkan program hyperterminal pada sistem yang berbasis under windows ( 98, ME dan XP ). Kelebihan penggunakan program ini, tidak diperlukan suatu bahasa pemrograman dan kelemahannya, terbatas hanya pada proses pengujian. Pada percobaan ini LED dihidupkan dan dimatikan melalui pengiriman karakter (0 – 9 ) pada keyboard PC.

Gambar 10.1 Pemilihan menu communication pada Accessories

Page 95: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 95

Gambar 10.2 Pemilihan menu HyperTerminal pada communication

(a) (b)

Gambar 10.3. (a) Pemberian nama koneksi (b) Pemilihan koneksi pada COM1

(a) (b)

Gambar 10.4. (a) Properties serial komunikasi (b) windows HyperTerminal

Page 96: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 96

D1

P0.0..P0.7

D8

J3

EN LED12

VCC

Gambar 10.5. Display LED

Lakukan beberapa langkah percobaan sebagai berikut: 1. Hubungkan jumper konektor ke LED_EN 2. Hubungkan modul Microcontroller Trainer dengan power supply +5V 3. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 4. Buka Program Hyperterminal dan inputkan angka 0 s/d 9 pada keyboard PC

Gambar 10.6. (a) Diagram alir rutin utama (b) subrutine ambil karakter pada percobaan 10.1 5. Ketik program asembly berikut ini: org 0h nop call initserial gets:call inchar mov P0,a sjmp gets ; initserial:

Page 97: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 97

mov scon,#50h ; Konfigurasi komunikasi serial mode 1 mov tmod,#20h ; Baud rate 2400 BPS mov th1,#0F3h setb tr1 ret ; inchar: detect: jnb ri,detect ; Deteksi bit RI apakah data sudah diterima atau belum clr ri mov a,sbuf subb a,#30h ; merubah kode ascii menjadi integer cpl a ; komplemen A ret ; End 6. Simpanlah program yang anda ketik dan beri nama : hiper1a.asm

7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

9. Lakukan pengamatan pada nyala LED Soal Tantangan:

1. Rencanakan program assembly untuk pengambilan data pada port serial dan lakukan pendeteksian apakah tombol yang ditekan pada keyboard PC adalah ‘0’ dan ‘1’, bila tombol yang ditekan adalah ‘0’ maka LED yang terhubung pada P0 akan berputar ke kanan dan sebaliknya bila tombol yang ditekan adalah ‘1’ maka LED yang terhubung ke P0 akan berputara ke kiri.

2. Rencakan program assembly untuk mengambil data pada port serial dan lakukan pendeteksian apakah tombol yang ditekan pada keyboard PC adalah 0, 1,2 s/d 9. dan outputkan data tersebut pada 7 segmen, sesuai dengan angka yang ditekan.

3. Lakukan perhitungan pada baudrate port serial dengan kecepatan 9600 BPS, dan terapkan pada soal tantangan 2.

Percobaan 10.2a Mengambil data satu karákter pada mikrokontroller dengan Hyperterminal. Pada percobaan ini, data satu carácter akan dikirimkan dari mikrokontroller ke komputer melalui port serial dan ditampilkan pada layar Hyperterminal. Lakukan beberapa langkah percobaan sebagai berikut:

1. Hubungkan modul Microcontroller Trainer dengan power supply +5V 2. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 3. Buka Program Hyperterminal 4. Ketik program asembly berikut ini:

org 0h

nop

Page 98: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 98

call initserial mov A,#’1’ ; apa yang akan terjadi bila tanda petik dihilangkan

call sendout getout: sjmp getout ; initserial: mov scon,#42h ; Konfigurasi komunikasi serial mode 1 mov tmod,#20h ; Baud rate 2400 BPS mov th1,#0F3H setb tr1 ret ; Sendout: detecto: jnb ti,detecto; clr ti ; mov sbuf,a ; ret

Percobaan 10.2b Mengambil data karákter pada mikrokontroller dengan Hyperterminal. Pada percobaan ini, data akan dikirimkan dari mikrokontroller ke komputer melalui port serial dan ditampilkan pada layar Hyperterminal. Lakukan beberapa langkah percobaan sebagai berikut:

1. Hubungkan modul Microcontroller Trainer dengan power supply +5V 2. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 3. Buka Program Hyperterminal 4. Ketik program asembly berikut ini:

org 0h

nop call initserial mov dptr,#MyCharacter gets: clr A Movc A,@A+dptr cjne A,#0,Next sjmp getout Next: call sendout inc dptr sjmp gets getout: sjmp getout ; initserial: mov scon,#42h ; Konfigurasi komunikasi serial mode 1

Page 99: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 99

mov tmod,#20h mov th1,#0F3H; Baud rate 2400 BPS setb tr1 ret ;

Sendout: detecto: jnb ti,detecto; clr ti ; mov sbuf,a ; ret MyCharacter: DB ' Selamat Datang Di Laboratorium Mikrokontroller',13,10,0 End

5. Simpanlah program yang anda ketik dan beri nama : hiper2a.asm

6. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

7. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

Soal Tantangan:

1. Rencanakan program untuk cetak angka 1 sebanyak 1x, angka 2 sebanyak 2x, dan angka 3 sebanyak 3x pada program hyperterminal, putunjuk pakai DJNZ

2. Rencanakan program untuk mengambil data mikrokontroller melalui port serial dan

ditampilkan pada layer Hyperterminal, dengan data-data sebagai berikut, secara berturutan:

Nama : Budi Jenis Kelamin : Laki-Laki Tempat/ Tgl. Lahir : Surabaya, 12 September 1987

3. Rencanakan program untuk mengambil data saklar pada mikrontroller dan dikirimkan

melalui port serial dan ditampilkan pada layar Hyperterminal.

Page 100: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 100

SW1

SW8

P2.7..P2.0

Dengan keterangan sebagai berikut: Bila sw0 s/d sw7 yang terhubung ke P2 pada mikrontroller, ditekan secara bergantian maka mikrontroller akan mengirimkan data ke PC sesuai dengan tombol yang ditekan, bila sw0 ditekan maka carácter 0 akan dikirim, bila sw1 ditekan maka carácter 1 akan dikirim ke PC secara serial, dan bila tidak ada tombol yang ditekan maka akan memunculkan carácter ‘X’ dan seterusnya. Dengan format tampilan sebagai berikut: Tombol yang sedang ditekan: X

4. Rencanakan program untuk mengambil data ADC pada mikrontroller dan dikirimkan

melalui port serial dan ditampilkan pada layar Hyperterminal

VCC

D1

3V

G 74LS244

P3.2

10k

P3.3

P3.4

VCC

10

10k

VCC

VCC

150p

13

2

13

2

10k

8

R6

220

ADC0804

67

9

1112131415161718

194

5

123

+IN-IN

VREF/2

DB7DB6DB5DB4DB3DB2DB1DB0

CLKRCLKIN

INTR

CSRDWR

20P1.7..P1.0

PROG

RUN/ EN ADC

65

4

32

1

Dengan keterangan sebagai berikut:

Page 101: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 101

Data ADC yang diambil melalui port P2 ditampilkan pada 7 segmen, sehingga akan menampilan angka 000 s/d 255, selain ditampilkan ke 7 segmen data dari ADC juga ditampilkan pada program Hyperterminal, secara berkala setiap beberapa detik, dengan menggunakan delay. Dengan format tampilan sebagai berikut:

Data ADC: 000

5. Rencanakan program untuk mengambil data counter pada mikrokontroller, dengan Timer 0, mode 2 Autoreload sehingga akan mencacah dari 000 s/d 255, tampilkan data hasil cacahan tersebut pada 7 segmen dan kirim data hasil cacahan pada layer Hyperterminal, dengan format tampilan sebagai berikut: Data hasil cacahan: 000

6. Rencakan program untuk membuat jam digital dengan memanfaatkan Timer 0, mode

16 bit, mode1, dengan interupsi setiap 50.000 microsecond. Dengan tampilan pada 7 segmen, detik, menit dan jam, dengan format tampilan sebagai berikut:

Tanggal : 12-Mei-2008 Waktu : 00:00:00

Percobaan 10.3 Menghidupkan LED melalui komunikasi serial RS232 PC dengan Pemrograman Delphi Pada percobaan ini, data dikirimkan melalui port communication serial PC secara serial dan ditangkap oleh mikrokontroller untuk dioutputkan ke LED

D1

P0.0..P0.7

D8

J3

EN LED12

VCC

Gambar 10.7. Display LED

Page 102: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 102

Lakukan beberapa langkah percobaan sebagai berikut:

1. Hubungkan jumper konektor ke LED_EN 2. Hubungkan modul Microcontroller Trainer dengan power supply +5V 3. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Gambar 10.8. (a) Diagram alir rutin utama (b) subrutine ambil karakter pada percobaan 10.1

5. Ketik program asembly berikut ini:

org 0h nop call initserial gets: call inchar mov P0,a sjmp gets ; initserial: mov scon,#50h ; Konfigurasi komunikasi serial mode 1 mov tmod,#20h ; Baud rate 2400 BPS mov th1,#0F3 setb tr1 ret ; inchar: detect: jnb ri,detect ; Deteksi bit RI apakah data sudah diterima atau belum clr ri mov a,sbuf ret ; End

6. Simpanlah program yang anda ketik dan beri nama : prog101a.asm

Page 103: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 103

7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

9. Lakukan pengamatan pada nyala LED 10. Buka Program Delphi

Gambar 10.9 Diagram alir utama pengiriman data “1” ke port serial pada percobaan 10.1

11. Ketik Program Delphi berikut ini, untuk menjalankan komunikasi melalui port serial,

dengan tampilan sebagai berikut:

Atur properties Object Inspector, sebagai berikut:

Page 104: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 104

Pada Object Inspector tersebut menjelaskan : 1. BaudRate = 2400 2. Connected = True 3. DataBits = 8 4. Port = COM1 5. StopBits = 1 Stop Bit

Gambar 10.10. Tampilan program delphi untuk menghidupkan LED

Listing program Delphi: procedure TForm1.Button1Click(Sender: TObject); var data:byte; count:integer; begin data:=0; count:=1; comport1.write(data,count); end; procedure TForm1.Button2Click(Sender: TObject); var data:byte; count:integer; begin data:=255; count:=1; comport1.write(data,count); end;

Page 105: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 105

12. Jalankan program delphi dengan menekan tombol F9 atau RUN 13. Lakukan penekanan pada tiap-tiap button dan lakukan pengamatan.

Percobaan 10.3. Mengendalikan arah gerakan LED melalui komunikasi serial RS232 dengan pemrograman Delphi Pada percobaan ini, arah gerakan LED kekiri atau kekanan, dikendalikan melalui komunikasi sercara serial RS232. Lakukan beberapa langkah percobaan sebagai berikut: 1. Pasang jumper LED_EN pada modul praktek 2. Hubungkan modul Microcontroller Trainer dengan power supply +5V 3. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Gambar 10.11 Diagram alir utama percobaan 10.2

5. Ketik program asembly berikut ini:

org 0h nop call initserial gets: call inchar cjne a,#128,rotR sjmp rotL sjmp gets rotR: mov P0,#11111110b; call delay mov P0,#11111101b; call delay ; mov P0,#11111011b; call delay ; mov P0,#11110111b; call delay ;

Page 106: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 106

mov P0,#11101111b; call delay ; mov P0,#11011111b; call delay ; mov P0,#10111111b; call delay ; mov P0,#01111111b; call delay ; sjmp gets ; rotL: mov P0,#01111111b; call delay mov P0,#10111111b; call delay ; mov P0,#11011111b; call delay ; mov P0,#11101111b; call delay ; mov P0,#11110111b; call delay ; mov P0,#11111011b; call delay ; mov P0,#11111101b; call delay ; mov P0,#11111110b; call delay ; sjmp gets ; initserial: mov scon,#52h ;serial mode 1 configuration mov tmod,#20h ; Baud rate 2400 BPS mov th1,#-13 setb tr1 ret ; inchar: detect: jnb ri,detect ;detecting do data have been accepted or not yet.

clr ri mov a,sbuf ret ; delay: mov R0,#255 delay1:mov R2,#255 djnz R2,$ djnz R0,delay1 ret ; End 6. Simpanlah program yang anda ketik dan beri nama : prog102a.asm

Page 107: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 107

7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

9. Lakukan pengamatan pada nyala LED 10. Buka Program Delphi

Start

Inisialisasi

Serial Komunikasi

Baudrate=2400

Data 8 bit, no paritas, 1 stop bit

Kirim Data ke Port Serial

3F8h Data

Status THR=20h ?

Inisialisasi Data

Data := 1

End

Kirim Data ke Port Serial

3F8h Data

Status THR=20h ?

Inisialisasi Data

Data := 128

End

Pilih Putar Kanan Pilih Putar Kiri

Gambar 10.12 Diagram alir pemrograman delphi percobaan 10.2 11. Ketik Program Delphi berikut ini, untuk menjalankan komunikasi melalui port serial.

Gambar 10.13. Gambar tampilan program delphi untuk pengaturan LED procedure TForm1.Button1Click(Sender: TObject); var data:byte; count:integer; begin data:=0; count:=1; comport1.write(data,count); end;

Page 108: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 108

procedure TForm1.Button2Click(Sender: TObject); var data:byte; count:integer; begin data:=255; count:=1; comport1.write(data,count); end; 12. Simpanlah program yang anda ketik dan beri nama rotateserial.asm 13. Jalankan program delphi dengan menekan tombol F9 atau RUN 14. Lakukan penekanan pada tiap-tiap button dan lakukan pengamatan.

Percobaan 10.4. Pengambilan data SW melalui komunikasi serial RS232 PC dengan pemrograman Delphi Pada percobaan ini, arah gerakan LED kekiri atau kekanan, dikendalikan melalui komunikasi sercara serial RS232. Lakukan beberapa langkah percobaan sebagai berikut:

1. Hubungkan modul Microcontroller Trainer dengan power supply +5V 2. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 3. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program 4. Lakukan pengetikan program assembly sebagai berikut

org 0h

call initserial ; start: mov A,P2; ambil data dari SW call Sendout; kirim data ke PC sjmp start ; Sendout: detect: jnb ti,detect; clr ti ; mov sbuf,a ; ret ; initserial: mov scon,#52h;initialize serial mode 1 mov tmod,#20h;timer1 mode 2 mov th1,#0F3h;Reload value for baud rate 2400 setb tr1 ret end

5. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

6. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

Page 109: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 109

7. Lakukan pengamatan pada nyala LED 8. Buka Program Delphi, dan lakukan pemrograman Delphi dengan tampilan sebagai

berikut

7. Lakukan pengaturan pada properties dari object inspector berikut.

8. Pada Objeck Inspector pilih tabulasi Events, dan click dua kali pada OnRxChar.

9. Tampilan akhir program, sebagai berikut:

10. Lakukan pengetikan instruksi program, sebagai berikut:

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);

Page 110: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 110

var buff:string;y:integer; begin comport1.ReadStr(buff,count); y:=ord(buff[1]); edit1.text:=inttostr(y); end;

Percobaan 10.4 Pengambilan data ADC melalui komunikasi secara serial RS232 PC dengan pemrograman Delphi Pada percobaan ini, data ADC0804 diambil menggunakan port 1 mikrokontroller dan dikirimkan melalui port serial ke PC

VCC

D1

3V

G 74LS244

P3.2

10k

P3.3

P3.4

VCC

10

10k

VCC

VCC

150p

13

2

13

2

10k

8

R6

220

ADC0804

67

9

1112131415161718

194

5

123

+IN-IN

VREF/2

DB7DB6DB5DB4DB3DB2DB1DB0

CLKRCLKIN

INTR

CSRDWR

20P1.7..P1.0

PROG

RUN/ EN ADC

65

4

32

1

Gambar 10.14. Rangkaian ADC0804

Lakukan beberapa langkah percobaan sebagai berikut: 1. Pada saat langkah pemrograman posisikan saklar togle ke posisi PROG 2. Posisikan saklar togle ke RUN untuk mengaktifkan ADC0804 CS=0 3. Hubungkan modul Microcontroller Trainer dengan power supply +5V 4. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 5. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Page 111: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 111

Gambar 10.15. Diagram alir utama percobaan 10.3

6. Ketik program berikut ini:

org 0h call initserial ; start: call ADC; ambil data dari adc call Sendout sjmp start ; ADC: clr P3.3 nop setb P3.3 eoc: jb P3.2,eoc clr P3.4 mov A,P1 setb P3.4 ret ; Sendout: detect: jnb ti,detect; clr ti ; mov sbuf,a ; ret ; initserial: mov scon,#52h;initialize serial mode 1 mov tmod,#20h;timer1 mode 2 mov th1,#0F3h;Reload value for baud rate 2400 setb tr1 ret end 7. Simpanlah program yang anda ketik dan beri nama : prog103a.asm

8. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

9. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

Page 112: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 112

10. Buka Program Delphi

Gambar 10.16. Diagram alir pemrograman delphi percobaan 10.3

11. Ketik Program Delphi berikut ini, untuk menjalankan komunikasi melalui port serial

Gambar 10.17. Tampilan program delphi pengambilan data ADC 12. Simpanlah program yang anda ketik dan beri nama adcserial.asm 13. Jalankan program delphi dengan menekan tombol F9 atau RUN 14. Lakukan pengamatan pada data tampilan. procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer); var buff:string;y:integer; begin comport1.ReadStr(buff,count); y:=ord(buff[1]); edit1.text:=inttostr(y); end; procedure TForm1.Button1Click(Sender: TObject); begin

Page 113: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 113

comport1.connected:=true; end;

10.5. Pengiriman karakter ke LCD Karakter melalui komunikasi serial RS232 dengan pemrograman Delphi Pada percobaan ini data karakter dikirimkan ke LCD Karakter melalui komunikasi secara serial, melalui pemrograman delphi. 1. Pasang jumper LCD_EN, yang berfungsi untuk memberikan power supply +5V 2. Hubungkan modul Microcontroller Trainer dengan power supply +5V 3. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Gambar 10.18 Diagram alir rutin utama percobaan 10.4

5. Ketik program berikut ini: org 0h call initserial call init_LCD ; start: call GetChar mov r1,#0c0h acall write_inst add a,#30h mov r1,a acall write_data sjmp start ; GetChar: detect: jnb ri,detect ; clr ri

Page 114: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 114

mov a,sbuf ret ; initserial: mov scon,#52h;initialize serial mode 1 mov tmod,#20h;timer1 mode 2 mov th1,#0F3h;Reload value for baud rate 2400 setb tr1 ret ; Init_lcd:

mov r1,#00000001b ;Display clear call write_inst ; mov r1,#00111000b ;Function set, Data 8 bit,2 line font 5x7 call write_inst ; mov r1,#00001100b ;Display on, cursor off,cursor blink off call write_inst mov r1,#00000110b ;Entry mode, Set increment call write_inst ret ; Write_inst: clr P3.6 ; P3.6 = RS =0 mov P0,R1 ; P0 = D7 s/d D0 = R1 setb P3.7 ; P3.7 =EN = 1 call delay ; call delay time clr P3.7 ; P3.7 =EN = 0 ret ; Write_data: setb P3.6 ; P3.6 = RS =1 mov P0,R1 ; P0 = D7 s/d D0 = R1 setb P3.7 ; P3.7 =EN = 1 call delay ; call delay time call delay ; call delay time clr p3.7 ; P3.7 =EN = 0 ret

; delay: mov R0,#0 delay1:mov R7,#0fh djnz R7,$ djnz R0,delay1 ret end 6. Simpanlah program yang anda ketik dan beri nama : prog104a.asm

7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

9. Buka Program Delphi

Page 115: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 115

10. Ketik Program Delphi berikut ini, untuk menjalankan komunikasi melalui port serial dengan base address 3F8h

Gambar 10.19. Tapilan program delphi untuk pengiriman data Soal Kuis

1. Pelajari tentang Port Serial pada Mikrokontroller, letak pin dan fungsinya 2. Pelajari tentang register SCON pada mikrokontroller 3. Pelajari tentang mode 0,1,2 dan 3 perbedaan pada masing-masing mode tersebut,

termasuk instruksi pemrograman assembly

Page 116: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 116

PERCOBAAN 10 I N T E R U P S I

TUJUAN 1. Mahasiswa memahami sistem interupsi pada mikrokontroller 2. Mahasiswa dapat menerapkan sistem interupsi pada pembuatan jam digital 3. Mahasiswa dapat memahami penggunakan bahasa assembly untuk penggunakan sistem

interupsi

DASAR TEORI

Interupsi

8051 mempunyai 5 buah sumber interupsi. Dua buah interupsi eksternal, dua buah interupsi timer dan sebuah interupsi port serial.

Program yang dijalankan dengan cara interupsi, dinamakan sebagai program layanan interupsi (ISR - Interrupt Service Routine). Saat prosesor menjalankan ISR, pekerjaan yang sedang

dikerjakan pada program utama sementara ditinggalkan, selesai menjalankan ISR prosesor kembali menjalankan program utama, seperti yang digambarkan dalam Gambar 1.

Gambar 11.1 Bagan kerja prosesor melayani interupsi

Sebuah prosesor bisa mempunyai beberapa perangkat keras yang merupakan sumber sinyal permintaan interupsi, masing-masing sumber interupsi dilayani dengan ISR berlainan, dengan

demikian prosesor mempunyai beberapa vektor interupsi untuk memilih ISR mana yang dipakai melayani permintaan interupsi dari berbagai sumber. Kadang kala sebuah vektor

interupsi dipakai oleh lebih dari satu sumber interupsi yang sejenis, dalam hal semacam ini ISR

bersangkutan harus menentukan sendiri sumber interupsi mana yang harus dilayani saat itu. Jika pada saat yang sama terjadi lebih dari satu permintaan interupsi, prosesor akan melayani permintaan interupsi tersebut menurut perioritas yang sudah ditentukan, selesai melayani permintaan interupsi perioritas yang lebih tinggi, prosesor melayani permintaan interupsi berikutnya, baru setelah itu kembali mengerjakan program utama. Saat prosesor sedang mengerjakan ISR, bisa jadi terjadi permintaan interupsi lain, jika permintaan interupsi yang datang belakangan ini mempunyai perioritas lebih tinggi, ISR yang

sedang dikerjakan ditinggal dulu, prosesor melayani permintaan yang perioritas lebih tinggi, selesai melayani interupsi perioritas tinggi prosesor meneruskan ISR semula, baru setelah itu

kembali mengerjakan program utama. Hal ini dikatakan sebagai interupsi bertingkat (nested

interrupt), tapi tidak semua prosesor mempunyai kemampuan melayani interupsi secara ini.

Page 117: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 117

Sumber interupsi MCS51

AT89S51 mempunyai 6 sumber interupsi, yakni Interupsi External (External Interrupt) yang berasal dari kaki INT0 dan INT1, Interupsi Timer (Timer Interrupt) yang berasal dari Timer 0

maupun Timer 1, Interupsi Port Seri (Serial Port Interrupt) yang berasal dari bagian penerima dan bagian pengirim Port Seri. Di samping itu AT89S52 mempunyai 2 sumber interupsi lain, yakni Interupsi Timer 2 bersumber dari Timer 2 yang memang tidak ada pada AT89S51.

Bit IE0 (atau bit IE1) dalam TCON merupakan bendera (flag) yang menandakan adanya

permintaan Interupsi Eksternal. Ada 2 keadaan yang bisa meng-aktip-kan bendera ini, yang pertama karena level tegangan ‘0’ pada kaki INT0 (atau INT1), yang kedua karena terjadi

transisi sinyal ‘1’ menjadi ‘0’ pada kaki INT0 (atau INT1). Pilihan bentuk sinyal ini ditentukan lewat bit IT0 (atau bit IT1) yang terdapat dalam register TCON.

1. Kalau bit IT0 (atau IT1) =’0’ maka bit IE0 (atau IE1) dalam TCON menjadi ‘1’ saat kaki

INT0=’0’. 2. Kalau bit IT0 (atau IT1) =’1’ maka bit IE0 (atau IE1) dalam TCON menjadi ‘1’ saat terjadi

transisi sinyal ‘1’ menjadi ‘0’ pada kaki INT0. Menjelang prosesor menjalankan ISR dari Interupsi Eksternal, bit IE0 (atau bit IE1)

dikembalikan menjadi ‘0’, menandakan permintaan Interupsi Eksternal sudah dilayani. Namun jika permintaan Interupsi Ekternal terjadi karena level tegangan ‘0’ pada kaki IT0 (atau IT1),

dan level tegangan pada kaki tersebut saat itu masih =’0’ maka bit IE0 (atau bit IE1) akan segera menjadi ‘1’ lagi!

Bit TF0 (atau bit TF1) dalam TCON merupakan petanda (flag) yang menandakan adanya

permintaan Interupsi Timer, bit TF0 (atau bit TF1) menjadi ‘1’ pada saat terjadi limpahan pada pencacah biner Timer 0 (atau Timer 1). Menjelang prosesor menjalankan ISR dari Interupsi Timer, bit TF0 (atau bit TF1) dikembalikan

menjadi ‘0’, menandakan permintaan Interupsi Timer sudah dilayani. Interupsi port seri terjadi karena dua hal, yang pertama terjadi setelah port seri selesai mengirim data 1 byte, permintaan interupsi semacam ini ditandai dengan petanda (flag) TI=’1’. Yang kedua terjadi saat port seri telah menerima data 1 byte secara lengkap, permintaan interupsi semacam ini ditandai dengan petanda (flag) RI=’1’.

Petanda di atas tidak dikembalikan menjadi ‘0’ menjelang prosesor menjalankan ISR dari Interupsi port seri, karena petanda tersebut masih diperlukan ISR untuk menentukan sumber

interupsi berasal dari TI atau RI. Agar port seri bisa dipakai kembali setelah mengirim atau menerima data, petanda-petanda tadi harus di-nol-kan lewat program. Petanda permintaan interupsi (IE0, TF0, IE1, TF1, RI dan TI) semuanya bisa di-nol-kan atau

di-satu-kan lewat instruksi, pengaruhnya sama persis kalau perubahan itu dilakukan oleh perangkat keras. Artinya permintaan interupsi bisa diajukan lewat pemrograman, misalnya permintaan interupsi eksternal IT0 bisa diajukan dengan instruksi SETB IE0.

Mengaktifkan Interupsi

Semua sumber permintaan interupsi yang di bahas di atas, masing-masing bisa di-aktip-kan atau di-nonaktip-kan secara tersendiri lewat bit-bit yang ada dalam register IE (Interrupt

Enable Register). Bit EX0 dan EX1 untuk mengatur interupsi eksternal INT0 dan INT1, bit ET0 dan ET1 untuk mengatur interupsi timer 0 dan timer 1, bit ES untuk mengatur interupsi port seri, seperti yang

Page 118: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 118

digambarkan dalam Gambar 2. Di samping itu ada pula bit EA yang bisa dipakai untuk

mengatur semua sumber interupsi sekali gus. Setelah reset, semua bit dalam register IE bernilai ‘0’, artinya sistem interupsi dalam keadaan non-aktip. Untuk mengaktipkan salah satu sistem interupsi, bit pengatur interupsi bersangkutan diaktipkan dan juga EA yang mengatur semua sumber interupsi. Misalnya instruksi yang dipakai untuk mengaktipkan interupsi ekternal INT0 adalah SETB EX0 disusul dengan SETB

EA.

MSB LSB

EA X X ES ET1 EX1 ET0 EX0

BIT SYMBOL FUNCTION

IE.7 EA Disables semua interrupsi. Jika EA=0, tidak ada interupsi yang akan dilayani. Jika EA=1, setiap interupsi akan akan dilayani satu per satu sesuai dengan bit yang disetting.

IE.6 - -

IE.5 - -

IE.4 ES Enables or disables the Serial Port interrupt. If ES=0, the Serial Port interrupt is disabled.

IE.3 ET1 Enables or disables the Timer 1 Overflow interrupt. If ET1=0, the Timer 1 interrupt is disabled.

IE.2 EX1 Enables or disables External Interrupt 1. If EX1=0, External interrupt 1 is disabled.

IE.1 ET0 Enables or disables the Timer 0 Overflow interrupt. If ET0=0, the Timer 0 interrupt is disabled.

IE.0 EX0 Enables or disables External interrupt 0. If EX0=0, External interrupt 0 is disabled.

Vektor Interupsi

Saat MCS51 menanggapi permintaan interupsi, Program Counter diisi dengan sebuah nilai yang dinamakan sebagai vektor interupsi, yang merupakan nomor awal dari memori-program yang menampung ISR untuk melayani permintaan interupsi tersebut. Vektor interupsi itu

dipakai untuk melaksanakan inststuksi LCALL yang diaktipkan secara perangkat keras. Vektor interupsi untuk interupsi eksternal INT0 adalah $0003, untuk interupsi timer 0 adalah

$000B, untuk interupsi ekternal INT1 adalah $0013, untuk interupsi timer 1 adalah $001B dan untuk interupsi port seri adalah $0023.

Jarak vektor interupsi satu dengan lainnya sebesar 8, atau hanya tersedia 8 byte untuk setiap ISR. Jika sebuah ISR memang hanya pendek saja, tidak lebih dari 8 byte, maka ISR tersebut bisa langsung ditulis pada memori-program yang disediakan untuknya. ISR yang lebih panjang

dari 8 byte ditulis ditempat lain, tapi pada memori-program yang ditunjuk oleh vektor interupsi diisikan instruksi JUMP ke arah ISR bersangkutan.

Source Vector Address

IE0 0003H

TF0 000BH

IE1 0013H

Page 119: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 119

TF1 001BH

RI + TI 0023H

1.4.4 Tingkatan Perioritas

Masing-masing sumber interupsi bisa ditempatkan pada dua tingkatan perioritas yang berbeda. Pengaturan tingkatan perioritas isi dilakukan dengan bit-bit yang ada dalam register IP

(Interrupt Priority). Bit PX0 dan PX1 untuk mengatur tingkatan perioritas interupsi eksternal INT0 dan INT1, bit PT0 dan PT1 untuk mengatur interupsi timer 0 dan timer 1, bit PS untuk mengatur interupsi port

seri, seperti yang digambarkan dalam Gambar 2. Setelah reset, semua bit dalam register IP bernilai ‘0’, artinya semua sumber interupsi

ditempatkan pada tingkatan tanpa perioritas. Masing-masing sumber interupsi bisa ditempatkan pada tingkatan perioritas utama dengan cara men-‘satu’-kan bit pengaturnya. Misalnya interupsi timer 0 bisa ditempatkan pada tingkatan perioritas utama dengan instruksi SETB PT1. Sebuah ISR untuk interupsi tanpa perioritas bisa diinterupsi oleh sumber interupsi yang berada dalam tingkatan perioritas utama. Tapi interupsi yang berada pada tingkatan perioritas yang sama, tidak dapat saling meng-interupsi. Jika 2 permintaan interupsi terjadi pada saat yang bersamaan, sedangkan kedua interupsi tersebut terletak pada tingkatan perioritas yang berlainan, maka interupsi yang berada pada tingkatan perioritas utama akan dilayani terlebih dulu, setelah itu baru melayani interupsi pada tingkatan tanpa perioritas. Jika kedua permintaan tersebut bertempat pada tingkatan perioritas yang sama, perioritas akan ditentukan dengan urutan sebagai berikut : interupsi eksternal INT0, interupsi timer 0, interupsi ekternal INT1, interupsi timer 1 dan terakhir adalah interupsi port seri.

Bagan Lengkap Sistem Interupsi MCS51

Sistem interupsi MCS51 terdiri 5 sumber interupsi yang masing-masing harus diatur secara tersendiri, tidak mudah untuk mengingat semua masalah tersebut, terutama pada saat membuat program sering dirasakan sangat merepotkan membolak-balik buku untuk mengatur masing-masing sumber interupsi tersebut. Gambar 2 menggambarkan sistem interupsi MCS51 selangkapnya, berikut dengan masing-masing bit dalam register-register SFR (Special Function Register) yang dipakai untuk

mengatur masing-masing sumber interupsi. Saklar yang digambarkan dalam Gambar 2 mewakili bit dalam register yang harus diatur untuk mengendalikan sumber interupsi, kotak bergambar bendera kecil merupakan flag (petanda) dalam register yang mencatat adanya permintaan interupsi dari masing-masing sumber interupsi. Kedudukan saklar dalam gambar tersebut menggambarkan kedudukan awal setelah MCS51 di-reset. Gambar ini sangat membantu saat penulisan program menyangkut interupsi MCS51. Pada mikrokontroller menyediakan 5 buah sumeber interupsi, 2 buah interupsi eksternal, 2 buah interupsi timer, dan 1 buah interupsi serial. Agar interupsi dapat dilayani maka instruksi assembly harus ditempatkan pada alamat vektor berikut, sesuai dengan sumber interupsi yang akan digunakan.

Page 120: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 120

Alamat Vektor Interupsi

Source Vector Address

IE0 0003H

TF0 000BH

IE1 0013H

TF1 001BH

RI + TI 0023H

P3.1

VCC

P1.7

P3.4

P1.2

P3.0

P3.3

P1.6

P2.5

P1.1

P3.7

P0.4

P1.5

J3CON8

12345678

P2.6

P1.4

P0.3

P2.0U1

AT89S51

91819 29

30

31

40

12345678

2122232425262728

1011121314151617

3938373635343332

RSTXTAL2XTAL1 PSEN

ALE/PROG

EA/VPP

VCC

P1.0P1.1P1.2P1.3P1.4P1.5/MOSIP1.6/MISOP1.7/SCK

P2.0/A8P2.1/A9

P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15

P3.0/RXDP3.1/TXD

P3.2/INTOP3.3/INT1

P3.4/TOP3.5/T1

P3.6/WRP3.7/RD

P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7

J1CON8

12345678

P2.7

J4CON8

12345678

P2.3

P3.2

P0.7

P0.2 P2.2

P2.4

P1.0

VCC

XTAL2

P0.6

P0.1

P0.5

P2.1P0.0

XTAL1

J2CON8

12345678

P3.5

P1.3

RST

P3.6

Gambar 11.1. Rangkaian target mikrokontroller 89s51

Org 0000h

Ljmp Start Org 000bh

Ljmp Timer0Interupt

Start: ; Instruksi Rutinitas

; Instruksi Rutinitas

; Instruksi Rutinitas

Sjmp Start; { Looping Forever }

;

Timer0Interupt: :

:

Reti

End

Pada contoh instruksi pemrograman tersebut tampak, apabila tidak ada interupsi maka program akan menuju ke start dan menjalankan rutinitas-rutinitas secara terus menerus, tetapi apabila suatu interupsi yang dibangkitkan oleh overflow timer 0 terjadi, maka program yang semula bersarang pada rutinitas akan melompat pada alamat vektor 0bh (alamat interupsi timer 0) dan melompat ke subrutine interupsi Timer0Interupt.

Interupsi Eksternal 0, agar terjadi interupsi pada system maka, pada pin ini harus mendapat sebuah pulsa, baik transisi hi-lo, atau berupa pulsa

Page 121: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 121

Percobaan 11.1. Mengaktifkan interupsi eksternal INT0 Pada percobaan ini akan dibuat sebuah system interupsi eksternal yang menggunakan pin INT0, untuk menerima sinyal interupsi dari luar, berupa pulsa. Apabila system tidak mendapat interupsi, maka delapan LED akan padam, sebaliknya apabila ada interupsi yang berupa pulsa dari monostabil, maka delapan LED akan berkedip, terus menerus, sampai tombol reset ditekan. Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hubungkan kabel dari P3.2. ke output rangkaian monostabil 2. Tekan tombol SW pada pushbutton untuk memberikan trigger pada monostabil, apabila

monostabil mendapat trigger maka monostabil akan mengeluarkan pulsa satu kali. 3. Hubungkan modul Microcontroller Trainer dengan power supply +5V 4. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 5. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program Ketik program sebagai berikut: Org 0h Sjmp start Org 03h Sjmp AdaInterupsiExt0 Start: call InitInterupsiExt0 Forever: mov P0,#11111111b Sjmp Forever InitInterupsiExt0: Setb IT0; interupsi transisi hi-lo Setb EX0; aktifkan interupsi eksternal Setb EA Ret AdaInterupsiExt0: mov P0,#11111111b call delay mov P0,#00000000b call delay reti end 6. Simpanlah program yang anda ketik dan beri nama : prog111a.asm

7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

Percobaan 11.2. Membangkitkan clock pada jam digital :DD dengan memanfaatkan interupsi timer 0. Pada percobaan akan dibangkitkan clock untuk jam digital, hanya bagian detik puluhan (display 1) dan detik satuan (display 2) pada 7 segmen

Page 122: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 122

Pada mode ini, dengan kristal 12MHz maka timer akan overflow setiap 65.536 udetik. Pada percobaan ini, untuk membangkitkan interupsi setiap 50000 udetik maka data yang harus diisikan pada register TL0 dan TH0 adalah sebagai berikut: 65536 - 50000 = 15536 d or 3CB0h Maka interupsi TF0 akan segera dibangkitkan setiap 50000 x 1 udetik = 0,05 detik pada pemrograman ini, RO diimplementasikan sebagai counter software, Register R0 akan increment setiap Timer 0 overflow. Jika register R7 telah mendeteksi nilai 50 maka port P0.0 ( LED D0 ) akan nyala selama = 0,05 x 20 detik = 1 detik Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hubungkan jumper 7Segmen_EN, untuk mengaktifkan Decoder 74LS138 2. Hubungkan modul Microcontroller Trainer dengan power supply +5V 3. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Gambar 11.1. (a) Diagram alir rutin utama, (b) subrutin interupsi, dan (c) subrutin display ke 7 segmen percobaan 11.1 5. Ketik program berikut ini:

detik equ 30h detikpuluhan equ 31h detiksatuan equ 32h

Page 123: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 123

counter20 equ 33h ; Org 0h sjmp Start Org 0bh ;alamat vector interupsi timer0 Ljmp Interrupt_Timer0;lompat ke subroutine interupsi timer 0 ; Start: mov detik,#0 ;isi detik dg. 0 mov counter20,#20 call InitTimer ;panggil inittimer ; Forever: call ClockDisplay ;panggil clockdisplay sjmp Forever ; ;lompat forever ; Interrupt_Timer0: mov tl0,#0b0h ;isi TL0 dg B0h mov th0,#03ch ;isi TH0 dg 3Ch djnz Counter20, EndInterrupt;Counter20:=Counter20-1 ;jump EndInterupt if NZ mov Counter20,#20 call DoClock EndInterrupt: reti ; DoClock: inc detik mov A,detik cjne A,#60,Update mov detik,#0 Update:mov A,detik mov B,#10 DIV AB mov detikpuluhan,A mov detiksatuan,B ret ; ClockDisplay: Mov DPTR,#Decoder7Segmen mov A,detiksatuan Movc A,@A+DPTR mov P0,A clr P3.5 ; Setb P3.6 Setb P3.7 call delay ; Mov DPTR,#Decoder7Segmen mov A,detikpuluhan Movc A,@A+DPTR mov P0,A

Page 124: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 124

; Setb P3.5 ; clr P3.6 Setb P3.7 call delay ret ; InitTimer: mov TMOD,#00000001b mov tl0,#0b0h mov th0,#03ch setb ET0 ;Enable Timer 0 Interrupt setb EA ;Master Interrupt Enable setb TR0 ;Clock start running ret ; ;=============================== ;subroutine delay time ;=============================== delay: mov R1,#2 del1: mov R2,#255 del2: djnz R2,del2 djnz R1,del1 ret ;=============================== ; L O O K U P T A B L E ; Decode to Seven Segmen -> g f e d c b a ;======================================== Decoder7Segmen: DB 11000000b,11111001b,10100100b,10110000b,10011001b DB 10010010b,10000010b,11111000b,10000000b,10010000b ; End 9. Simpanlah program yang anda ketik dan beri nama : prog112.asm

10. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

11. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

12. Lakukan pengamatan untuk data waktu detik yang ditampilkan apakah sesuai dengan jam konvensional.

No Jam Digital (:DD) Jam Konvensional 1 1

2 2

3 3

4 4

5 5

6 6

7 7

Page 125: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 125

: :

30 30

Percobaan 11.3. Membangkitkan clock pada jam digital MM:DD dengan memanfaatkan interupsi timer 0. Pada percobaan akan dibangkitkan clock untuk jam digital untuk detik dan menit pada 7 segmen Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hubungkan jumper 7Segmen_EN, untuk mengaktifkan Decoder 74LS138 2. Hubungkan modul Microcontroller Trainer dengan power supply +5V 3. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program 5. Ketik program berikut ini: detik equ 30h detikpuluhan equ 31h detiksatuan equ 32h menit equ 33h menitpuluhan equ 34h menitsatuan equ 35h counter20 equ 36h ; Org 0h sjmp Start Org 0bh Ljmp Interrupt_Timer0 ; Start: mov detik,#0 mov menit,#0 call InitTimer ; Forever: call ClockDisplay sjmp Forever ; ; Interrupt_Timer0: mov tl0,#0b0h mov th0,#03ch djnz Counter20, EndInterrupt mov Counter20,#20 call DoClock EndInterrupt: reti ; DoClock: inc detik mov A,detik cjne A,#60,Update mov detik,#0

Page 126: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 126

satumenit: inc menit mov A,#60 cjne A,menit,Update mov menit,#0 Update:mov A,detik mov B,#10 DIV AB mov detikpuluhan,A mov detiksatuan,B ; mov a,menit mov b,#10 div ab mov menitpuluhan,A mov menitsatuan,B ret ; ClockDisplay: Mov DPTR,#Decoder7Segmen mov A,menitpuluhan Movc A,@A+DPTR mov P0,A clr P3.5 ; clr P3.6 clr P3.7 call delay ; Mov DPTR,#Decoder7Segmen mov A,menitsatuan Movc A,@A+DPTR mov P0,A setb P3.5 ; clr P3.6 clr P3.7 call delay ; Mov DPTR,#Decoder7Segmen mov A,detikpuluhan Movc A,@A+DPTR mov P0,A clr P3.5 ; setb P3.6 clr P3.7 call delay ; Mov DPTR,#Decoder7Segmen mov A,detiksatuan Movc A,@A+DPTR mov P0,A

Page 127: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 127

setb P3.5 ; Setb P3.6 clr P3.7 call delay ret ; InitTimer: mov TMOD,#00000001b mov tl0,#0b0h mov th0,#03ch setb ET0 ;Enable Timer 0 Interrupt setb EA ;Master Interrupt Enable setb TR0 ;Clock start running ret ; ;=============================== ;subroutine delay time ;=============================== delay: mov R1,#2 del1: mov R2,#255 del2: djnz R2,del2 djnz R1,del1 ret ;======================================== ; L O O K U P T A B L E ; Decode to Seven Segmen -> g f e d c b a ;======================================== Decoder7Segmen: DB 11000000b,11111001b,10100100b,10110000b,10011001b DB 10010010b,10000010b,11111000b,10000000b,10010000b ; End 6. Simpanlah program yang anda ketik dan beri nama : prog113.asm

7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

9. Lakukan pengamatan untuk data waktu yang ditampilkan.

No Jam Digital (MM:DD) Jam Konvensional

1 00:01

2 00:02

3

4

5

6 7

: :

: 01:59

Page 128: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 128

Percobaan 11.4. Membangkitkan clock down MM:DD dengan memanfaatkan interupsi timer 0. Pada percobaan akan dibangkitkan clock dengan hitungan mundur dari menit 60 detik 60 untuk detik dan menit pada 7 segmen Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hubungkan jumper 7Segmen_EN, untuk mengaktifkan Decoder 74LS138 2. Hubungkan modul Microcontroller Trainer dengan power supply +5V 3. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program 5. Ketik program berikut ini: detik equ 30h detikpuluhan equ 31h detiksatuan equ 32h menit equ 33h menitpuluhan equ 34h menitsatuan equ 35h counter20 equ 36h ; Org 0h sjmp Start Org 0bh Ljmp Interrupt_Timer0 ; Start: mov detik,#60 mov menit,#59 call InitTimer ; Forever: call ClockDisplay sjmp Forever ; ; Interrupt_Timer0: mov tl0,#0b0h mov th0,#03ch djnz Counter20, EndInterrupt mov Counter20,#20 call DoClock EndInterrupt: reti ; DoClock: dec detik mov A,detik cjne A,#0,Update mov detik,#60 satumenit: dec menit

Page 129: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 129

mov A,#0 cjne A,menit,Update mov menit,#60 Update:mov A,detik mov B,#10 DIV AB mov detikpuluhan,A mov detiksatuan,B ; mov a,menit mov b,#10 div ab mov menitpuluhan,A mov menitsatuan,B ret ; ClockDisplay: Mov DPTR,#Decoder7Segmen mov A,menitpuluhan Movc A,@A+DPTR mov P0,A clr P3.5 ; clr P3.6 clr P3.7 call delay ; Mov DPTR,#Decoder7Segmen mov A,menitsatuan Movc A,@A+DPTR mov P0,A setb P3.5 ; clr P3.6 clr P3.7 call delay ; Mov DPTR,#Decoder7Segmen mov A,detikpuluhan Movc A,@A+DPTR mov P0,A clr P3.5 ; setb P3.6 clr P3.7 call delay ; Mov DPTR,#Decoder7Segmen mov A,detiksatuan Movc A,@A+DPTR mov P0,A setb P3.5 ; Setb P3.6 clr P3.7

Page 130: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 130

call delay ret ; InitTimer: mov TMOD,#00000001b mov tl0,#0b0h mov th0,#03ch setb ET0 ;Enable Timer 0 Interrupt setb EA ;Master Interrupt Enable setb TR0 ;Clock start running ret ; ;=============================== ;subroutine delay time ;=============================== delay: mov R1,#2 del1: mov R2,#255 del2: djnz R2,del2 djnz R1,del1 ret ;======================================== ; L O O K U P T A B L E ; Decode to Seven Segmen -> g f e d c b a ;======================================== Decoder7Segmen: DB 11000000b,11111001b,10100100b,10110000b,10011001b DB 10010010b,10000010b,11111000b,10000000b,10010000b ; End 10. Simpanlah program yang anda ketik dan beri nama : prog114.asm

11. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

12. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

13. Lakukan pengamatan untuk data waktu yang ditampilkan. Soal Tantangan: 1. Rencanakan sebuah sistem interupsi dengan menggunakan pin P3.3/ INT1. Bila tidak ada

interupsi maka pada 7 segmen akan muncul komentar OK, dan bila ada interupsi maka akan muncul komentar Error, pada 7 segmen.

2. Rencanakan jam digital dengan tampilan ke 7 segmen bagian detik, dengan komentar: tine: 00, dengan menggunakan interupsi dari timer 1

Soal Kuis:

1. Apakah yang dimaksud dengan sistem interupsi 2. Pelajari tentang address (alamat) vektor interupsi 3. Pelajari tentang interupsi, eksternal, serial, dan timer, apakah perbedaannya 4. Pelajari tentang Register Interupt enable, dan TCON

Page 131: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 131

Percobaan 11 Motor DC

J1

CON2

12

VCC

VCC

D6

1N4001

D5

1N4001U1L293

27

1015

19

361114

16

8

4

51312

1A2A3A4A

1,2EN3,4EN

1Y2Y3Y4Y

VC

C1

VC

C2

GN

D GNDGNDGND

VCC

D4

1N4001

D3

1N4001

VCC

J2

CON3

123

Petunjuk: Hubungkan kabel jumper dengan hubungan 1A ke P2.0, 2A ke P2.1 dan 1,2 EN ke P2.2 Percobaan 11.1 Putaran CCW

org 0h start: setb P2.0 ; 1A clr P2.1 ; 2A setb P2.2 ; 1,2 EN sjmp start end Percobaan 11.2 Putaran CW

org 0h start: clr P2.0 ; 1A setb P2.1 ; 2A setb P2.2 ; 1,2 EN sjmp start end

Page 132: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 132

Percobaan 12 Dot Matrik 5x7

O2

R17R

O7

DS

U11

SN74HC595

14

11

10

12

13

15

1 2 3 4 5 6 7 9

SE

R

SR

CL

KS

RC

LR

RC

LK

G

QA

QB

QC

QD

QE

QF

QG

QH

QH

R9R

O5

O7

R13

RR8RO6

O4

Vcc

SHCp

O1

O3

O1

U10 DotMatrix5x7121129456

1 3 10

7 8

R1R2R3R4R5R6R7 C

1C

2C

3C

4C

5

J9

CON3

123

R19R

O4

Vcc

O2

O3

R15R

C

R21

RESISTOR SIP 9

1 23456789

O5

O3O4

U7SN74HC595

14

11

10

12

13

15

1 2 3 4 5 6 7 9

SE

R

SR

CL

KS

RC

LR

RC

LK

G

QA

QB

QC

QD

QE

QF

QG

QH

QH

VCC

R7R

O3

R10R

R12R

U9 DotMatrix5x71211

29456

1 3 10

7 8

R1R2R3R4R5R6R7 C

1C

2C

3C

4C

5

R6

R

O2

J4

CON7

1234567

O5 R18R

O5

O1

O6

U6 DotMatrix5x71211

29456

1 3 10

7 8

R1R2R3R4R5R6R7 C

1C

2C

3C

4C

5

O1

O6

STCp

R14R

O4

O6

O2

U8

ULN2003

1234567 10

161514131211

I1I2I3I4I5I6I7 O7

O1O2O3O4O5O6 O7

R11R

R1

RR16R

O7

Petunjuk Gunakan kabel jumper untuk menghubungan dari J4 ke P0 ( secara berurutan 1 ke P0.0 dst.), hubungkan masing-masing secara berurutan konektor J9 ke P2 ( secara berurutan STCp ke P2.0, SHCp ke P2.1 dan DS ke P2.2 ). Percobaan 12.1 start: call Reset595 mov P0,#00000000b mov R3,#14 Ulang: setb P2.2 call clk djnz R3,Ulang clr P2.2 call clk call latch ; call delay setb P2.2 call clk call latch

Page 133: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 133

; call delay setb P2.2 call clk call latch ; Stop: sjmp Stop clk: clr P2.1 setb P2.1 call delay clr P2.1 ret latch: clr P2.0 setb P2.0 call delay clr P2.0 ret Reset595: mov R3,#15 SerRst: clr P2.2 call Clk djnz R3,SerRst ret ; Delay: mov R1,#255 Del1: mov R2,#255 Del2: djnz R2,del2 djnz R1,del1 ret end

Page 134: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 134

Percobaan 13 Motor Stepper

TUJUAN 1. Mahasiswa mamahami rangkaian interface mikrokontroller dengan motor stepper 2. Mahasiswa memahami rangkaian driver motor stepper ULN2003 3. Mahasiswa memahami bahasa assembly untuk mengatur arah putaran motor stepper 4. Mahasiswa memahami bahasa assembly untuk mengatur arah putaran motor stepper

dengan menggunakan saklar.

J5CON5

12345

VCC

U2

ULN2003

1234567 10

161514131211

I1I2I3I4I5I6I7 O7

O1O2O3O4O5O6J3

CON4

1234

Gambar 8.1. Rangkaian interface motor stepper dengan driver ULN2003

DASAR TEORI Pada Motor DC biasa, akan berputar dan berputar terus selama power supply ada. Tidak ada rangkaian cerdas tertentu yang diperlukan untuk mengendalikan motor tersebut, kecuali hanya memperlambat putaran atau membalik putaran, dengan menerapkan polaritas balik. Motor stepper adalah sangat berbeda. Jika anda memberikan power pada motor ini, maka motor ini akan berada dalam keadaan diam, agar motor dapat berputar, anda harus merubah sinyal yang masuk ke motor. Sebagai ilustrasi, dapat dibayangkan sebuah kompas dengan elektromagnet disekitarnya. Sebagaimana digambarkan pada gambar 2.2., apabila power yang diberikan pada elektromagnet diganti, maka akan merubah posisi jarum dari kompas.

Gambar 8.2. Ilustrasi sebuah kompas dengan elektromagnet

Page 135: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 135

Dengan empat buah elektromagnet maka gerakan akan melompat secara kasar. Sekarang bayangkan susunan yang sama dengan 100 elektromagnet yang mengitari kompas. Dengan mangatur energi yang mengalir pada setiap elektromagnet dalam berurutan, maka jarum akan memerlukan sebanyak 100 langkah untuk melakukan satu kali putaran. Tetapi dengan pengaturan 100 elektromagnet secara individu, akan memerlukan elektronika yang kompleks.

Gambar 8.3. Ilustrasi motor stepper dengan jarum kompas dengan elektromagnet

Pada ilustrasi tersebut, huruf-huruf yang melingkar mewakili elektromagnet. Semua magnet dengan huruf yang sama berada dalam keadaan koneksi. Ketika anda memberi arus pada rangkaian tersebut, maka semua elektromagnet dengan huruf yang sama akan on pada saat itu, untuk menggerakkan kompas, maka elektromaget berikutnya harus dialiri arus, sehingga akan menimbulkan gerakan. Table 8.1. Full Step Mode

A B C D Comment

1 0 0 0 Take a step clock wise

0 1 0 0 another step clock wise

0 0 1 0 another step clock wise

0 0 0 1 another step clock wise

0 0 0 1 No step take

0 0 1 0 Take a step back

Mode Half Steps Dengan menghidupkan dua koil pada waktu yang bersamaan maka motor akan berada dalam posisi diantaranya.

Page 136: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 136

Figure 8.4. Half step mode

Table 8.2. Half Step Mode

A B C D Comment

1 0 0 0 Take a step clock wise

1 1 0 0 Half a step clock wise

0 1 0 0 The complete full step clock wise

0 1 1 0 another half step clock wise

0 0 1 0 The complete full step clock wise

0 0 1 1 Another half step clock wise

0 0 0 1 The complete full step clock wise

1 0 0 1 another half step clock wise

1 0 0 0 Start position

Gambar 8.5. Bentuk fisik motor stepper disk drive 1,2”

Percobaan 8.1. Menggerakkan Motor Stepper Searah Jarum Jam Pada percobaan ini, motor stepper akan berputar searah jarum jam, terus menerus Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hubungkan kabel parallel antara P0 dengan motor stepper 2. Hubungkan modul Microcontroller Trainer dengan power supply +5V 3. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Page 137: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 137

Gambar 8.6. Diagram alir percobaan 8.1

5. Ketik program berikut ini: org 0h start: call StepCW sjmp start ; StepCW: mov P0,#11101111b ; Turn on driver 1. isi P0 dg 11101111b call delay ; call delay time mov P0,#11011111b ; Turn on driver 2. isi P0 dg 11011111b call delay ; call delay time mov P0,#10111111b ; Turn on driver 3. isi P0 dg 10111111b call delay ; call delay time mov P0,#01111111b ; Turn on driver 4. isi P0 dg 01111111b call delay ; call delay time ret StepCCW: mov P0,#01111111b ; Turn on driver 1 call delay ; call delay time mov P0,#10111111b ; Turn on driver 2 call delay ; call delay time mov P0,#11011111b ; Turn on driver 3 call delay ; call delay time mov P0,#11101111b ; Turn on driver 4 call delay ; call delay time ret

Page 138: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 138

delay: mov R0,#255 delay1:mov R2,#255 djnz R2,$ djnz R0,delay1 ret end 6. Simpanlah program yang anda ketik dan beri nama : prog81a.asm

7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

9. Lakukan pengamatan arah putaran motor stepper apakah sudah sesuai ? 10. Lakukan modifikasi program tersebut diatas, untuk putaran motor yang berlawanan arah

jarum jam CCW.

Percobaan 8.2 Pengaturan Arah Putaran CW/ CCW Motor Stepper Melalui Saklar Pada percobaan ini, motor stepper akan berputar searah jarum jam, atau berlawanan arah jarum jam bergantung pada posisi push button yang ditekan ( P2.0 atau P2.1 ) secara terus menerus.

SW1

SW8

P2.7..P2.0

Gambar 8.7. Rangkaian pushbutton Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hubungkan kabel parallel antara P0 dengan motor stepper 2. Hubungkan modul Microcontroller Trainer dengan power supply +5V 3. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Page 139: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 139

Gambar 8.8. Diagram alir percobaan 8.2

5. Ketik program berikut ini:

org 0h

start: CW: JB P2.0,CCW ; jump ke ccw jika P2.0=1. SW1 call stepCW sjmp start ; CCW: JB P2.1,CW ; jump ke cw jika P2.1=1. SW2 Call stepCCW Sjmp start ; StepCW: mov P0,#11101111b ; isi P0 dg.11101111. Turn on driver 1 call delay ; call delay time mov P0,#11011111b ; Turn on driver 2 call delay ; call delay time mov P0,#10111111b ; Turn on driver 3 call delay ; call delay time mov P0,#01111111b ; Turn on driver 4 call delay ; call delay time ret ; StepCCW: mov P0,#01111111b ; Turn on driver 1 call delay ; call delay time mov P0,#10111111b ; Turn on driver 2 call delay ; call delay time mov P0,#11011111b ; Turn on driver 3 call delay ; call delay time mov P0,#11101111b ; Turn on driver 4 call delay ; call delay time ret ; delay: mov R0,#255 delay1: mov R2,#255 djnz R2,$ djnz R0,delay1 ret end

Page 140: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 140

8. Simpanlah program yang anda ketik dan beri nama : prog82a.asm

9. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

9. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

10. Lakukan pengamatan arah putaran motor stepper apakah sudah sesuai ? 11. Lakukan modifikasi program tersebut diatas, saklar push button yang lain.

Page 141: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 141

Percobaan 14

INTERFACE KE KEYBOARD PC PS/2

TUJUAN

1. Mahasiswa memahami rangkaian interface keyboard PC PS/2 2. Mahasiswa memahami bahasa pemrograman assembly pengambilan data keyboard PC 3. Mahasiswa dapat menampilan data keyboard PC ke berbagai macam display antara

lain, LCD Karakter dan 7 Segmen

TEORI

Antarmuka keyboard standard adalah hubungan komunikasi serial. “Serial” yang menandakan bahwa data dikirim satu bit pada suatu waktu tertentu pada satu jalur tunggal. Serial komunikasi dipilih untuk antara muka keyboard karena hal ini simple dan mudah diterapkan, dan tidak banyak data per detik yang harus dikirimkan pada antar muka keyboard.

Ada empat jalur yang menghubungkan keyboard dan PC. Dua dari ini adalah power supply dan ground, yang digunakan untuk memberikan daya ke rangkaian keyboard. Dua sinyal yang lain adalah sebagai berikut:

1. Data Keyboard: Disinilah jalur bit-bit data dan perintah yang akan dikirimkan ke sistem PC dari keyboard.

2. Clock Keyboard: Ini merupakan sinyal clock regular, dengan suatu nilai yang berosilasi dari logika “1” ke “0” dengan pola yang teratur. Tujuan dari sinyal clock ini adalah untuk mensinkronisasi keyboard dan sistem, sehingga merekan selalu bekerja secara bersamaan.

Keyboard PC AT yang terkoneksi, hanya menggunakan empat buah kabel, kabel ini ditunjukkan pada gambar dibawah, untuk 5 pin DIM dan PS/2.

5 PIN DIN

(a)

1.KBD Clock 2.KBD Data 3.N/C 4.GND 5. +5V (VCC)

6 PIN DIN

(b)

1. KBD Clock 2. GND 3. KBD Data 4. N/C 5. +5V (VCC) 6. N/C

Gambar 12.1. Keyboard konektor (a) XT (b) PS/2

Page 142: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 142

Diagram dibawah ini menunjukkan kode scan yang menandai tombol individu. Kode scan ditunjukkan pada bagian bawah dari tombol. Contoh kode scan untuk tombol ESC adalah 76. Semua kode scan ditunjukkan dalam Hex.

Gambar 12.2. Peta data keyboard PC

Sebagaimana yang anda lihat, kode scan ditandai dengan kode yang random. Pada beberapa kasus, cara yang paling mudah untuk menerjemahkan kode scan ke ASCII adalah dengan menggunakan metode look up table.

Transmisi data, dari keyboard ke sistem, dilakukan dengan frame 11 bit. Bit pertama adalah bit start ( logika 0 ), diikuti dengan 8 bit data ( LSB first ), satau bit paristas ( paritas ganjil ) dan bit stop ( logika 1 ). Setiap bit harus dibaca pada sisi turun dari clock.

Gambar 12.3. Sinyal clock dan data

Page 143: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 143

P3.3

VCC

10

K

Konektor Keyboard PS2/ Female

IN4148

2

..

. .

.

3

VCC

4 .

5

P3.2

IN4148

16

VCC

10

K

Gambar 12.4 Interface rangkaian keyboard PC PS/2

D1

P0.0..P0.7

D8

J3

EN LED12

VCC

Gambar 12.5. Rangkaian interface LED

Percobaan 12.1. Pengambilan data karakter keyboard PC dan display ke LED Pada percobaan ini data keyboard PC diinterfacekan ke mikrokontroller dengan menggunaan port P3 bit 2 dan 3. Hasil pengambilan data keyboard selanjutnya ditampilkan pada LED. Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hubungkan jumper keyboard dua kabel ke rangkaian mikrokontroller bit P3.2 dan bit P3.3. 2. Pasang jumper LED_EN 2. Hubungkan modul keyboard PC PS/2 ke konektor keybaord 3. Hubungkan modul Microcontroller Trainer dengan power supply +5V 4. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 5. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program

Page 144: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 144

Gambar 12.6. Diagram alir (a) rutin utama, (b) subrutin ambil_keyboard pada percobaan 12.1

Gambar 12.7 Diagram alir (a) subrutin ambil_scancode, (b) subrutin konversi_scancode pada percobaan 12.1

6. Ketik program berikut ini: (download file prog122a.asm)

Page 145: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 145

dispclr equ 00000001b funcset equ 00111000b entrmod equ 00000110b dispon equ 00001100b KbdData bit P3.2 KbdClock bit INT1;P3.3 DataKeyboard equ 30h ; org 0h Forever: JB KbdClock,$ acall ambilKeyboard jnc Forever Mov P0, Datakeyboard clr C sjmp Forever ; ;============================================ ;Subrutine AmbilKeyboard ;Subrutine berikut berfungsi untuk mendeteksi apakah keyboard ;sedang ditekan atau dilepas. Bila tombol tidak dilepas maka ;akan menuju pada subrutine ;Kybd_tidakLepas ;dan memberi tanda pada bit C = 0 sehingga bila C = 0 ; maka data tidak akan dicetak ;Bila tombol keyboard dilepas maka data scan code diambil ;dan dikonversi ke dengan dengan menggunakan ; look up table serta menandai bit C = 1 ;=========================================== AmbilKeyboard: acall ambil_scancode cjne a,#0F0h,kybd_tidakLepas JB KbdClock,$ acall ambil_Scancode Setb C Acall Konversi_Scancode ret ; Kybd_tidakLepas: Clr C ret ; ;====================================================== ;Subrutine Konversi_ScanCode ;Pada subrutine ini digunakan untuk menerjemahkan scan code ke bentuk ;karakter dengan menggunakan look up table. ;====================================================== Konversi_ScanCode: Mov DPTR,#TableKeyboard movc A,@A+DPTR mov DataKeyboard,A ret

Page 146: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 146

; ;========================== ;Subrutin deteksi tombol keyboard ;========================== Ambil_scanCode: clr A Jnb KbdClock,$ mov R0,#08h Ambil_ScanCode2: Jb KbdClock,$ Mov C,KbdData Rr A mov acc.7,C Jnb KbdClock,$ Djnz R0,Ambil_ScanCode2 Jb KbdClock,$ Jnb KbdClock,$ Jb KbdClock,$ Jnb KbdClock,$ ret ; delay: mov R5,#0 delay1:mov R4,#02fh djnz R4,$ djnz R5,delay1 ret TableKeyboard: DB 00 DB 0F9H DB 00 DB 0F5H,0F3H,0F1H,0F2H,0FCH DB 00H DB 0FAH,0F8H,0F6H,0F4H DB 0C0H DB '~' DB 00H DB 00H DB 0C1H DB 0C2H DB 00H DB 0C3H DB 'Q1' DB 00H,00H,00H DB 'ZSAW2' DB 00H,00H DB 'CXDE43' DB 00H,00H DB ' VFTR5' DB 00H,00H DB 'NBHGY6' DB 00H,00H,00H DB 'MJU78'

Page 147: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 147

DB 00H,00H DB ',KIO09' DB 00H,00H DB './L;P-' DB 00H,00H,00H DB 27H DB 00H DB '[=' DB 00H,00H DB 0C5H DB 0C6H DB 0AH DB ']' DB 00H DB '\' DB 00H,00H,00H,00H,00H,00H,00H,00H DB 08H DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H DB 0DH DB 00H DB 0FBH DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H DB 0F7H end 7. Simpanlah program yang anda ketik dan beri nama : prog122a.asm 8. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex. 9. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan) 10. Lakukan pengamatan untuk data keyboard yang ditampilkan.

Percobaan 12.1. Pengambilan data karakter keyboard PC dan display ke LCD Karakter Pada percobaan ini data keyboard PC diinterfacekan ke mikrokontroller dengan menggunaan port P3 bit 2 dan 3. Hasil pengambilan data keyboard selanjutnya ditampilkan pada layar LCD Karakter.

Page 148: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 148

VSS

2

1116

7VCC

D2

EN

LCD Character

3

14

D5

8

1

GND

10k

Potensio Multiturn

D1

P3.7

D74

13

12

9BPL

6

P0.7..P0.0

2 X 16

VCC

D4

J3

EN LCD 1 2

10

D1

RSP3.6

D3

D6

D0

15

Gambar 12.8. Rangkaian interface LCD karakter 2x16 Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hubungkan jumper keyboard dua kabel ke rangkaian mikrokontroller bit P3.2 dan bit P3.3. 2. Hubungkan modul keyboard PC PS/2 ke konektor keybaord 3. Hubungkan modul Microcontroller Trainer dengan power supply +5V 4. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 5. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program 6. Ketik program berikut ini:

dispclr equ 00000001b funcset equ 00111000b entrmod equ 00000110b dispon equ 00001100b KbdData bit P3.3 KbdClock bit INT0 DataKeyboard equ 30h ; org 0h nop call init_LCD ; Forever: JB KbdClock,$ call GetDataKeyboard jnc Forever acall LCD_Out clr C sjmp Forever ; ;================================== ;Subroutine Get Data From Keyboard

Page 149: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 149

;================================== GetDataKeyboard: call Get_scancode cjne a,#0F0h,kybd_pressed JB KbdClock,$ call Get_Scancode Setb C call Convert_Scancode ret ; Kybd_pressed: Clr C ret ; ;=============================== ;Subroutine Convert Scan Data ;Using Look Up Table ;=============================== Convert_ScanCode: Mov DPTR,#TableKeyboard movc A,@A+DPTR mov DataKeyboard,A ret ; LCD_Out: mov R7, #80h acall write_inst mov R7,DataKeyboard acall write_data ret ; init_lcd: mov R7,#dispclr acall write_inst mov R7,#funcset acall write_inst mov R7,#dispon acall write_inst mov R7,#entrmod acall write_inst ret ; Get_scanCode: clr A Jnb KbdClock,$ mov R0,#08h Get_ScanCode2: Jb KbdClock,$ Mov C,KbdData Rr A mov acc.7,C Jnb KbdClock,$

Page 150: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 150

Djnz R0,Get_ScanCode2 Jb KbdClock,$ Jnb KbdClock,$ Jb KbdClock,$ Jnb KbdClock,$ ret ; Write_inst: clr P3.6 ; RS = P2.0 = 0, write mode instruction mov P0,R7 ; D7 s/d D0 = P0 = R1 setb P3.7 ; EN = 1 = P2.1 call delay; call delay time clr P3.7 ; EN = 0 = P2.1 ret ; Write_data: setb P3.6 ; RS = P2.0 = 1, write mode data mov P0,R7 ; D7 s/d D0 = P0 = R1 setb P3.7 ; EN = 1 = P2.1 call delay; call delay time clr p3.7 ; EN = 0 = P2.1 ret ; ; delay: mov R5,#0 delay1:mov R4,#02fh djnz R4,$ djnz R5,delay1 ret ; TableKeyboard: DB 00 DB 0F9H DB 00 DB 0F5H,0F3H,0F1H,0F2H,0FCH DB 00H DB 0FAH,0F8H,0F6H,0F4H DB 0C0H DB '~' DB 00H DB 00H DB 0C1H DB 0C2H DB 00H DB 0C3H DB 'Q1' DB 00H,00H,00H DB 'ZSAW2' DB 00H,00H DB 'CXDE43' DB 00H,00H DB ' VFTR5'

Page 151: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 151

DB 00H,00H DB 'NBHGY6' DB 00H,00H,00H DB 'MJU78' DB 00H,00H DB ',KIO09' DB 00H,00H DB './L;P-' DB 00H,00H,00H DB 27H DB 00H DB '[=' DB 00H,00H DB 0C5H DB 0C6H DB 0AH DB ']' DB 00H DB '\' DB 00H,00H,00H,00H,00H,00H,00H,00H DB 08H DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H DB 00H,00H DB 0DH DB 00H DB 0FBH DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H DB 0F7H End 7. Simpanlah program yang anda ketik dan beri nama : prog121a.asm

8. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.

9. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)

10. Lakukan pengamatan untuk data keyboard yang ditampilkan. 11. Lakukan modifikasi program tersebut untuk menampilkan data keyboard PC lebih dari satu

karakter ke LCD karakter.

Percobaan 12.2. Pengambilan data karakter keyboard PC dan display ke 7 Segmen Pada percobaan ini data keyboard PC diinterfacekan ke mikrokontroller dengan menggunaan port P3 bit 2 dan 3. Hasil pengambilan data keyboard selanjutnya ditampilkan pada disply 7 Segmen

Page 152: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 152

VCC

aa

VCC

ee

c

FCS 9013

PNP

7 x 220 ohm

d

f

FCS 9013

b

Common Anoda

PNP

FCS 9013

VCC

FCS 9013

VCC

P0.6..P0.0

FCS 9013

PNP

VCC

FCS 9013

PNP

g

Y7..Y0

g

f

VCC

FCS 9013

PNP

c

8 x 1k ohm

VCC

PNP

d

FCS 9013

VCC

b

PNPPNP

(a)

VCC

P3.6 U8

74LS138

123

645

15141312111097

ABC

G1G2AG2B

Y0Y1Y2Y3Y4Y5Y6Y7

P3.5

R28

10K

J2

EN 7 SEGMEN12

Y7..Y0

P3.7

VCC

(b)

Gambar 12.9. Rangkaian Display 8x7 segmen (a) dan rangkaian decoder (b)

Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut: 1. Hubungkan jumper keyboard dua kabel ke rangkaian mikrokontroller bit P3.2 dan bit P3.3. 2. Hubungkan modul keyboard PC PS/2 ke konektor keybaord 3. Pasang jumper 7 SegmenEN 4. Hubungkan modul Microcontroller Trainer dengan power supply +5V 5. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer 6. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program 7. Ketik program berikut ini:

Page 153: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 153

Percobaan 15 EEPROM

VCC

J7

CON2

12

U3

AT24C08-1.8

123

5

6

7

8

A0A1A2

SDA

SCLK

WP

VCC

VCC

R410K

R510K

Petunjuk : Hubungkan kabel jumper SDA ke P2.0 dan SCL ke P2.1 Percobaan 15.1 Pada percobaan berikut akan disimulasikan proses penyimpanan data pada alamat 3Ch s/d 3Eh EEAddr equ 30h EEData equ 31h ByteCnt equ 32h SDAPin bit P2.0 SCLPin bit P2.1 ;--------------- EE WRITE --------------------------- Start: mov 3ch,#11110000b mov 3dh,#254 mov 3eh,#253 mov 3fh,#251 call Write_L_C call Delay_20ms call Delay_20ms call Read_L_C Stop: sjmp stop Write_L_C: MOV EEAddr, #00h ; WR address .. MOV R0, #3Ch MOV ByteCnt,#01h ; Send 1 bytes .. EE_W_Loop: MOV EEData, @R0 LCALL EE_Write INC R0 INC EEAddr LCALL Delay_20ms DJNZ ByteCnt, EE_W_Loop

Page 154: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 154

RET ;--------------- EE READ ---------------------------- Read_L_C: MOV EEAddr, #00h ; RD address .. MOV R0, #3Ch MOV ByteCnt,#01h ; Get 1 bytes .. EE_R_Loop: LCALL EE_READ MOV @R0, EEData INC R0 INC EEAddr LCALL Delay_20ms DJNZ ByteCnt, EE_R_Loop RET ;--------------- EEPROM ROUTINES FOR THE 24C02, with A2 = A1 = A0 = 0 ------------------- ; one byte .. EE_WRITE: LCALL EE_START ; SEND A START FLAG TO THE EEPROM .. MOV A,#0A0H ; SPECIFY A WRITE EEPROM @ ADDRESS 0H .. LCALL SH_OUT ; SHIFT OUT THE DEVICE ADDRESS .. JC WR_ABORT ; ABORT IF NO ACK FROM EEPROM .. MOV A,EEAddr ; GET EEPROM MEMORY ADDRESS .. LCALL SH_OUT ; SHIFT OUT THE MEMORY ADDRESS .. JC WR_ABORT ; ABORT IF NO ACK FROM EEPROM .. MOV A, EEData ; GET THE DATA TO BE WRITTEN .. LCALL SH_OUT ; SHIFT OUT THE DATA .. JC WR_ABORT CLR C WR_ABORT: LCALL EE_STOP ; SEND STOP CONDITION TO EEPROM .. ; WAIT FOR WRITE TIME OF THE 24C02 {10ms} .. ; THE EEPROM TAKES 10ms TO INTERNALLY STORE THE DATA. YOU CAN EITHER .. ; PUT THE MICROCONTROLLER IN A WAIT STATE, OR CONTINUE WITH EXECUTION, ; KEEPING IN MIND THAT THE EEPROM DATA IS NOT STORED FOR 10ms! .. RET ; GO BACK TO MAIN PROGRAM .. ;--------------- READ THE EEPROM DATA - FIRST PERFORM 'DUMMY WRITE' --------------- ; one byte .. EE_READ: MOV EEData,#00H ; CLEAR OLD DATA .. LCALL EE_START ; SEND A START FLAG TO EEPROM .. MOV A,#0A0H ; SPECIFY A WRITE TO EEPROM @ ADDRESS 0H .. LCALL SH_OUT ; PERFORM 'DUMMY WRITE' .. JC RD_ABORT ; ABORT IF NO ACK .. MOV A,EEAddr ; LOAD EEPROM MEMORY LOCATION FROM WHICH TO READ .. LCALL SH_OUT ; WRITE EEPROM MEMORY LOCATION .. JC RD_ABORT ; ABORT IF NO ACK ..

; NOW READ THE DATA! ..

Page 155: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 155

LCALL EE_START ; SEND A START FLAG .. MOV A,#0A1H ; SPECIFY A READ FROM EEPROM .. LCALL SH_OUT ; SHIFT OUT EEPROM ADDRESS .. JC RD_ABORT ; ABORT IF NO ACK .. LCALL SH_IN ; SHIFT IN THE DATA FROM EEPROM .. MOV EEData,A ; STORE THE DATA .. MOV P0,EEData LCALL NAK ; SEND A NAK (NO ACKNOWLEDGE) TO THE EEPROM .. CLR C ; CLEAR ERROR FLAG .. RD_ABORT: LCALL EE_STOP ; ALL DONE .. RET ;--------------- EE_START BIT-BANGS A START SEQUENCE TO EEPROM (HI-TO-LOW SDA TRANSITION WITH SCL HIGH) .. EE_START: SETB SDAPin SETB SCLPin ; SET BOTH BITS .. NOP ; DELAY .. CLR SDAPin ; START CONDITION - SDA HI TO LOW TRANSITION .. NOP NOP ; EEPROM ACCESS TIME DELAY .. CLR SCLPin CLR C ; CLEAR ERROR FLAG .. RET ; ALL DONE .. ;--------------- EE_STOP SENDS A STOP SEQUENCE TO THE EEPROM (LOW-TO-HIGH SDA TRANSITION WITH SCL HIGH) .. EE_STOP: CLR SDAPin NOP NOP SETB SCLPin NOP NOP ; SETUP TIME DELAY .. SETB SDAPin ; SEND A STOP CONDITION .. RET ;--------------- SH_OUT SHIFTS DATA OUT TO THE EEPROM--------------------- SH_OUT: PUSH B MOV B,#8 ; SAVE B AND LOAD BIT COUNT .. EE_OUT: RLC A ; SHIFT BIT LEFT (RLC=ROTATE LEFT THROUGH CARRY) .. MOV SDAPin, C ; GET DATA BIT FROM CARRY .. NOP SETB SCLPin ; CLOCK IN 1-BIT .. NOP ; CLOCK HIGH TIME .. CLR SCLPIN ; CLOCK IS NOW LOW .. DJNZ B, EE_OUT ; DO IT 8 TIMES .. SETB SDAPin ; RELEASE SDA FOR ACK .. NOP NOP

Page 156: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 156

SETB SCLPin ; ACK CLOCK .. NOP MOV C, SDAPin ; GET THE ACK .. CLR SCLPin ; CLEAR THE CLOCK BIT .. POP B ; RESTORE WHATEVER B WAS .. RET ;--------------- SH_IN SHIFT DATA IN FROM THE EEPROM----------------------- SH_IN: SETB SDAPin ; MAKE SDA AN INPUT .. PUSH B MOV B,#8 ; SAVE B AND SET BIT COUNTER .. EE_IN: NOP SETB SCLPin ; SET CLOCK .. NOP NOP ; EEPROM ACCESS TIME .. SETB SDAPin ; SET = 1 SO USED AS INPUT .. MOV C, SDAPin ; READ 1-BIT .. RLC A ; SHIFT BIT LEFT .. CLR SCLPin ; CLEAR CLOCK BIT .. DJNZ B, EE_IN ; GET NEXT BIT IF LESS THAN 8 BITS READ .. POP B RET ;--------------- ACK SENDS AN EEPROM ACKNOWLDEGE---------------------- ACK: CLR SDAPin NOP NOP SETB SCLPin ; CLOCK THE ACK .. NOP CLR SCLPin ; BRING CLOCK LOW .. RET ;--------------- NAK SENDS A NO ACKNOWLEDGE---------------------------- NAK: SETB SDAPin NOP NOP SETB SCLPin ; CLOCK THE NAK .. NOP CLR SCLPin ; BRING CLOCK LOW .. RET Delay_20ms: mov R6,#255 delay1: mov R7,#255 djnz R7,$ djnz R6,delay1 ret end

Page 157: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 157

Lampiran 1 Petunjuk Instalasi Komponen TComPort pada Delphi 6

1. Untuk melakukan antarmuka PC dengan perangkat ekternal dengan memanfaatkan port com atau port serial pada pemrograman delphi, diperlukan sebuah komponen untuk mengakses port serial communicatin RS232, untuk itu diperlukan komponen yang disebut cport.

2. Lakukan copy file Cport dari download di Internet atau Lab Microcontroller dan Paste ke folder Program Files – Borland – Delphi6.

3. Bukalah file DsgnCport6 dengan menggunakan Program Delphi

4. Click pada button Compile pada gambar berikut, untuk menghasilkan file dcu pada folder CPort.

Page 158: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 158

5. Copy file-file dcu tersebut ke Folder Delphi6 – Lib

6. Kembali pada tampilan Package-DsgnCport6.dpk, dan pilih button Instal untuk melakukan proses instalasi komponen.

7. Setelah proses instalasi komponen maka akan didapatkan tampilan sebagai berikut.

Page 159: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 159

8. Setelah proses instalasi maka akan didapatkan komponen Cport pada Tabulasi Komponen

9. Langkah terakhir adalah pengaturan pada Environment pada Tool

10. Pilih pada tabulasi Library

11. Lakukan pemilihan Path folder Cport dengan menekan button browse pada Library Path

Page 160: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 160

12. Contoh lokasi folder Cport

Page 161: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 161

Lampiran 2. Perangkat Lunak

1. Compiler MIDE Studio

M-IDE Studio adalah salah satu cara yang digunakan untuk menjalankan kompilasi untuk divais MCS-51. M-IDE Studio mempunyai beberapa fitur yang dapat digunakan untuk edit, compil, dan debug file.

The M-IDE Studio juga dapat digunakan untuk menulis program dalam bahasa C. Dengan menggunakan software ini, maka kita dapat melihat error pada report file LST.

Gambar 1.19. M-IDE Studio

Bila anda perhatikan pada menu toolbar dan menu pilihan, tampak terlihat disable. Hal ini karena file belum dibuat. Untuk membuat sebuah file, lakukan langkah-langkah berikut:

1. Membuat File Baru

Untuk membuat file baru, klik pada menu File atau short cut seperti yang ditunjukkan pada gambar, sehingga akan tampak halaman kosong.

Figure 1.20. File baru dengan halaman kosong

Page 162: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 162

2. Menulis sebuah program Tulis program assembly pada halaman kosong, dan lakukan penyimpanan file. Bila file telah tersimpan maka akan tampak teks instruksi yang berwarna-warni. Sebagaimana yang ditunjukan pada gambar 3.

Gambar 1.21 Menu penyimpanan file 3. Kompilasi Agar file dengan ekstensi ASM tersebut dapat diloadkan ke mikrokontroller, maka perlu dilakukan kompilasi dari file ASM ke HEX.

Gambar 1.22 Kompilasi file

Page 163: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 163

LAMPIRAN 3 KONEKSI PROGRAMMER KE MIKROKONTROLLER Bagan Pemasangan Rangkaian Programmer ke Board Mikrokontroller

Pada gambar tersebut tampak hubungan kabel dari Port Serial PC ke Board Mikrokontroller, perhatikan indikator LED pada rangkaian programmer tersebut, apabila program sedang menjalankan proses ERASE CHIP maka LED indikator akan nyala, tunggulah LED indikator tersebut sampai mati, setelah itu baru melanjutkan proses WRITE CHIP. ( hal ini penting untuk dilakukan, jangan pernah melakukan proses WRITE CHIP apabila LED indikator tersebut dalam keadaan nyala, hal ini akan muncul komentar ERROR ) LAMPIRAN 4 Rangkaian Programmer ISP serial RS232 (dari: 8052.com) Sangat disayangkan sekali, bahwa keberadaan LPT pada sebuah computer, terutama pada

notebook, sudah sangat jarang terlihat, padahal keinginan untuk belajar mikrokontroller sudah

tidak bisa ditahan lagi, sehingga kebutuhan sebuah programmer sangat mutlak sangat

diperlukan. Pembuatan programmer dengan menggunakan port serial dapat digunakan sebagai

alternative untuk melakukan pemrograman ke mikrokontroller, dan keberadaan port serial ini

dapat tergantikan dengan menggunakan konverter USB to RS232, apabila di pc atau notebook

anda tidak tersedia port serial RS232. Dengan harga yang sangat terjangkau. Berikut

merupakan skamatik dari sebuah website yang sangat berguna sekali, 8052.com

Page 164: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 164

Pada gambar tersebut tampak hanya diperlukan tiga buah kabel yang menghubungkan dari port

serial RS232 ke rangkaian programmer. IC AT89c2051 dapat digantikan dengan AT89s2051,

ic tersebut merupakan saudara dari 89s51 dengan pin dan ROM yang lebih sedikit, tetapi

dengna kemampuan yang tidak kalah hebat. IC ini sesungguhny hanya berfungsi sebagai

konverter dari data serial menjadi data parallel, sehingga dapat digunakan untuk melakukan

pemrograman secara ISP ke rangkaian target.

1. Buat rangkaian programmer ISP serial sesuai dengan gambar berikut

R51k

C730pF

R21k

C830pF

VCC

MISO

R1220

RESET

+C110uF

R31k

J2

CON6

123456

RESET

Y111.0592

+

C510uF

+ C210uF VCC

SCKVCC

R41k

SCK

VCC

P1

DB9 MALE

594837261

VCC

MOSI

MISO

+ C610uFVCC

C3

100nF+C410uF

U1

MAX232

138

1110

134526

129147

R1INR2INT1INT2IN

C+C1-C2+C2-V+V-

R1OUTR2OUTT1OUTT2OUT

U2

AT89S2051

1

1213141516171819

20

236789

11

54

RST/VPP

P1.0/AIN0P1.1/AIN1

P1.2P1.3P1.4P1.5P1.6P1.7

VCC

P3.0/RXDP3.1/TXDP3.2/INTOP3.3/INT1P3.4/T0P3.5/T1P3.7

XTAL1XTAL2

D1LED

MOSI

1. Lakukan pengisian pada IC AT89s2051 dengan menggunakan kabel programmer LPT,

dengan firmware sebagai berikut ( lihat lampiran di CD )

Page 165: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 165

2. Buka software pemrograman untuk melakukan proses Erese, Write dan Read ke

rangkaian target, dengan procedure sebagai berikut:

a. Buka program ISP PROG V1.4, pada desktop komputer anda, buatkan shortcut

apabila anda belum membuatnya.

b. Tampilan program ISP PROG V1.4, pada gambar tersebut tampak beberapa

menu utama yang dapat digunakan untuk keperluan pemrograman, File, Option

dan Help

Page 166: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 166

c. Pada menu option dan pilih setting, untuk memilih port comm yang digunakan.

d. Pada menu device, pilih IC yang digunakan dan klik OK

Page 167: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 167

e. Pada saat akan melakukan pemrograman/pengisian ke device, pada daftar pilih

menu Chip Erase untuk melakukan penghapusan isi program pada device dan

tekan tombol RUN, untuk memulai penghapusan data.

Page 168: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 168

f. Pada proses penghapusan data pada memori program, tampak pada gambar

tersebut tampilan dialog box, Error (abaikan tampilan tersebut) dan lanjutkan

dengan memilih menu Write Flash

g. Untuk mengisi program memori dengan file HEX, pada daftar pilih menu

Write Flash, dan buka file HEX melalui menu File dengan pilihan Load

FLASH File.

h. Pilih file Hex pada folder atau dokumen

Page 169: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 169

i. Sebelum menekan tombol RUN untuk memulai proses pengisian file hex, ke

memori program, perhatikan LED pada rangkaian programmer serial (LED

ini harus dalam keadaan padam)

Page 170: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 170

LAMPIRAN 5

MAIN BOARD LAYOUT MIKROKONTROLLER 89S51 DEVELOPMENT BOARD

P0.0

P0.7

P1.0

P1.7

P3.0

P3.7

P2.0

P2.7

-12V

+12V

+5V

GND

74LS244

CATATAN: EN : Enable/ Aktif, bila dihubungkan singkat EN_ADC: SW Togle pada posisi RUN Target PEMROGRAMAN ISP: SW Togle pada posisi Programming VREF ADC: Pengaturan tegangan referensi ADC IREF DAC: Pengaturan arus referensi DAC TP IREF DAC: Pengukuran arus referensi DAC, hubungkan ke amperemeter untuk pengaturan arus referensi DAC, dan pasang jumper setelah proses pengukuran TP VREF ADC: Pengukuran tegangan referensi ADC Pada saat penggunaan tombol pushbutton atau keypad 4x4, buka jumper pada DAC_EN

Page 171: Petunjuk Praktikum Mikrokontroller-PanduanV2.0 Super

Web:www.mytutorialcafe.com Email: [email protected] – Triwiyanto 171