modul praktikum mikroprosesor

60
. . . . . . . . . modul petunjuk Praktikum Sistem Mikroprosesor

Upload: cingut-ibnu

Post on 25-Jul-2015

512 views

Category:

Documents


14 download

TRANSCRIPT

Page 1: Modul Praktikum Mikroprosesor

.........modul petunjuk

Praktikum Sistem Mikroprosesor

Jurusan Teknik ElektroSekolah Tinggi Teknologi Adisutjipto

Page 2: Modul Praktikum Mikroprosesor

..........

. . . . . . . . . .

Freddy Kurniawan, S.T., M.T.

Sekolah Tinggi Teknologi Adisutjipto

Modul Petunjuk

Praktikum Sistem Mikroprosesor

ã Program Studi Teknik Elektro, STTAJl. Janti Blok R, Lanud Adisutjipto, Yogyakarta

Telp. (0274) 451 262, 451 263, Faks. (0274) 451 265

Page 3: Modul Praktikum Mikroprosesor

..........

Daftar Isi

Bab 1. Pengantar Pemrograman Assembler........................................................1-11.1 Tujuan Praktikum.............................................................................................1-11.2 Alat dan Bahan.................................................................................................1-11.3 Teori Singkat....................................................................................................1-11.4 Langkah-langkah Percobaan...........................................................................1-2

1.4.1 Membuat Project Baru di AVR Studio 1-21.4.2 Membuat Program Baru 1-21.4.3 Debugging 1-31.4.4 Mengakses Register 1-4

1.5 Data Pengamatan............................................................................................1-61.5.1 Debugging 1-61.5.2 Mengakses Register 1-6

Bab 2. Menggunakan Mode Pengalamatan...........................................................2-12.1 Tujuan Praktikum.............................................................................................2-12.2 Alat dan Bahan.................................................................................................2-12.3 Teori Singkat....................................................................................................2-12.4 Langkah-langkah Percobaan...........................................................................2-1

2.4.1 Mengakses Memori data dengan Data Direct Addressing 2-12.4.2 Mengakses Memori data dengan Data Indirect Addressing 2-22.4.3 Mengakses Memori data dengan Data Indirect with Displacement

Addressing 2-22.4.4 Mengakses Memori data dengan Data Indirect Addressing with Pre-

increment/decrement Addressing 2-22.5 Data Pengamatan............................................................................................2-4

2.5.1 Mengakses Memori data dengan Data Direct Addressing 2-42.5.2 Mengakses Memori data dengan Data Indirect Addressing 2-42.5.3 Mengakses Memori data dengan Data Direct Addressing 2-42.5.4 Mengakses Memori data dengan Data Indirect with Displacement

Addressing 2-4

Bab 3. Menggunakan Port I/O.................................................................................3-13.1 Tujuan Praktikum.............................................................................................3-13.2 Alat dan Bahan.................................................................................................3-13.3 Teori Singkat....................................................................................................3-13.4 Langkah-langkah Percobaan...........................................................................3-2

3.4.1 Menjadikan Pin sebagai Port Keluaran 3-23.4.2 Menjadikan Pin sebagai Port Masukan 3-33.4.3 Menjadikan Port I/O sebagai Current Source dan Current Sink 3-33.4.4 Memberi Data ke Port Masukan 3-3

3.5 Data Pengamatan............................................................................................3-53.5.1 Menjadikan Pin sebagai Port Keluaran 3-53.5.2 Menjadikan Pin sebagai Port Masukan 3-53.5.3 Menjadikan Port I/O sebagai Current Sink dan Current Source 3-53.5.4 Memberi Data ke Port Masukan 3-5

Bab 4. Menggunakan Pewaktu/Pencacah..............................................................4-14.1 Tujuan Praktikum.............................................................................................4-14.2 Alat dan Bahan.................................................................................................4-14.3 Teori Singkat....................................................................................................4-1

4.3.1 Pewaktu/Pencacah 0 4-24.3.2 Pewaktu 0 sebagai Penunda dengan Metode Luapan (Overflow) 4-3

Page 4: Modul Praktikum Mikroprosesor

..........4.3.3 Pewaktu 0 sebagai Penunda dengan Metode Pembandingan (Match

Compare) 4-34.4 Langkah-langkah Percobaan...........................................................................4-4

4.4.1 Pewaktu 0 sebagai Penunda dengan Metode Luapan (Overflow) 4-44.4.2 Pewaktu 0 sebagai Penunda dengan Metode Pembandingan (Match

Compare) 4-54.5 Data Pengamatan............................................................................................4-6

4.5.1 Pewaktu 0 sebagai Penunda dengan Metode Luapan (Overflow) 4-64.5.2 Pewaktu 0 sebagai Penunda dengan Metode Pembandingan (Match

Compare) 4-6

Bab 5. Menggunakan Interupsi..............................................................................5-15.1 Tujuan Praktikum.............................................................................................5-15.2 Alat dan Bahan.................................................................................................5-15.3 Teori Singkat....................................................................................................5-1

5.3.1 Interupsi dari Pewaktu 0 5-25.4 Langkah-langkah Percobaan...........................................................................5-2

5.4.1 Interupsi Terpicu Match Compare di Pewaktu 0 5-25.5 Data Pengamatan............................................................................................5-4

Bab 6. Pengantar Pemrograman Menggunakan CodeVisionAVR........................6-16.1 Tujuan Praktikum.............................................................................................6-16.2 Alat dan Bahan.................................................................................................6-16.3 Teori Singkat....................................................................................................6-16.4 Langkah-langkah Percobaan...........................................................................6-2

6.4.1 Membuat Project Baru di CodeVisionAVR 6-26.4.2 Menulis Program Menggunakan Pewaktu Nol 6-2

Bab 7. Komunikasi Serial USART..........................................................................7-17.1 Tujuan Praktikum.............................................................................................7-17.2 Alat dan Bahan.................................................................................................7-17.3 Teori Singkat....................................................................................................7-17.4 Langkah-langkah Percobaan...........................................................................7-1

7.4.1 Inisiasi Port Serial 7-17.4.2 Pengiriman Data ke Komputer 7-2

Bab 8. Pengukuran Tegangan DC dengan ADC Mikrokontroler...........................8-18.1 Tujuan Praktikum.............................................................................................8-18.2 Alat dan Bahan.................................................................................................8-18.3 Teori Singkat....................................................................................................8-18.4 Langkah-langkah Percobaan...........................................................................8-2

Bab 9. Pengantar Sistem Berbasis Mikroprosesor...............................................9-19.1 Tujuan Praktikum.............................................................................................9-19.2 Alat dan Bahan.................................................................................................9-19.3 Teori Singkat....................................................................................................9-19.4 Langkah-langkah Percobaan...........................................................................9-1

Page 5: Modul Praktikum Mikroprosesor

..........

Bab 1. Pengantar Pengantar Pemrograman AssemblerPemrograman Assembler

1.1 Tujuan Praktikum

Memahami cara mengakses register.

1.2 Alat dan Bahan

1 Satu set PC

2 Perangkat lunak AVR Studio 4

1.3 Teori Singkat

Mikrokontroler merupakan miniatur dari sebuah komputer. Keping IC ini biasa digunakan untuk mengendalikan suatu peralatan. Sebagaimana komputer, keping ini dapat diprogram. Salah satu bahasa yang digunakan untuk pemrograman adalah bahasa assembler. Untuk memudahkan pemahaman cara kerja suatu listing program, dapat digunakan perangkat lunak simulasi AVR Studio 4 dari Atmel yang dapat diunduh secara gratis di situs Atmel.

Gambar tampilan awal AVR Studio 4

Perangkat lunak AVR Studio 4 dapat digunakan untuk mengedit listing program dan membantu melihat isi register dan memori data. Dengan program ini dapat pula disimulasikan jalannya program langkah demi langkah mendekati kondisi yang sebenarnya.

Ba

1

Page 6: Modul Praktikum Mikroprosesor

..........1.4 Langkah-langkah Percobaan

1.4.1 MEMBUAT PROJECT BARU DI AVR STUDIO

Untuk membuat sebuah aplikasi baru, maka kita harus membuat sebuah project baru di AVR Studio dengan langkah-langkah sebagai berikut.

1. Pilih menu Project – New Project – Project Type: Atmel AVR Assembler.

2. Isikan nama project di Project Name. Pastikan nama project adalah nama file inisial dan tentukan pula lokasi foldernya.

3. Lanjutkan ke langkah berikutnya dengan menekan tombol Next.

4. Pilih Debug Platform: AVR Simulator dan Device: ATMega8535. Setelah ditekan Finish, akan keluar tampilan seperti berikut.

1.4.2 MEMBUAT PROGRAM BARU

1. Tuliskan instruksi compiler direction untuk ATMega8535 sebagai berikut:.include "m8535def.inc"

2. Tentukan awal program di lokasi 0000h dengan menuliskan:.org 0x0000

3. Set nilai default untuk stack memori di akhir lokasi SRAM dengan menuliskan:ldi r16,low(ramend)out SPL,r16ldi r16,high(ramend)out SPH,r16

4. Kompilasi program dengan menu: Build – Build atau tekan F7. Dan amati jendela di Tab Build.

2

Page 7: Modul Praktikum Mikroprosesor

..........

5. Perhatikan memori yang digunakan:

.cseg: code segment (memori program) dimulai dari 000000h hingga 000008h, berisi 8 bahasa mesin, menggunakan 8 byte (0,1 %) dari total 8129 byte.

.dseg: data segment (memori data atau SRAM) yang diakses adalah alamat 000060h. Memori ini sebagai penunjuk stack memori. Total memori data adalah 512 byte dan belum digunakan.

.eseg: data eeprom sebesar 512 byte belum digunakan.

1.4.3 DEBUGGING

1. Simulasikan program di AVR Studio dengan menggunakan menu Debug – Start Debugging atau Ctrl-Shift-Alt-F5. Amati perubahan tampilan.

2. Pastikan frekuensi clock simulasi sama dengan frekuensi clock yang akan digunakan. Frekuensi clock dapat diubah pada saat debugging dengan menggunakan menu Debug – AVR Simulation Options – Device Selection dan ubah frekuensinya. Gunakan frekuensi 7,372800 MHz dalam simulasi ini!

3

Page 8: Modul Praktikum Mikroprosesor

..........3. Amati isi memori program dengan menu View – Memory atau Alt-4, kemudian pilih

memori program.

4. Perhatikan bahwa setiap instruksi assembler yang diketik di listing akan menjadi satu word bahasa mesin dengan panjang 16 bit. Catat bahasa mesin dari keempat instruksi di tabel data pengamatan!

5. Pastikan bahwa penunjuk eksekusi program (panah kuning) berada di baris pertama instruksi sebagaimana gambar di atas.

6. Amati isi register PC (Program Counter) dan SP (Stack Pointer), juga nilai Cylce Counter dan Stop Watch.

7. Jalankan program langkah demi langkah dengan menu Debug - Step Over atau tekan F10, dan catat isi register PC dan SP, dan juga nilai Cylce Counter dan Stop Watch di tabel data pengamatan.

Pertanyaan:1. Berapa siklus untuk mengerjakan sebuah instruksi?

2. Berapa lama waktu untuk mengerjakan sebuah instruksi dengan frekuensi clock 7,372800 MHz?

1.4.4 MENGAKSES REGISTER

1. Ketikan listing berikutldi r16,0x12ldi r17,0x34mov r0,r16mov r1,r17

2. Kompilasi program.

3. Amati eksekusi program (debugging) dengan menggunakan menu Debug – Start Debugging atau Ctrl-Shift-Alt-F5.

4. Amati isi memori dengan menu View – Memory atau Alt-4.

5. Ubah memori yang ditampilkan menjadi register.

6. Jalankan program langkah demi langkah dengan menu Debug - Step Over atau tekan F10.

7. Tekan F10 beberapa kali hingga penunjuk program ada di baris ldi r16,0x12.

4

Page 9: Modul Praktikum Mikroprosesor

..........

8. Tekan F10. Amati isi memori data dan catat isi lokasi mana yang berubah.

9. Ulangi langkah 8 sampai program selesai dieksekusi.

Pertanyaan & Tugas:1. Jalankan program langkah demi langkah dan amati peruahan isi lokasi yang berubah

saat mengeksekusi instruksi berikut:ldi r16,low(ramend)

Mengapa r16 berisi 5F?

2. Jalankan program langkah demi langkah lagi dan amati peruahan isi lokasi yang berubah saat mengeksekusi instruksi berikut:

ldi r16,high(ramend)

Mengapa r16 berisi 02?

3. Apa arti 025Fheks bagi mikrokontroler ini?

4. Berapa siklus waktu untuk mengerjakan potongan listing tersebut?

5. Berapa lama waktu untuk mengerjakan potongan listing tersebut dengan frekuensi clock 7,372800 MHz?

6. Ubahlah clock frekuensi menjadi 12 MHz, berapa lama waktu untuk mengerjakan potongan listing tersebut?

7. Gantilah r16 dan r17 pada percobaan 1.4.4 dengan r2 dan r3! Amati apa yang terjadi! Mengapa?

5

Page 10: Modul Praktikum Mikroprosesor

..........

1.5 Data Pengamatan

1.5.1 DEBUGGING

Instruksi Bahasa Mesin

ldi r16,low(ramend)

out SPL,r16

ldi r16,high(ramend)

out SPH,r16

Pengamatan atas register PC dan SP.

Instruksi PC Cycle Counter

Stop Watch

ldi r16,low(ramend)

out SPL,r16

ldi r16,high(ramend)

out SPH,r16

1.5.2 MENGAKSES REGISTER

Instruksi

Isi register

ldi r16,0x12

ldi r17,0x34

mov r0,r16

mov r1,r1

6

Page 11: Modul Praktikum Mikroprosesor

..........7

Kelompok Praktikum:

1. ...................................... NIM .................

2. ...................................... NIM .................

3. ...................................... NIM .................

4. ...................................... NIM .................

Instruktur,

Tgl. ..........

...........................

7

Page 12: Modul Praktikum Mikroprosesor

..........

Bab 2. Menggunakan Mode PengalamatanMenggunakan Mode Pengalamatan

2.1 Tujuan Praktikum

Mahasiswa dapat mengakses memori dengan beberapa mode pengalamatan.

2.2 Alat dan Bahan

1. Satu set PC

2. Perangkat lunak AVR Studio 4

2.3 Teori Singkat

Penyalinan data dari register ke memori data dapat dilakukan dengan menggunakan instruksi sts (store direct to data space). Penyalinan data dari memori data ke register dapat dilakukan dengan menggunakan instruksi lds (load direct from data

space). Kedua instruksi tersebut menggunakan register sebagai operand untuk membentuk mode pengalamatan Data Direct.

Penyalinan data dari register ke memori data dan sebaliknya juga dapat dilaksanakan dengan mode pengalamatan Data Indirect. Pada mode ini dapat digunakan salah satu dari tiga pasang register sebagai penunjuk lokasi memori data. Di sini dapat digunakan instruksi st (Store Indirect). Ketiga pasang register tersebut adalah:

1. r26:r27 yang dapat diwakili oleh register x,

2. r28:r29 yang dapat diwakili oleh register y, dan

3. r30:r31 yang dapat diwakili oleh register z.

Kita dapat mengisikan beberapa lokasi memori data dengan suatu konstanta dengan menggunakan mode pengalamatan Data Indirect with Displacement. Di sini register indeks y dapat ditambah dengan suatu konstanta untuk menunjuk lokasi memori data lain. Di sini dapat digunakan instruksi std (Store Indirect with Displacement).

Jika diperlukan, kita juga dapat mengisi beberapa lokasi memori data berurutan dengan suatu konstanta dengan mode pengalamatan Data Indirect Addressing with Pre-increment/decrement. Di sini register indeks x, y atau z dapat dinaikkan (di-increment) atau diturunkan (di-decrement) untuk menunjuk lokasi memori data di atasnya atau di bawahnya. Di sini dapat digunakan operand x+, x-, y+, dan seterusnya.

2.4 Langkah-langkah Percobaan

2.4.1 MENGAKSES MEMORI DATA DENGAN DATA DIRECT ADDRESSING

Percobaan berikut akan mengisi lokasi memori data 0060h dengan 03h, kemudian menyalin isi lokasi memori data 0060h ke r17.

1. Tulislah potongan listing berikut di AVR Studio.ldi r16,0x03 ;load r16 with immadiatests 0x60,r16 ;copy from register to memorylds r17,0x60 ;copy from memory to register

2. Kompilasi program dan jalankan program langkah demi langkah.

3. Catat isi register dan memori data pada tabel di subbab Data Pengamatan setiap selesai menjalankan instruksi.

Ba

1

Page 13: Modul Praktikum Mikroprosesor

..........Pertanyaan:

1. Dapatkah mengisi lokasi memori data 0060h dengan 03h secara langsung tanpa menggunakan bantuan r16?

2. Dapatkah suatu lokasi memori data diisi suatu konstanta (immadiate) secara langsung tanpa menggunakan bantuan register?

2.4.2 MENGAKSES MEMORI DATA DENGAN DATA INDIRECT ADDRESSING

Percobaan berikut akan mengisi lokasi memori data 0060h dengan 04 dengan bantuan register penunjuk (pointer register) x, kemudian menyalin isi lokasi memori data 0060h ke r17.

1. Tulislah potongan listing berikut di AVR Studio.ldi r16,0x04ldi r26,0x60;save target to memory location index register Xst x,r16 ;copy from register to memoryld r17,x ;copy from memory to register

2. Kompilasi program dan jalankan program langkah demi langkah.

3. Catat isi register dan memori data pada tabel di subbab Data Pengamatan setiap selesai menjalankan instruksi.

Tugas:Buatlah listing tersingkat agar memori data di lokasi 0x0060 hingga 0x6F berisi 04h!

2.4.3 MENGAKSES MEMORI DATA DENGAN DATA INDIRECT WITH DISPLACEMENT ADDRESSING

Percobaan berikut akan mengisi lokasi memori data 0060h, 0062h dan 0064h dengan 04 dengan bantuan register penunjuk y.

1. Tulislah potongan listing berikut di AVR Studio.ldi r16,0x04ldi r28,0x60 ;save target to memory location

;index register Yst y,r16 ;copy from register to memory:0x60std y+2,r16;copy from register to memory:0x62std y+4,r16;copy from register to memory:0x64

2. Kompilasi program dan jalankan program langkah demi langkah.

3. Catat isi register dan memori data pada tabel di subbab Data Pengamatan setiap selesai menjalankan instruksi.

Pertanyaan:Bagaimana caranya agar kita dapat menyalin isi lokasi 0x60, 0x62 dan 0x64 ke register r17, r18 dan r19 dengan mode pengalamatan Data Indirect with Displacement? Instruksi apa yang digunakan?

2.4.4 MENGAKSES MEMORI DATA DENGAN DATA INDIRECT ADDRESSING WITH PRE-INCREMENT/DECREMENT ADDRESSING

Percobaan berikut akan mengisi lokasi memori data 0060h, 0061h dan 0062 dengan 04h dengan bantuan register penunjuk y.

1. Tulislah potongan listing berikut di AVR Studio.ldi r16,0x04ldi r28,0x60st y+,r16 ;copy from register to memory:0x60st y+,r16 ;copy from register to memory:0x61st y+,r16 ;copy from register to memory:0x62

2. Kompilasi program dan dan jalankan program langkah demi langkah.

2

Page 14: Modul Praktikum Mikroprosesor

..........3. Catat isi register dan memori data pada tabel di subbab Data Pengamatan setiap

selesai menjalankan instruksi.

Pertanyaan:1. Bagaimana caranya agar kita dapat menyalin isi lokasi 0x60, 0x61 dan 0x62 ke register

r17, r18 dan r19 dengan mode pengalamatan Data Indirect Addressing with Pre-increment/decrement Addressing? Instruksi apa yang digunakan?

2. Bagaimana caranya agar urutan pengisian memori data di percobaan di atas dibalik, yaitu dimulai dari 0x62, 0x61 dan terakhir 0x60?

3

Page 15: Modul Praktikum Mikroprosesor

..........

2.5 Data Pengamatan

2.5.1 MENGAKSES MEMORI DATA DENGAN DATA DIRECT ADDRESSING

Instruksi

Isi register

Isi lokasi memori data 0x60

ldi r16,0x03

sts 0x60,r16

lds r17,0x60

2.5.2 MENGAKSES MEMORI DATA DENGAN DATA INDIRECT ADDRESSING

Instruksi

Isi register

Isi lokasi memori da

4

Page 16: Modul Praktikum Mikroprosesor

..........ta 0x60

ldi r16,0x04

ldi r26,0x60

st x,r16

ld r17,x

2.5.3 MENGAKSES MEMORI DATA DENGAN DATA DIRECT ADDRESSING

Instruksi

Isi register

Isi lokasi memori

data

r16 r28 0x60 0x62 0x64

ldi r16,0x04

ldi r28,0x60

st y,r16

std y+2,r16

std y+4,r16

2.5.4 MENGAKSES MEMORI DATA DENGAN DATA INDIRECT WITH DISPLACEMENT ADDRESSING

Instruksi

Isi register

Isi lokasi memori

data

r16 r28 0x60 0x61 0x62

ldi r16,

5

Page 17: Modul Praktikum Mikroprosesor

..........0x04

ldi r28,0x60

st y+,r16

st y+,r16

st y+,r16

Kelompok Praktikum:

1. ...................................... NIM .................

2. ...................................... NIM .................

3. ...................................... NIM .................

4. ...................................... NIM .................

Instruktur,

Tgl. ..........

...........................

6

Page 18: Modul Praktikum Mikroprosesor

..........

Bab 3. Menggunakan Port I/OMenggunakan Port I/O

3.1 Tujuan Praktikum

Agar mahasiswa dapat menggunakan port I/O sesuai dengan kebutuhan.

3.2 Alat dan Bahan

1. Satu set PC.

2. Perangkat lunak AVR Studio 4.

3. Satu set pengunduh K-125 dan sistem minimal ATMega8535.

4. Satu buah multimeter.

3.3 Teori Singkat

Mikrokontroler ATMega8535 mempunyai 4 buah port I/O paralel, yaitu Port A, Port B, Port C dan Port D. Keempat port tersebut membentuk 32 pin port dengan nama PA0, PA1, hingga PD7 sebagaimana gambar di samping.

Semua pin dapat difungsikan sebagai pin port masukan atau keluaran. Semua pin terhubung dengan data bus melalui sebuah penyangga yang dibentuk oleh flip-flop D.

Terdapat beberapa flip-flop D pada sebuah pin. Setiap flip-flop D membentuk sebuah register yang dapat ditulis atau dibaca. Setiap register mempunyai fungsi khusus untuk keberlangsungan transmisi data dari data bus ke sebuah pin atau sebaliknya.

Ba

1

Page 19: Modul Praktikum Mikroprosesor

..........

Daftar fungsi setiap register dapat dilihat pada tabel fungsional di bawah ini.

Dari tabel tersebut, maka sebuah pin port dapat difungsikan sebagai pin masukan atau pin keluaran dengan beberapa pilihan (option). Register DDR (Data Direction Register) berfungsi untuk menentukan arah aliran data. Arah data akan keluar jika pin difungsikan sebagai keluaran, dan arah data akan masuk jika pin difungsikan sebagai masukan. Register ini dapat dibaca dan ditulis. Register PORT digunakan untuk menentukan data yang akan dikeluarkan. Register ini juga dapat dibaca dan ditulis. Sedangkan register PIN akan berisi data yang masuk dari port. Register ini hanya dapat dibaca saja.

3.4 Langkah-langkah Percobaan

3.4.1 MENJADIKAN PIN SEBAGAI PORT KELUARAN

Percobaan berikut akan mengeluarkan logika 0 dan 1 pada PORTC2 dan PORTC3, kemudian membaca data di PORTC dan menyimpannya di r18.

1. Tulislah potongan listing berikut.ldi r16,0b00001100 ;set output to pin 2 and 3ldi r17,0b00000100 ;set '0' to pin 2 and '1' to pin 3out ddrc,r16out portc,r17nop ;no-operationin r18,pinc ;read port, save to r18

2

Page 20: Modul Praktikum Mikroprosesor

..........2. Kompilasi program dan buka jendela port dengan menu View – Toolbars – I/O. Dan buka

PORTC dengan mengklik tanda + di depan icon PORTC.

3. Jalankan program langkah demi langkah.

4. Catat isi register DDRC, PINC dan PORTC pada tabel di subbab Data Pengamatan setiap selesai menjalankan instruksi.

Pertanyaan:Apa guna disisipkan instruksi nop? Bagaimana jika instruksi tersebut dihilangkan? Mengapa?

3.4.2 MENJADIKAN PIN SEBAGAI PORT MASUKAN

Percobaan berikut akan menjadikan PORTC7 ~ PORTC4 sebagai masukan, kemudian membaca data di PORTC dan menyimpannya di r18.

1. Jalankan kembali program di subbab 3.4.1 langkah demi langkah.

2. Setelah menjalankan instruksi nop, isikan data ‘1’ ke PINC bitke-4, 5, 6, 7 dengan mengklik bit-bit tersebut sebagaimana gambar di samping.

3. Jalankan instruksi in r18,pinc.

4. Catat isi register r18!

Pertanyaan:Pada sebuah port, dapatkah beberapa pin dijadikan port keluaran sementara itu beberapa pin dijadikan port masukan? Bagaimana caranya?

3.4.3 MENJADIKAN PORT I/O SEBAGAI CURRENT SOURCE DAN CURRENT SINK

Percobaan berikut akan mengeluarkan logika 0 dan 1 pada PORTC2 dan PORTC3. Kedua pin port tersebut akan bertindak sebagai current source dan current sink.

1. Unduhlah program di percobaan 3.4.1 ke mikrokontroler ATMega8535 menggunakan perangkat lunak AVR Prog atau Avr-Osp II.

2. Hubungkan PORTC2 dan PORTC3 sebagaimana gambar disamping.

3. Amati nyala kedua LED.

Pertanyaan:Berapa arus maksinal yang dapat dikeluarkan atau ditarik oleh sebuah pin?

3.4.4 MEMBERI DATA KE PORT MASUKAN

Percobaan berikut akan menjadikan PORTC7 ~ PORTC4 sebagai masukan dan PORTC3 dan PORTC2 sebagai keluaran sebagaimana percobaan sebelumnya. Data dari PORTC akan disimpan di r18 dan dikeluarkan ke PORTD.

1. Tambahkan beberapa instruksi pada percobaan 3.4.1 menjadi sebagai berikut.ldi r16,0b00001100 ;set output to pin 2 and 3ldi r17,0b00000100 ;set '0' to pin 2 and '1' to pin 3out ddrc,r16out portc,r17nop ;no-operationin r18,pinc ;read port, save to r18 ldi r16,0b11111111 ;set output to PORTB

330 Ω

LED2

PC2

PC3

330 Ω

LED1

Vcc

ATMega8535

3

Page 21: Modul Praktikum Mikroprosesor

..........out ddrd,r16out portd,r18

2. Kompilasi program dan amati isi register PORTC.

3. Jalankan program langkah demi langkah.

4. Setelah menjalankan instruksi nop, isikan data ‘1’ ke PINC bitke-4, 5, 6, 7 dengan mengklik bit-bit tersebut sebagaimana percobaan 3.4.2.

5. Jalankan instruksi in r18,pinc. Isi register r18 mestinya sama dengan pada percobaan

3.4.2.

6. Jalankan program hingga baris terakhir dan catat isi register untuk PORTD.

7. Unduh program ke mikrokontroler.

8. Cek logika keluaran setiap pin di PORTD dengan menggunakan voltmeter (‘0’ jika tegangan pin = 0 V, dan ‘1’ untuk jika tegangan pin = 5 V). Catat data di PORTD sebagai data awal.

9. Beri masukan PORTC4 ~ PORTC7 dengan logika ‘1’ dan PORTC0 ~ PORTC1 dengan logika ‘0’ (hubungkan pin PORTC0 ~ PORTC1 ke Ground).

10. Catat data di PORTD saat ini sebagai data akhir.

11. Ubah-ubahlah data di PORTC4 ~ PORTC7 dan amati data di PORTD!

Pertanyaan:1. Apakah data di PORTD selalu sama dengan data di PORTC?

2. Gambarkan diagram alir (flowchart) program yang sedang dieksekusi mikrokontroler!

4

Page 22: Modul Praktikum Mikroprosesor

..........

3.5 Data Pengamatan

3.5.1 MENJADIKAN PIN SEBAGAI PORT KELUARAN

Instruksi

Isi register

DDRC

PORTC

PINC

ldi r16,0b00000011

ldi r17,0b00000001

out ddrc,r16

out portc,r17

nop

in r18,pinc

3.5.2 MENJADIKAN PIN SEBAGAI PORT MASUKAN

Isi r18 = ... .

3.5.3 MENJADIKAN PORT I/O SEBAGAI CURRENT SINK DAN CURRENT SOURCE

LED1 ............................(menyala/padam)

LED2 ............................(menyala/padam)

3.5.4 MEMBERI DATA KE PORT MASUKAN

Hasil Simulasi:

DDRD =

PIND =

PORTD =

Hasil di mikrokontroler:

Data awal PORTD =

Data akhir PORTD =

5

Page 23: Modul Praktikum Mikroprosesor

.......... Kelompok Praktikum:

1. ...................................... NIM .................

2. ...................................... NIM .................

3. ...................................... NIM .................

4. ...................................... NIM .................

Instruktur,

Tgl. ..........

...........................

6

Page 24: Modul Praktikum Mikroprosesor

..........

Bab 4. Menggunakan Pewaktu/PencacahMenggunakan Pewaktu/Pencacah

4.1 Tujuan Praktikum

Agar mahasiswa dapat menggunakan pewaktu/pencacah (timer/counter) sesuai dengan kebutuhan.

4.2 Alat dan Bahan

1. Satu set PC.

2. Perangkat lunak AVR Studio 4.

3. Satu set pengunduh K-125 dan sistem minimal ATMega8535.

4. Satu buah osiloskop.

4.3 Teori Singkat

Dapat dipastikan bahwa hampir semua mikroprosesor dan mikrokontroler mempunyai fasilitas pewaktu/pencacah (timer/counter). Mikrokontroler ATMega8535 mempunyai 3 buah pewaktu/pencacah, yaitu pewaktu/pencacah 0, 1, dan 2. Semua pewaktu/pencacah tersebut dapat difungsikan sebagai pewaktu (timer) atau pencacah (coounter).

Perangkat ini dapat difungsikan sebagai pewaktu atau pencacah. Sebagaimana gambar blok diagram di bawah, pemilihan fungsi perangkat ini ditentutan oleh Clock Select yang akan menentukan clkTn apakah berasal dari prescaler (clock CPU yang telah dilewatkan ke prescaler) atau berasal dari Tn (clock dari luar).

Blok diagram pewaktu secara umum

Setiap terjadi isyarat clkTn, maka sebuah nilai TCNTn secara otomatis akan bertambah satu digit (increment) atau pada beberapa pewaktu dapat berkurang satu digit (decrement). Pewaktu/pencacah 0 dan 2 merupakan pewaktu/pencacah 8 bit, sehingga

Ba

1

Page 25: Modul Praktikum Mikroprosesor

..........TCNT0 dan TCNT2 merupakan register 8 bit; sedangkan pewaktu/pencacah 1 merupakan pewaktu/pencacah 16 bit, sehingga TCNT1 merupakan register 16 bit yang terdiri dari dua register 8 bit TCNT1A dan TCNT1B.

Pada saat di TCNTn terjadi luapan (overflow) yaitu bernilai 0xFFh (pada saat menghitung naik) atau bernilai nol (pada saat menghitung turun), maka akan diberikan isyarat ke Control Logic. Perangkat ini akan memberikan aksi tertentu yang dapat ditentukan oleh register TCCRn, misalnya terjadi isyarat interupsi.

Aksi di Control Logic juga dapat dibangkitkan jika terjadi peristiwa lain. Pada saat nilai TCNTn bertambah atau berkurang, jika nilai TCNTn sama dengan nilai OCRn, maka Control Logic juga dapat terpicu untuk melakukan aksi tertentu, misalnya: terjadi interupsi, mengeset atau mereset OCn, dan mengeset atau mereset TCNTn.

Nilai OCRn dapat diubah-ubah. Dengan mengubah-ubah nilai register tersebut dapat dibentuk untai pembentuk gelombang (Waveform Generator).

Semua pewaktu dapat berjalan secara mandiri (independent). Secara umum, jalannya sebuah pewaktu tidak akan mempengaruhi jalannya pewaktu lain. Bahkan jalannya pewaktu tidak akan mempengaruhi jalannya program utama. Jalannya pewaktu/pencacah dan efeknya terhadap program utama dapat ditentukan dengan mengisi beberapa nilai pada register kontrol pewaktu/pencacah. Semua register kontrol pewaktu/pencacah merupakan register I/O, sehingga akses ke register-register tersebut menggunakan instruksi in dan out.

4.3.1 PEWAKTU/PENCACAH 0

Pewaktu 0 merupakan pewaktu 8 bit. Jika pewaktu ini diaktifkan, maka nilai sebuah register bernama TCNT0 akan naik satu digit setiap adanya clock pewaktu. Clock pewaktu dapat ditentukan sebelum pewaktu dijalankan. Register TCNT0 mempunyai nilai awal 0 dan isinya dapat dibaca atau ditulisi (read/write, R/W). Perhatikan gambar berikut.

Jalannya pewaktu/pencacah 0 dapat dikendalikan dengan mengeset nilai register TCCR0 (Timer/Counter Control Register 0) dan TIMSK (Timer/Counter Interrupt Mask). Deskripsi setiap bit pada register TCCR0 dapat dilihat pada gambar berikut.

Keterangan: Bit 7 – FOC0 : Force Output Compare Bit 6, 3 – WGM01:0 : Waveform Generation Mode Bit 5:4 – COM01:0 : Compare Match Output Mode Bit 2:0 – CS02:0 : Clock Select

Bit-bit CS0 dapat menentukan frekuensi clock pewaktu berdasar tabel berikut.

2

Page 26: Modul Praktikum Mikroprosesor

..........

Hasil pencacahan yang dilakukan oleh pewaktu 0 dapat dilihat pada register bit 1 dan bit 0 register TIFR (Timer/Counter Interrupt Flag). Lihat gambar berikut.

Keterangan: Bit 1 – OCF0: Output Compare Flag 0 Bit 0 – TOV0: Timer/Counter0 Overflow Flag

4.3.2 PEWAKTU 0 SEBAGAI PENUNDA DENGAN METODE LUAPAN (OVERFLOW)

Pewaktu sering difungsikan sebagai penunda eksekusi suatu baris program. Algoritma penundaan paling sederhana untuk keperluan ini sebagai berikut:

1. Set nilai awal pewaktu 0 (TCNT0) ke 00h.

2. Set nilai register kontrol pewaktu 0 (TCCR0) sebagai berikut:

a. Matikan bit FOC0.

b. Set bit WGM0 ke mode normal: 00.

c. Set COM0 ke operasi port normal: 00.

d. Isi bit-bit CS0, maka pewaktu akan aktif.

3. Tunggu hingga bit TOV0 pada TIFR diset. Pada saat TCNT0 berubah dari 0xFF ke 0x00, maka secara otomatis bit TOV0 akan diset.

Jika pewaktu ini akan digunakan kembali, matikan bit TOV0 dengan memberikan logika ‘1’.

4.3.3 PEWAKTU 0 SEBAGAI PENUNDA DENGAN METODE PEMBANDINGAN (MATCH COMPARE)

Pewaktu lebih sering difungsikan dengan mode match compare. Algoritma penundaan paling sederhana untuk keperluan ini sebagai berikut:

1. Set nilai awal pewaktu 0 (TCNT0) ke 00h.

2. Set nilai pembanding ke OCR0.

3. Set nilai register kontrol pewaktu 0 (TCCR0) sebagai berikut:

a. Matikan bit FOC0.

b. Set bit WGM0 ke mode CTC (Clear Timer on Compare Match): 10.

c. Set COM0 ke operasi port normal: 00.

d. Isi bit-bit CS0, maka pewaktu akan aktif.

4. Tunggu hingga bit OCF0 pada TIFR diset. Pada saat TCNT0 = OCR0, maka secara otomatis bit OCF0 akan diset. Jika pewaktu ini akan digunakan kembali, matikan bit OCF0 dengan memberikan logika ‘1’.

3

Page 27: Modul Praktikum Mikroprosesor

..........4.4 Langkah-langkah Percobaan

4.4.1 PEWAKTU 0 SEBAGAI PENUNDA DENGAN METODE LUAPAN (OVERFLOW)

Pada percobaan ini, pewaktu 0 akan difungsikan sebagai penunda berubahnya logika keluaran di port C pin 2 dan 3.

1. Tulislah potongan listing berikut..include "m8535def.inc".def tmp=r16.org 0x0000

rjmp mainTimer:

ldi tmp,0b00000000out tcnt0,tmpldi tmp,0b00000000out timsk,tmpldi tmp,0b00000001out tccr0,tmpret

Main:ldi tmp,low(ramend)out SPL,tmpldi tmp,high(ramend)out SPH,tmpldi r16,0b00001100 ;set output to pin 2 and 3ldi r17,0b00000100 ;set '0' to pin 2, '1'to pin 3out ddrc,r16out portc,r17rcall Timer

Loop:in tmp,tifrsbrs tmp,0rjmp loopori tmp,0b00000001out tifr,tmpin tmp,PORTCldi r17,0b00001100eor tmp,r17out portc,tmprjmp loop

2. Kompilasi program.

3. Jalankan program langkah demi langkah.

4. Pada saat akan menjalankan instruksi rcall Timer, masuklah ke rutin Timer

mengggunakan menu Debug – Step Into atau F11.

5. Pada saat akan menjalankan ret, lihatlah isi seting pada TIMER_COUNTER_0 di jendela I/O View. Pastikan pewaktu dijalankan dengan clock pewaktu = clock CPU (No Prescalling).

6. Pastikan juga isi register OCR0, TCCR0, TCNT0 dan TIFR seperti yang tertampil di gambar tersebut.

7. Buka jendela port PORTC dan catat data di PORTC sebagai data awal PORTC.

8. Catat nilai register TCNT0, siklus prosesor (Cycle Counter), dan waktu yang telah digunakan prosesor (Stop Watch).

9. Jalankan program dengan Step Over (F10) hingga nilai TCNT0 naik satu.

4

Page 28: Modul Praktikum Mikroprosesor

..........10. Ulangi langkah 7 dan 8 hingga semua baris pada tabel di Data pengamatan terisi

semua.

11. Jalankan program hingga instruksi out portc,tmp dengan mengeklik baris sesudah

instruksi tersebut dan perintah Debug – Run to Cursor (Ctrl-F10).

12. Perhatikan isi PORTC! Catat nilai siklus dan waktu terjadinya perubahan pada PORTC (lihat Cycle Counter dan Stop Watch).

13. Ulangi langkah 11 dan 12 hingga baris di data tabel kebenaran terisi semua.

14. Unduhlah program tersebut ke mikrokontroler!

15. Gambarkan grafik gelombang keluaran di port C pin 2 dan 3 dengan osiloskop.

Pertanyaan:1. Hitunglah selang waktu berubahnya logika port C pin 2 dan 3 pada simulasi

menggunakan AVR Studio dan kenyataan setelah program diunduh ke mikrokontroler!2. Berapa periode gelombang kotak yang terjadi?3. Gambarkan diagram alir (flowchart) program yang sedang dieksekusi mikrokontroler!

4.4.2 PEWAKTU 0 SEBAGAI PENUNDA DENGAN METODE PEMBANDINGAN (MATCH COMPARE)

Pada percobaan ini, pewaktu 0 akan difungsikan sebagai penunda berubahnya logika keluaran di port C pin 2 dan 3.

1. Gantilah subrutin Timer pada percobaan 4.4.1 dengan berikut.Timer:

ldi tmp,0b00000000out tcnt0,tmpldi tmp,0b00000000out timsk,tmpldi tmp,0b00100000out ocr0,tmp ;count 216 cyclesldi tmp,0b00001001out tccr0,tmpret

2. Kompilasi program.

3. Jalankan program langkah demi langkah.

4. Setelah menjalankan rcall Timer (kursor di baris berikutnya), catat isi register OCR0.

5. Buka jendela port PORTC dan catat data di PORTC sebagai data awal PORTC.

6. Jalankan program dengan Step Over (F10) hingga nilai TCNT0 mendekati OCR0.

7. Pada saat nilai TCNT0 = OCR0, perhatikan isi register TIFR.

8. Tekan F10 dan catat isi register TIFR dan TCNT0.

9. Jalankan program hingga instruksi out portc,tmp dengan mengeklik baris sesudah

instruksi tersebut dan memberikan perintah Debug – Run to Cursor (Ctrl-F10).

10. Perhatikan isi PORTC! Catat nilai siklus dan waktu terjadi perubahan pada PORTC (lihat Cycle Counter dan Stop Watch).

11. Ulangi langkah 10 dan 11 hingga baris di data tabel kebenaran terisi semua.

12. Unduhlah program tersebut ke mikrokontroler!

13. Gambarkan grafik gelombang keluaran di port C pin 2 dan 3 dengan osiloskop.

Pertanyaan & Tugas:1. Hitunglah selang waktu berubahnya logika port C pin 2 dan 3 pada simulasi

menggunakan AVR Studio dan kenyataan setelah program diunduh ke mikrokontroler!!

2. Berapa periode gelombang kotak yang terjadi?

3. Gambarkan diagram alir (flowchart) program yang sedang dieksekusi mikrokontroler!

4. Buatlah periode gelombang kotak yang terjadi menjadi 2 kalinya!

5

Page 29: Modul Praktikum Mikroprosesor

..........

4.5 Data Pengamatan

4.5.1 PEWAKTU 0 SEBAGAI PENUNDA DENGAN METODE LUAPAN (OVERFLOW)

Data awal di PORTC =

Nilai TCNT

0

Siklus

Prosesor

Waktu yang telah

digunakan (µs)

0x00

0x…

0x…

0x…

0x…

Waktu pada saat berubahnya isi PORTC:

Nilai Siklu

s

Waktu

(µs)

Gambar di osiloskop:

4.5.2 PEWAKTU 0 SEBAGAI PENUNDA DENGAN METODE PEMBANDINGAN (MATCH COMPARE)

Data OCR0 =

Data awal di PORTC =

Waktu pada saat berubahnya isi PORTC:

Isi PORT

C

Nilai Siklus

Waktu

(µs)

Gambar di osiloskop:

6

Page 30: Modul Praktikum Mikroprosesor

.......... Kelompok Praktikum:

1. ...................................... NIM .................

2. ...................................... NIM .................

3. ...................................... NIM .................

4. ...................................... NIM .................

Instruktur,

Tgl. ..........

...........................

7

Page 31: Modul Praktikum Mikroprosesor

..........

Bab 5. Menggunakan InterupsiMenggunakan Interupsi

5.1 Tujuan Praktikum

Agar mahasiswa dapat menggunakan fasilitas interupsi dengan benar.

5.2 Alat dan Bahan

1. Satu set PC.

2. Perangkat lunak AVR Studio 4.

3. Satu set pengunduh K-125 dan sistem minimal ATMega8535.

4. Satu buah osiloskop.

5.3 Teori Singkat

Interupsi merupakan suatu fasilitas yang dapat memaksa prosesor untuk mengerjakan suatu rutin. Terdapat beberapa kejadian yang menyebabkan prosesor mandapat isyarat interupsi. Misalnya penekanan tombol reset. Penekanan tombol ini akan menyebabkan prosesor terkena interupsi yang bersumber dari RESET. Sebagaimana terlihat pada tabel di bawah, interupsi RESET mempunyai alamat program (program address) 0x000, sehingga pada saat prosesor terkena interupsi ini, maka akan langsung mengeksekusi instruksi di memori program beralamat 0x000. Seluruh interupsi yang ada diberi identitas dengan nomor vektor sesuai tabel berikut ini.

Ba

1

Page 32: Modul Praktikum Mikroprosesor

..........5.3.1 INTERUPSI DARI PEWAKTU 0

Pewaktu 0 dapat memberikan isyarat interupsi. Sesuai dengan tabel di atas, pewaktu 0 dapat memberikan interupsi TIMER0 OVF dan TIMER0 COMP. Interupsi pertama akan terpicu jika terjadi luapan (overflow); sedang interupsi kedua akan terpicu jika terjadi match compare pada pewaktu 0. Rutin layanan interupsi (Interrupt Service Routine, ISR) TIMER0 OVR diletakkan di lokasi memori program 0x009; sedangkan ISR TIMER COMP di lokasi memori program 0x013.

Pengaktifan interupsi dari pewaktu/pencacah 0 menggunakan seting bit 1 dan bit 0 pada register TIMSK sebagaimana gambar berikut.

Keterangan: Bit 1 – OCIE0: Timer/Counter0 Output Compare Match Interrupt Enable Bit 0 – TOIE0: Timer/Counter0 Overflow Interrupt Enable

5.4 Langkah-langkah Percobaan

5.4.1 INTERUPSI TERPICU MATCH COMPARE DI PEWAKTU 0

Pada percobaan ini, terjadinya match compare di pewaktu 0 akan memicu terjadinya interupsi TIMER0 COMP. ISR TIMER0 COMP berfungsi sebagai pengubah logika keluaran di port C pin 2 dan 3. Waktu tunda berubahnya kedua pin tersebut mestinya sama dengan waktu tunda pada percobaan 4.4.2.

1. Tulislah potongan listing berikut..include "m8535def.inc".def tmp=r16

.org 0x000rjmp main

.org 0x013rjmp ISR

Timer:ldi tmp,0b00000000out tcnt0,tmpldi tmp,0b00000010out timsk,tmpldi tmp,0b00100000out ocr0,tmp ;count 216 cyclesldi tmp,0b00001001out tccr0,tmpseiret

Main:ldi tmp,low(ramend)out SPL,r16ldi tmp,high(ramend)out SPH,r16

ldi tmp,0b00001100 ;set output to pin 2 and 3out ddrc,tmpldi tmp,0b00000100 ;set '0' to pin 2, '1'to pin 3out portc,tmprcall Timer

Loop:rjmp Loop

2

Page 33: Modul Praktikum Mikroprosesor

..........ISR:

in tmp,portcldi r17,0b00001100eor tmp,r17out portc,tmpreti

2. Kompilasi program.

3. Jalankan program langkah demi langkah.

4. Setelah menjalankan rcall Timer (kursor di baris berikutnya), catat isi register OCR0.

5. Buka jendela port PORTC dan catat data di PORTC sebagai data awal PORTC.

6. Jalankan program dengan Step Over (F10) hingga nilai TCNT0 mendekati OCR0.

7. Pada saat nilai TCNT0 = OCR0, perhatikan isi register TIFR.

8. Tekan F10 dan catat isi register TIFR dan TCNT0.

9. Jalankan program hingga instruksi out portc,tmp dengan mengeklik baris sesudah

instruksi tersebut dan memberikan perintah Debug – Run to Cursor (Ctrl-F10).

10. Perhatikan isi PORTC! Catat nilai siklus dan waktu terjadi perubahan pada PORTC (lihat Cycle Counter dan Stop Watch).

11. Ulangi langkah 10 dan 11 hingga baris di data tabel kebenaran terisi semua.

12. Unduhlah program tersebut ke mikrokontroler!

13. Gambarkan grafik gelombang keluaran di port C pin 2 dan 3 dengan osiloskop.

Pertanyaan:1. Hitunglah selang waktu berubahnya logika port C pin 2 dan 3!

2. Berapa periode gelombang kotak yang terjadi?3. Gambarkan diagram alir (flowchart) program yang sedang dieksekusi mikrokontroler!

3

Page 34: Modul Praktikum Mikroprosesor

..........

5.5 Data Pengamatan

Data OCR0 =

Data awal di PORTC =

Pada saat nilai TCNT0 = OCR0, isi register TIFR =

Waktu pada saat berubahnya isi PORTC:

Isi PORT

C

Nilai Siklus

Waktu

(µs)

Gambar di osiloskop:

Kelompok Praktikum:

1. ...................................... NIM .................

2. ...................................... NIM .................

3. ...................................... NIM .................

4. ...................................... NIM .................

Instruktur,

Tgl. ..........

...........................

4

Page 35: Modul Praktikum Mikroprosesor

..........

Bab 6. Pengantar Pemrograman Pengantar Pemrograman Menggunakan CodeVisionAVRMenggunakan CodeVisionAVR

6.1 Tujuan Praktikum

Memahami cara mengakses register.

6.2 Alat dan Bahan

1. Satu set PC

2. Perangkat lunak CodeVisionAVR

6.3 Teori Singkat

Untuk membentuk aplikasi yang lebih kompleks, bahasa pemrograman tingkat rendah kadang sudah tidak memadai. Maka dapat digunakan bahasa tingkat menengah. Salah satu bahasa tingkat menengah yang sering digunakan adalah bahasa C. Dan salah satu kompilernya adalah CodeVisionAVR. Perangkat lunak ini dapat digunakan untuk menulis dan mengedit listing program. Namun program ini tidak dapat mensimulasikan jalannya program.

Gambar 6.1 Tampilan awal CodeVision 2.05.0

Sebagaimana bahasa pemrograman C, pada sebuah program kita dapat menggunakan beberapa variabel yang kita definisikan sendiri dengan ukuran bit yang sesuai. Namun dalam praktek direkomendasikan untuk menggunakan ukuran sekecil mungkin agar lisgting program dapat dieksekusi lebih cepat.

Ba

1

Page 36: Modul Praktikum Mikroprosesor

..........

Tipe Ukuran (Bit)

Kisaran

bit 1 0 , 1bool,

_Bool8 0 , 1

char 8 -128 ~ 127unsigne

d char8 0 ~ 255

signed char

8 -128 ~ 127

int 16 -32768 ~ 32767short int 16 -32768 ~ 32767unsigne

d int16 0 ~ 65535

signed int

16 -32768 ~ 32767

long int 32 -2147483648 ~2147483647

unsigned long int

32 0 ~ 4294967295

signed long int

32 -2147483648 ~2147483647

float 32 ±1.175e-38 ~ ±3.402e38double 32 ±1.175e-38 ~ ±3.402e38

6.4 Langkah-langkah Percobaan

6.4.1 MEMBUAT PROJECT BARU DI CODEVISIONAVR

Untuk membuat sebuah aplikasi baru secara mudah, kita dapat menggunakan Wizard dengan langkah-langkah sebagai berikut.

1. Dari tampilan utama jendela CodeVision pilih menu Tools – CodeWizardAVR dan pilih chip mikrokontroler yang akan digunakan yaitu Atmega dan tekan OK. Dalam praktek kita gunakan mikrokontroler ATmega8535 menggunakan clock 7,372800 MHz sehingga pada pilihan Chip pilihlah ATmega8535 dan Clock 7,372800 MHz.

2. Untuk melihat listing yang akan dihasilkan wizard, pilih menu Program – Preview.

3. Klik Program – Generate, Save, and Exit.

4. Pada jendela editor akan muncul listing awal yang diberikan CodeVision.

5. Secara default, program sudah berisi inisiasi seluruh port, pewaktu, interupsi dan beberapa perangkat pendukung lain.

6.4.2 MENULIS PROGRAM MENGGUNAKAN PEWAKTU NOL

Pada percobaan ini, pewaktu 0 akan difungsikan sebagai penunda berubahnya logika keluaran di port C.

1. Buka kembali menu Tools – CodewWizardAVR, pilih chip ATmega8535 dan clock 7,372800 MHz.

2. Pilih Timers – Timer0.

2

Page 37: Modul Praktikum Mikroprosesor

..........3. Pilih Clock Sources: System Clock, Clock Value: 7200 kHz, Mode: CTC top=OCR0,

Output: Disconnected.

4. Isikan nilai Compare 47 (berarti 47heks)

5. Aktifkan Compare Match Interrupt dengan memberi tanda √ pada ceck box di depannya.

6. Klik Program – Generate, Save, and Exit.

7. Jadikan PORTC sebagai port keluaran dengan mengganti isi DDRC menjadi 0xff sebagaimana listing di halaman berikutnya.

8. Tuliskan PORTC=~PINC; pada fungsi interrupt [TIM0_COMP] void timer0_comp_isr(void)

seperti listing di bawah.

9. Kompilasi program menggunakan menu Project – Build All. Unduh file hex ke mikrokontroler.

10. Lihat grafik gelombang yang terjadi di PORTC menggunakan osiloskop.

Pertanyaan:1. Hitunglah selang waktu berubahnya logika port C!

2. Berapa periode gelombang kotak yang terjadi?

3. Buatlah diagram alir program!

/*****************************************************This program was produced by theCodeWizardAVR V2.05.0 ProfessionalAutomatic Program Generator© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.com

Project : Version : Date : 05/04/2012Author : Company : Comments:

Chip type : ATmega8535LProgram type : ApplicationAVR Core Clock frequency: 7,372800 MHzMemory model : SmallExternal RAM size : 0Data Stack size : 128*****************************************************/

#include <mega8535.h>

// Timer 0 output compare interrupt service routineinterrupt [TIM0_COMP] void timer0_comp_isr(void)// Place your code here

PORTC=~PINC;

// Declare your global variables here

void main(void)// Declare your local variables here

// Input/Output Ports initialization// Port A initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

3

Page 38: Modul Praktikum Mikroprosesor

..........PORTA=0x00;DDRA=0x00;

// Port B initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00;DDRB=0x00;

// Port C initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;DDRC=0xff;

// Port D initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00;DDRD=0x00;

// Timer/Counter 0 initialization// Clock source: System Clock// Clock value: 7,200 kHz// Mode: CTC top=OCR0// OC0 output: DisconnectedTCCR0=0x0D;TCNT0=0x00;OCR0=0x47;

// Timer/Counter 1 initialization// Clock source: System Clock// Clock value: Timer1 Stopped// Mode: Normal top=0xFFFF// OC1A output: Discon.// OC1B output: Discon.// Noise Canceler: Off// Input Capture on Falling Edge// Timer1 Overflow Interrupt: Off// Input Capture Interrupt: Off// Compare A Match Interrupt: Off// Compare B Match Interrupt: OffTCCR1A=0x00;TCCR1B=0x00;TCNT1H=0x00;TCNT1L=0x00;ICR1H=0x00;ICR1L=0x00;OCR1AH=0x00;OCR1AL=0x00;OCR1BH=0x00;OCR1BL=0x00;

// Timer/Counter 2 initialization// Clock source: System Clock// Clock value: Timer2 Stopped// Mode: Normal top=0xFF// OC2 output: DisconnectedASSR=0x00;TCCR2=0x00;TCNT2=0x00;OCR2=0x00;

// External Interrupt(s) initialization// INT0: Off

4

Page 39: Modul Praktikum Mikroprosesor

..........// INT1: Off// INT2: OffMCUCR=0x00;MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initializationTIMSK=0x02;

// USART initialization// USART disabledUCSRB=0x00;

// Analog Comparator initialization// Analog Comparator: Off// Analog Comparator Input Capture by Timer/Counter 1: OffACSR=0x80;SFIOR=0x00;

// ADC initialization// ADC disabledADCSRA=0x00;

// SPI initialization// SPI disabledSPCR=0x00;

// TWI initialization// TWI disabledTWCR=0x00;

// Global enable interrupts#asm("sei")

while (1) // Place your code here

5

Page 40: Modul Praktikum Mikroprosesor

..........

Bab 7. Komunikasi Serial USARTKomunikasi Serial USART

7.1 Tujuan Praktikum

Agar mahasiswa dapat menggunakan fasilitas komunikasi serial USART.

7.2 Alat dan Bahan

1. Satu set PC.

2. Perangkat lunak CodeVisionAVR.

3. Satu set pengunduh K-125 dan sistem minimal ATMega8535.

7.3 Teori Singkat

UART (Universal Asyncrhronous Receiver/Transmitter) merupakan salah satu metode untuk komunikasi serial pada sebuah komputer. Komunikasi biasanya terselenggara menggunakan port serial. Port ini dapat dihubungkan ke port USB melalui sebuah konverter. Salah satu perangkat lunak bawaan Windows yang dapat menyelenggarakan komunikasi serial dengan port USB adalah Hyperterminal.

Saat ini banyak mikrokontroler yang menambahkan fasilitas ini untuk melakukan komunikasi serial ke komputer. Mikrokontroler ATmega8535 selain dapat melakukan komunikasi tak-sinkron, dapat pula melakukan komunikasi sinkron. Mikrokontroler ini dapat melakukan komunikasi dengan metode USART (Universal Synchronous/Asyncrhronous Receiver/Transmitter). Format data yang digunakan seperti gambar di bawah ini.

Dalam kondisi tidak ada transmisi data (idle), logika di jalur transmisi dapat ‘0’ atau ‘1’. Pengiriman data didahului oleh Start-bit, baru kemudian data dikirim. Data dapat menggunakan format 5 hingga 9 bit. Pengiriman data diakhiri dengan Stop-bit yang dapat mempunyai panjang 1 hingga 2 bit.

Data dari mikrokontroler dapat dikirim ke komputer menggunakan port serial. Salah satu perangkat lunak di komputer yang dapat digunakan untuk berkomunikasi dengan metode USART adalah hyperterminal. Perangkat lunak ini ada di sistem operasi Windows XP dan generasi sebelumnya. Bagi pengguna Windows Vista dan 7 dapat mengunduh di internet.

Pengiriman dan penerimaan data melalui port serial dapat dilakukan dengan mengisi dan mengambil data di register UDR.

UDR=data; //mengirim ‘data’ ke port serialdata=UDR; //data yang diterima dimasukkan ke variabel ‘data’

7.4 Langkah-langkah Percobaan

7.4.1 INISIASI PORT SERIAL

Pada percobaan ini akan diinisiasi port serial yang digunakan untuk berkomunikasi antara komputer dengan mikrokontroler. Sebelumnya, installah driver untuk kit K-125 dengan sebagai berikut.

Ba

1

Page 41: Modul Praktikum Mikroprosesor

..........1. Tancapkan koneksi kabel USB kit K-125 ke port USB.

2. Ubah saklar pada K-125 ke Komunikasi Serial.Komunikasi Serial Unduh Program

3. Ikuti petunjuk di Windows dan arahkan untuk menginstal driver K-125 (untuk pengguna

Windows 7, pakailah driver untuk Windows 7.

4. Lihatlah di Device Manager nomor Port COM yang digunakan. Catat nomor Port COM yang digunakan.

7.4.2 PENGIRIMAN DATA KE KOMPUTER

Percobaan ini akan menjadikan mikrokontroler mengirim data berupa karakter ASCII ‘A’. Ikuti langkah-langkah pembuatan program menggunakan CodeVisionAVR berikut.

1. Buka Tools – CodeWizardAVR, pilih chip ATmega8535 dan clock 7,372800 MHz

2. Pilih USART, enable-kan Transmitter, baud rate = 9600 dengan parameter komunikasi 8 data 1 stop no parity, mode asynchronous.

3. Pilih: Program – Generate, Save, and Exit.

4. Ketikan listing berikut di bawah komentar // Place your code here sebagaimana listing

di halaman berikutnya. delay_ms(100); UDR='A';

5. Tambahkan pengarah prosesor #include <delay.h> di bawah pengarah #include <stdio.h> seperti pada contoh listing.

6. Unduh program (jangan lupa ubah saklar di K-125 ke Unduh Program).

7. Ubah saklar di K-125 ke Komunikasi Serial.

8. Jalankan perangkat lunak Hyperterminal.

9. Beri nama koneksi pada form Connections Description (nama bebas).

10. Pilih port koneksi yang akan digunakan pada form Connect to.

11. Tentukan properti koneksi dengan mengeset pesat data = 9600 bps, format data = 8 bit, bit paritas = tidak ada (none), bit stop = 1, dan flow control = none.

2

Page 42: Modul Praktikum Mikroprosesor

..........

12. Pilih menu Call dan lihat tampilan layar Hyperterminal.

Pertanyaan/Tugas1. Apa yang terjadi jika setting pesat data di Hyperterminal diubah menjadi 19200 bps

atau yang lain? Mengapa demikian?2. Jelaskan maksud dua baris yang diketik dalam langkah nomor 4 tadi!3. Buatlah diagram alir program yang telah dibuat!4. Bukalah file text delay.h! Apa fungsi pemanggilan file tersebut melalui perintah

#include <delay.h>?

3

Page 43: Modul Praktikum Mikroprosesor

..........Listing progam untuk pengiriman data ke port serial melalui kabel USB.

/*****************************************************This program was produced by theCodeWizardAVR V2.05.0 EvaluationAutomatic Program Generator© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.com

Project : Version : Date : 07/04/2012Author : Freeware, for evaluation and non-commercial use onlyCompany : Comments:

Chip type : ATmega8535Program type : ApplicationAVR Core Clock frequency: 7,372800 MHzMemory model : SmallExternal RAM size : 0Data Stack size : 128*****************************************************/

#include <mega8535.h>

// Standard Input/Output functions#include <stdio.h>#include <delay.h>

// Declare your global variables here

void main(void)// Declare your local variables here

// Input/Output Ports initialization// Port A initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00;DDRA=0x00;

// Port B initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00;DDRB=0x00;

// Port C initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;DDRC=0x00;

// Port D initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00;DDRD=0x00;

// Timer/Counter 0 initialization// Clock source: System Clock// Clock value: Timer 0 Stopped

4

Page 44: Modul Praktikum Mikroprosesor

..........// Mode: Normal top=0xFF// OC0 output: DisconnectedTCCR0=0x00;TCNT0=0x00;OCR0=0x00;

// Timer/Counter 1 initialization// Clock source: System Clock// Clock value: Timer1 Stopped// Mode: Normal top=0xFFFF// OC1A output: Discon.// OC1B output: Discon.// Noise Canceler: Off// Input Capture on Falling Edge// Timer1 Overflow Interrupt: Off// Input Capture Interrupt: Off// Compare A Match Interrupt: Off// Compare B Match Interrupt: OffTCCR1A=0x00;TCCR1B=0x00;TCNT1H=0x00;TCNT1L=0x00;ICR1H=0x00;ICR1L=0x00;OCR1AH=0x00;OCR1AL=0x00;OCR1BH=0x00;OCR1BL=0x00;

// Timer/Counter 2 initialization// Clock source: System Clock// Clock value: Timer2 Stopped// Mode: Normal top=0xFF// OC2 output: DisconnectedASSR=0x00;TCCR2=0x00;TCNT2=0x00;OCR2=0x00;

// External Interrupt(s) initialization// INT0: Off// INT1: Off// INT2: OffMCUCR=0x00;MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initializationTIMSK=0x00;

// USART initialization// Communication Parameters: 8 Data, 1 Stop, No Parity// USART Receiver: Off// USART Transmitter: On// USART Mode: Asynchronous// USART Baud Rate: 9600UCSRA=0x00;UCSRB=0x08;UCSRC=0x86;UBRRH=0x00;UBRRL=0x2F;

// Analog Comparator initialization// Analog Comparator: Off// Analog Comparator Input Capture by Timer/Counter 1: OffACSR=0x80;

5

Page 45: Modul Praktikum Mikroprosesor

..........SFIOR=0x00;

// ADC initialization// ADC disabledADCSRA=0x00;

// SPI initialization// SPI disabledSPCR=0x00;

// TWI initialization// TWI disabledTWCR=0x00;

while (1) // Place your code here UDR='A'; delay_ms(100);

6

Page 46: Modul Praktikum Mikroprosesor

..........

Bab 8. Pengukuran Tegangan DC dengan Pengukuran Tegangan DC dengan ADC MikrokontrolerADC Mikrokontroler

8.1 Tujuan Praktikum

Agar mahasiswa dapat menggunakan ADC mikrokontroler untuk pengukuran tegangan DC.

8.2 Alat dan Bahan

1. Satu set power supply dengan tegangan keluaran variasi.

2. Satu set PC.

3. Perangkat lunak CodeVisionAVR.

4. Satu set pengunduh K-125 dan sistem minimal ATMega8535.

8.3 Teori Singkat

ADC mikrokontroler ATmega8535 mempunyai resolusi 10 bit dengan 8 saluran masukan mandiri atau 7 saluran diferensial. Pemilihan saluran dan mode yang digunakan menggunakan program. ADC yang menggunakan metode successive aproximation ini mempunyai tegangan catu daya yang dimasukkan ke pin AVCC. Tegangan di pin ini tidak boleh berbeda lebih dari ±0,3 V dari tegangan Vcc. Biasanya tegangan dari Vcc dilewatkan sebuah tapis lulus rendah sebelum dimasukkan ke AVCC.

Ba

1

Page 47: Modul Praktikum Mikroprosesor

..........Terdapat tiga pilihan tegangan referensi ADC (VREF): AVCC, referensi internal 2,56

V atau pin ekternal AREF. Pemilihan saluran masukan dan tegangan referensi ini dapat dilakukan dengan mengubah isi register ADMUX.

ADC pada mikrokontroler ini menggunakan clock dari clock CPU. Frekuensi clock CPU dapat diturunkan melalui sebuah prescaler. Waktu konversi ADC dapat bervariasi dari 65 hingga 260 mikrodetik, tergantung clock yang diberikan. Satu kali konversi normal, ADC ini membutuhkan waktu sekitar 14 periode clock. Jika dikehendaki hasil pengonversian berupa data 10 bit, maka clock ADC tidak boleh melebihi 200 kHz. Sehingga ADC ini mampu mengonversi hingga 15 ribu kali per detik (15 kSPS) pada resolusi penuh.

Dengan delapan saluran masukan, ADC ini mempunyai fasilitas untuk mengonversi isyarat secara diferensial. Dan jika isyarat masukan terlalu kecil, telah disediakan op-amp dengan nilai penguatan 10 kali dan 200 kali.

8.4 Langkah-langkah Percobaan

Pada percobaan ini akan diukur tegangan di saluran 0 menggunakan ADC mikrokontroler. Data keluaran ADC yang berupa bilangan biner tak bertanda menggunakan panjang 8 bit, dikonversi ke format desimal dan dijadikan karakter ASCII. Data selanjutnya dikirim ke komputer melalui USB untuk ditampilkan oleh hyperterminal.

1. Buka Tools – CodeWizardAVR, pilih chip ATmega8535 dan clock 7,372800 MHz

2. Pilih ADC dan enable-kan ADC

3. Gunakan format 8 bit dengan meng-enable pilihan Use 8 bit

4. Pilih tegangan referensi AVCC

5. Pilih clock 921,600 kHz

6. Pilih USART, enable-kan Transmitter, baud rate = 9600 dengan parameter komunikasi 8 data 1 stop no parity, mode asynchronous.

7. Pilih: Program – Generate, Save, and Exit.

8. Buat deklarasi untuk tipe variabel berikut di bawah komentar // Declare your global variables here sesuai listing program pada halaman berikutnya.

unsigned char adc0,digit,tmp;

9. Ketikan listing berikut untuk mengonversi data heksadesimal dari ADC ke BCD, mengubahnya menjadi ASCII, dan mengirim ke port serial di bawah komentar // Place your code here.

adc0=read_adc(0); tmp=adc0/5; digit=tmp/10; digit=digit+'0'; delay_ms(50); UDR=digit; delay_ms(50); UDR='.'; digit=tmp%10; digit=digit+'0'; delay_ms(50); UDR=digit; delay_ms(500); UDR=13;

10. Tambahkan pengarah prosesor untuk header berikut di bawah pengarah #include <mega8535.h> seperti pada contoh listing.

2

Page 48: Modul Praktikum Mikroprosesor

..........#include <delay.h>#include <stdio.h>#include <math.h>

11. Unduh program (jangan lupa ubah saklar di K-125 ke Unduh Program).

12. Ubah saklar di K-125 ke Komunikasi Serial.

13. Jalankan perangkat lunak Hyperterminal.

14. Berikan tegangan variasi 0 ~ 5 V di pin ADC0 dan amati tampilan di jendela Hyperterminal.

Pertanyaan/Tugas1. Jelaskan proses konversi dari masukan analog ke data digital hingga tampil ke layar

Hyperterminal.

2. Jelaskan dengan singkat proses pengubahan data heksadesimal dari ADC ke BCD, dan mengubahnya menjadi format ASCII!

3. Buatlah diagram alir program yang telah dibuat!

4. Apa fungsi header delay.h, stdio.h, dan math.h?

3

Page 49: Modul Praktikum Mikroprosesor

........../*****************************************************This program was produced by theCodeWizardAVR V2.05.0 EvaluationAutomatic Program Generator© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.com

Project : Version : Date : 07/04/2012Author : Freeware, for evaluation and non-commercial use onlyCompany : Comments:

Chip type : ATmega8535Program type : ApplicationAVR Core Clock frequency: 7,372800 MHzMemory model : SmallExternal RAM size : 0Data Stack size : 128*****************************************************/

#include <mega8535.h>

// Standard Input/Output functions#include <delay.h>#include <stdio.h>#include <math.h>

#define ADC_VREF_TYPE 0x60

// Read the 8 most significant bits// of the AD conversion resultunsigned char read_adc(unsigned char adc_input)ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);// Delay needed for the stabilization of the ADC input voltagedelay_us(10);// Start the AD conversionADCSRA|=0x40;// Wait for the AD conversion to completewhile ((ADCSRA & 0x10)==0);ADCSRA|=0x10;return ADCH;

// Declare your global variables hereunsigned char adc0,digit,tmp;

void main(void)// Declare your local variables here

// Input/Output Ports initialization// Port A initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00;DDRA=0x00;

// Port B initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00;DDRB=0x00;

4

Page 50: Modul Praktikum Mikroprosesor

..........// Port C initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;DDRC=0x00;

// Port D initialization// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00;DDRD=0x00;

// Timer/Counter 0 initialization// Clock source: System Clock// Clock value: Timer 0 Stopped// Mode: Normal top=0xFF// OC0 output: DisconnectedTCCR0=0x00;TCNT0=0x00;OCR0=0x00;

// Timer/Counter 1 initialization// Clock source: System Clock// Clock value: Timer1 Stopped// Mode: Normal top=0xFFFF// OC1A output: Discon.// OC1B output: Discon.// Noise Canceler: Off// Input Capture on Falling Edge// Timer1 Overflow Interrupt: Off// Input Capture Interrupt: Off// Compare A Match Interrupt: Off// Compare B Match Interrupt: OffTCCR1A=0x00;TCCR1B=0x00;TCNT1H=0x00;TCNT1L=0x00;ICR1H=0x00;ICR1L=0x00;OCR1AH=0x00;OCR1AL=0x00;OCR1BH=0x00;OCR1BL=0x00;

// Timer/Counter 2 initialization// Clock source: System Clock// Clock value: Timer2 Stopped// Mode: Normal top=0xFF// OC2 output: DisconnectedASSR=0x00;TCCR2=0x00;TCNT2=0x00;OCR2=0x00;

// External Interrupt(s) initialization// INT0: Off// INT1: Off// INT2: OffMCUCR=0x00;MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initializationTIMSK=0x00;

5

Page 51: Modul Praktikum Mikroprosesor

..........// USART initialization// Communication Parameters: 8 Data, 1 Stop, No Parity// USART Receiver: Off// USART Transmitter: On// USART Mode: Asynchronous// USART Baud Rate: 9600UCSRA=0x00;UCSRB=0x08;UCSRC=0x86;UBRRH=0x00;UBRRL=0x2F;

// Analog Comparator initialization// Analog Comparator: Off// Analog Comparator Input Capture by Timer/Counter 1: OffACSR=0x80;SFIOR=0x00;

// ADC initialization// ADC Clock frequency: 921,600 kHz// ADC Voltage Reference: AVCC pin// ADC High Speed Mode: Off// ADC Auto Trigger Source: ADC Stopped// Only the 8 most significant bits of// the AD conversion result are usedADMUX=ADC_VREF_TYPE & 0xff;ADCSRA=0x83;SFIOR&=0xEF;

// SPI initialization// SPI disabledSPCR=0x00;

// TWI initialization// TWI disabledTWCR=0x00;

while (1) // Place your code here adc0=read_adc(0); tmp=adc0/5; digit=tmp/10; digit=digit+'0'; delay_ms(50); UDR=digit; delay_ms(50); UDR='.'; digit=tmp%10; digit=digit+'0'; delay_ms(50); UDR=digit; delay_ms(500); UDR=13;

6

Page 52: Modul Praktikum Mikroprosesor

..........

Bab 9. Pengantar Sistem Berbasis Pengantar Sistem Berbasis MikroprosesorMikroprosesor

9.1 Tujuan Praktikum

Agar mahasiswa dapat merancang sistem berbasis mikroprosesor sederhana.

9.2 Alat dan Bahan

1. Satu set PC.

2. Perangkat lunak CodeVisionAVR.

3. Perangkat lunak Proteus.

9.3 Teori Singkat

Perkembangan teknologi elektro cenderung akan menggeser aplikasi berbasis perangkat keras ke aplikasi berbasis perangkat lunak. Aplikasi ini ditandai dengan adanya program yang akan mengendalikan seluruh kerja suatu sistem. Dengan penggantian beberapa fungsi suatu blok dengan suatu algoritma program, maka penggunaan perangkat keras akan semakin berkurang sehingga secara keseluruhan sistem akan dapat dibuat semakin kecil, ringkas dan semakin hemat sumber daya.

Mikrokontroler keluarga AVR merupakan salah satu jenis mikrokontroler yang banyak digunakan di Indonesia baik di kalangan pendidikan maupun untuk keperluan proyek komersial. Dukungan pemrograman dalam bahasa tingkat menengah dan simulasi elektronis telah menjadikan sistem berbasis mikrokontroler jenis keluaraga ini menjadi semakin banyak digunakan untuk berbagai keperluan.

CodeVisionAVR 2.05.0 Evaluation merupakan salah satu perangkat lunak yang dapat digunakan untuk pembuatan program. Sedangkan untuk simulasi dapat digunakan perangkat lunak Proteus 4.21. Kedua perangkat lunak tersebut bersifat bebas (freeware) dan dapat diunduhn secara gratis. Dengan kedua perangkat lunak tersebut, sudah dapat dibuat sistem berbasis mikroprosesor yang cukup kompleks.

9.4 Langkah-langkah Percobaan

Pada percobaan ini, akan dibuat simulasi sistem yang akan menampilkan karakter di layar LCD.

1. Dengan CodeVisionAVR, bukalah file project di C:\cvavreval\examples\LCDDEMO\LCDDEMO.PRJ

2. Ubahlah prosesor dan clock dengan cara membuka menu Project – Configure. Klik C Compiler, ubah Chip menjadi ATmega8535 dan Clock menjadi 7,372800 MHz dan tekan OK.

3. Kompilasi program dengan Build All.

4. Dengan Proteus buatlah untai berbasis mikroprosesor dengan sebuah LCD seperti gambar berikut.

Ba

1

Page 53: Modul Praktikum Mikroprosesor

..........

5. Atur agar mikrokontroler menggunakan file .hex hasil kompilasi tadi dengan cara meng-klik ganda gambar IC mikrokontroler. Pada jendela Edit Component, isilah Program File dengan C:\cvavreval\examples\LCDDEMO\exe\LCDDEMO.hex atau arahkan dengan tombol di sebelah kanannya. Pada bagian Advanced Properties, pilihlah agar Clock Frequency menjadi 7.372800MHz.

6. Jalankan program simulasi dan amati tampilan di layar LCD.

Pertanyaan/Tugas1. Buatlah program yang menampilkan namamu di baris pertama dan NIM di baris kedua

LCD!

2. Dengan memodifikasi program pada bab 8, rancang dan buatlah program pembangkit clock untuk frekukensi 1 kHz dan 100 kHz! Simulasikan dengan Proteus apakah program sudah berjalan dengan benar!

2

Page 54: Modul Praktikum Mikroprosesor

........../* LCD Demo CodeVisionAVR C Compiler (C) 2000-2010 HP InfoTech S.R.L. www.hpinfotech.ro Chip: ATmega8515 Memory Model: SMALL Data Stack Size: 128 bytes

Use an 2x16 alphanumeric LCD connected to the STK500 PORTC header as follows:

[LCD] [STK500 PORTC HEADER] 1 GND- 9 GND 2 +5V- 10 VCC 3 VLC- LCD contrast control voltage 0..1V 4 RS - 1 PC0 5 RD - 2 PC1 6 EN - 3 PC2 11 D4 - 5 PC4 12 D5 - 6 PC5 13 D6 - 7 PC6 14 D7 - 8 PC7*/

// Alphanumeric LCD Module functions// The LCD connections are specified in the// Project|Configure|C Compiler|Libraries|Alphanumeric menu#include <alcd.h>

void main(void)// initialize the LCD for// 2 lines & 16 columnslcd_init(16);

// go on the second LCD linelcd_gotoxy(0,1);

// display the messagelcd_putsf("Hello world");

// stop herewhile (1);

3