Anda di halaman 1dari 18

TUGAS MATA KULIAH

SISTEM MIKROPROSESSOR

Disusun Oleh : Fathul Ihsan Moshe Nugroho S.H. Jati Yunita DKP ( 30954 ) ( 31056 ) ( 31170 )

Jurusan Teknik Elektro Fakultas Teknik Universitas Gadjah Mada 2007


0
www.digizoneku.com

Permasalahan : Sistem Pengelolaan Area Parkir Mobil - Jumlah mobil max yang bisa diparkir 10 - Mobil masuk mendapat karcis yang dilengkapi dengan kode dan dicatat no.platnya - Jika keluar no.plat dan kode karcis harus cocok - Sistem bisa menunjukkan sisa tempat parkir dan jumlah total parkir mobil Penyelesaian : Sistem pengelolaan Area Parkir Mobil dengan menggunakan mikroprosessor yang akan kita buat memiliki kemiripan dengan Sistem parkir motor yang ada di Teknik Elektro UGM. Dalam sistem parkir motor di Teknik Elektro, petugas parkir mencatat nomor plat motor yang akan parkir pada kertas yang sudah ada nomor karcisnya. Kemudian pengendara motor diberi karcis dengan nomor karcis sama dengan yang ditulis di kertas. Lalu pengendara motor memarkirkan motornya di tempat parkir. Pada waktu motor akan keluar, pengendara motor mengembalikan karcisnya ke petugas. Kemudian petugas mencocokkan nomor karcis dengan nomor plat motor yang sebelumnya sudah dicatat. Jika nomor karcis dengan nomor plat cocok maka motor boleh keluar. Jika tidak cocok, maka motor akan ditahan terlebih dahulu sampai syarat-syarat yang mengijinkan motor boleh dibawa keluar dari tempat parkir terpenuhi. Analogi dengan hal di atas, dalam sistem pengelolaan area parkir mobil dengan menggunakan mikroprosessor, operator menyimpan nomor plat mobil dalam SRAM di alamat yang mempresentasikan nomor karcis yang akan diberikan dan counter akan berubah (counter sisa tempat parkir berkurang 1, counter jumlah total mobil parkir bertambah 1). Dalam hal ini, nomor karcis 1 mempresentasikan alamat SRAM 1, dst. Kemudian operator/petugas parkir memberi karcis tersebut ke sopir mobil. Lalu sopir mobil memarkirkan mobilnya di tempat parkir. Ketika mobil mau keluar, sopir akan memberikan karcisnya kepada petugas parkir/operator. Kemudian operator akan meload isi di alamat SRAM yang ditunjukkan oleh karcis yang berupa nomor plat mobil. Jika isi alamat SRAM dengan nomor plat sama, maka mobil boleh keluar, counter akan berubah (counter sisa tempat parkir bertambah 1, counter jumlah total mobil berkurang 1). Jika nomor karcis dan nomor plat tidak cocok, maka mobil akan ditahan terlebih dahulu sampai syarat-syarat yang mengijinkan mobil boleh keluar terpenuhi. Untuk lebih mudah dalam memahami sistem pengelolaan area parkir mobil dengan menggunakan mikroprosessor, kita telah membuat flowchartnya di bawah ini.

1
www.digizoneku.com

Keterangan : - Flowchart di samping merupakan Flowchart untuk sistem parkir mobil secara keseluruhan. - Dari Flowchart di samping, dapat kita ketahui bahwa sistem parkir mobil menangani 2 macam proses yaitu proses mobil masuk dan proses mobil keluar.

2
www.digizoneku.com

Script Program :
;* program ini untuk membuat sistem kontrol parkir yang sederhana ;* kapasitas max = 10 mobil ;* sistem dapat mencatat no plat mobil, dan memberikan kode parkir ;* sistem dapat menunjukkan jumlah mobil yang telah memasuki arena parkir dan sisa tempat parkir yang ada ;* sistem dapat menunjukkan kecocokkan antara no plat mobil dan kode parkir saat mobil keluar arena parkir ;********************************************************************************** *************************** .nolist .include"m8535def.inc" .org $0 .list ;******* global register lan memori .def mobil_in=r16 ; definisi r16 untuk switch mobil_in .def mobil_out=r17 ; definisi r17 untuk switch mobil_out .def p_jmlh=r18 ; definisi r18 untuk jumlah mobil yang telah parkir .def sisa_p=r19 ; definisi r19 untuk sisa tempat parkir yang masih ada .def karcis=r20 ; definisi r20 untuk kode karcis yg akan diberikan .def temp=r21 ; definisi r21 untuk memori sementara .equ park1=$60 .equ park2=$61 .equ park3=$62 .equ park4=$63 .equ park5=$64 .equ park6=$65 .equ park7=$66 .equ park8=$67 .equ park9=$68 .equ park10=$69 .equ park11=$6a .equ park12=$6b .equ park13=$6c .equ park14=$6d .equ park15=$6e .equ park16=$6f

; pemberian nama memori pada alamat sram yg ditunjuk___(kemungkinan mobil yang masuk terbatas, hanya dapat mencakup 15mobil saja)

;*******langkah awal, inisialisasi register dulu inisial: ldi mobil_in, 1 ; tekan tombol 1, jika ada mobil yg akan masuk ldi mobil_out, 2 ; tekan tombol 2, jika ada mobil yg akan keluar ldi p_jmlh, 0 ; kondisi awal jumlah mobil yg parkir=0 ldi sisa_p, 10 ; kondisi awal arena parkir yang msh kosong=10 ldi karcis, $60 ; kode karcis yg akan diprint out=awal alamat sram ldi yh, high(park1) ; inisialisasi pointer dengan alamat awal sram ldi yl, low(park1)

;*******pilihan buat operator, ada mobil masuk/mobil keluar switch: ; pilihan untuk operator, ada mobil masuk/keluar? in temp, pinb ; masukkkan switch lewat pinb cp temp, mobil_in ; bandingkan dengan setting awal mobil_in breq cek ; jika sama, berlanjut ke cek cp temp, mobil_out ; bandingkan dengan setting awal mobil_out

3
www.digizoneku.com

breq keluar rjmp switch

; jika sama, berlanjut ke keluar

;*******sudah penuhkah tempat parkir yg ada? cek: cpi p_jmlh, 10 ; jumlah mobil maksimal=10 cpi sisa_p, 0 out porta, p_jmlh ; tampilkan pada porta dan ddra, jumlah parkir dan sisa out ddra, sisa_p tempat yg msh kosong breq penuh ; jika p_jmlh=10 maka ket:tempat parkir penuh__ ;*******jika ada mobil masuk masuk: ;masukkan plat_mobil in temp, pinc out portc, temp ; simpan ke data base save_plat: st y+, temp out portd, temp jmp out_karcis1

;no plat mobil diinputkan melalui pinc, dan ditampilkan melalui portc

; no plat mobil yg tersimpan ditampilkan ke display melalui portd ; untuk memperoleh kode karcis yang akan diprint out, lompat ke out_karcis

;*******kalo t4 parkir penuh? penuh: rjmp switch ;*******jika ada mobil keluar keluar: in temp, pinc ;*******cocokkan kode karcis out1: cp r0, temp brne out2 out ddrd, temp lds temp, park1 out portd, temp inc sisa_p subi p_jmlh, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch out2: cp r1, temp brne out3 out ddrd, temp lds temp, park2 out portd, temp inc sisa_p subi p_jmlh, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch out3: cp r2, temp

; tempat parkir penuh, sistem kembali ke fungsi switch

; jika ada mobil yang keluar, inputkan no(kode) karcis lewat pinc

; kode yg dimasukkan, dibandingkan dengan kode yg disimpan ; di register data, kalau cocok maka akan me-load plat mobil yg disimpan di sram.Kode karcis dan plat no dicocokkan secara ; konvensional (oleh operator, jd sistem tidak mengaturnya) ; ditampilkan melalui portd ; sisa_p diincrement, p_jmlh di decrement, dan ditampillkan melalui porta

; idem

; idem

4
www.digizoneku.com

brne out4 out ddrd, temp lds temp, park3 out portd, temp inc sisa_p subi p_jmlh, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch out4: cp r3, temp brne out5 out ddrd, temp lds temp, park4 out portd, temp inc sisa_p subi p_jmlh, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch out5: cp r4, temp brne out6 out ddrd, temp lds temp, park5 out portd, temp inc sisa_p subi p_jmlh, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch out6: cp r5, temp brne out7 out ddrd, temp lds temp, park6 out portd, temp inc sisa_p subi p_jmlh, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch out7: cp r6, temp brne out8 out ddrd, temp lds temp, park7 out portd, temp inc sisa_p subi p_jmlh, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch out8: cp r7, temp ; idem

; idem

; idem

; idem

; idem

5
www.digizoneku.com

brne out9 out ddrd, temp lds temp, park8 out portd, temp inc sisa_p subi p_jmlh, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch out9: in temp, pinb cp r8, temp brne out10 out ddrd, temp lds temp, park9 out portd, temp inc sisa_p subi p_jmlh, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch out10: cp r9, temp brne out11 out ddrd, temp lds temp, park10 out portd, temp inc sisa_p subi p_jmlh, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch out11: cp r10, temp brne out12 out ddrd, temp lds temp, park11 out portd, temp inc sisa_p subi p_jmlh, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch out12: cp r11, temp brne out13 out ddrd, temp lds temp, park12 out portd, temp inc sisa_p subi p_jmlh, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch ; idem

; idem

; idem

; idem

6
www.digizoneku.com

out13: cp r12, temp brne out14 out ddrd, temp lds temp, park13 out portd, temp inc sisa_p subi p_jmlh, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch out14: cp r13, temp brne out15 out ddrd, temp lds temp, park14 out portd, temp inc sisa_p subi p_jmlh, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch out15: cp r14, temp brne out16 out ddrd, temp lds temp, park15 out portd, temp inc sisa_p subi p_jmlh, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch out16: cp r15, temp out ddrd, temp lds temp, park16 out portd, temp inc sisa_p subi p_jmlh, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch

; idem

; idem

; idem

; idem

;*******print kode karcis out_karcis1: cpi p_jmlh, 0 brne out_karcis2 out ddrd, karcis mov r0, karcis inc karcis inc p_jmlh sisa_p, 1 out porta, p_jmlh out ddra, sisa_p

; untuk mengeluarkan kode karcis ; untuk mobil pertama yang masuk diberi kode karcis sesuai inisialisasi yi, $60 ; ditampilkan melalui ddrd ; kode yang sudah dikeluarkan disimpan di register data ; increment kode karcis ; setelah mobil masuk, p_jmlh di increment, sisa_p di subi decrement ; lalu ditampilkan melalui porta dan ddra

7
www.digizoneku.com

rjmp switch out_karcis2: cpi p_jmlh, 1 brne out_karcis3 out ddrd, karcis mov r1, karcis inc karcis inc p_jmlh subi sisa_p, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch out_karcis3: cpi p_jmlh, 2 brne out_karcis4 out ddrd, karcis mov r2, karcis inc karcis inc p_jmlh subi sisa_p, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch out_karcis4: cpi p_jmlh, 3 brne out_karcis5 out ddrd, karcis mov r3, karcis inc karcis inc p_jmlh subi sisa_p, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch out_karcis5: cpi p_jmlh, 4 brne out_karcis6 out ddrd, karcis mov r4, karcis inc karcis inc p_jmlh subi sisa_p, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch out_karcis6: cpi p_jmlh, 5 brne out_karcis7 out ddrd, karcis mov r5, karcis inc karcis inc p_jmlh subi sisa_p, 1 out porta, p_jmlh out ddra, sisa_p ; idem

; idem

; idem

; idem

; idem

8
www.digizoneku.com

rjmp switch out_karcis7: cpi p_jmlh, 6 brne out_karcis8 out ddrd, karcis mov r6, karcis inc karcis inc p_jmlh subi sisa_p, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch out_karcis8: cpi p_jmlh, 7 brne out_karcis9 out ddrd, karcis mov r7, karcis inc karcis inc p_jmlh subi sisa_p, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch out_karcis9: cpi p_jmlh, 8 brne out_karcis10 out ddrd, karcis mov r8, karcis inc karcis inc p_jmlh subi sisa_p, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch out_karcis10: cpi p_jmlh, 9 out ddrd, karcis mov r9, karcis inc p_jmlh subi sisa_p, 1 out porta, p_jmlh out ddra, sisa_p rjmp switch ; idem

; idem

;idem

;idem

- Hasil Simulasi : Keterangan awal (untuk lebih mudah melihat hasil simulasi sistem minimal parkir, disajikan keterangan awal sebagai berikut) : Port a untuk menampilkan total mobil yang memasuki arena parkir Ddr a untuk menampilkan sisa tempat parkir

9
www.digizoneku.com

Pin b digunakan untuk memasukkan nilai pilihan tombol mobil masuk atau mobil keluar (nilai 1 untuk mobil_in dan nilai 2 untuk mobil_out)

Pin c digunakan untuk memasukkan no plat yang akan disimpan dan ditampilkan melalui portc Pin c juga digunakan untuk memasukkan kode karcis ketika mobil akan keluar

Port d digunakan untuk menampilkan no plat mobil yang akan masuk ataupun yang akan keluar Ddr d digunakan untuk menampilkan kode karcis yang dikeluarkan sistem untuk sopir mobil dan yang digunakan operator parkir untuk mencocokkan kode karcis dengan no plat mobil ketika mobil akan keluar

r0-r15 unutk menyimpan database kode karcis yang dikeluarkan, r16 untuk switch mobil_in, r17 untuk switch mobil_out, r18 untuk jumlah mobil yang telah parkir, r19 untuk sisa tempat parkir yang masih ada, r20 untuk kode karcis yg akan diberikan, r21 untuk memori sementara

tampilan sram untuk menyimpan no plat mobil yang telah masuk (sebagai data base mobil yang telah parkir)

10
www.digizoneku.com

eksekusi langkah demi langkah

1. inisialisasi register
lihat isi register hasil perintah dibawah ini

r.mobil_in = 1 r.mobil_out = 2 p_jmlh = 0 sisa_p = 10 karcis = 60 pointer y pada r28 = 60

2. pilihan untuk operator, ada mobil masuk atau mobil mau keluar

a. jika ada mobil masuk

Nilai switch mobil masuk adalah 1, diinputkan melalui pinb Hasil: - r.sementara (temp ) menyimpan nilai1, - cp temp, mobil_in = membandingkan nilai inisialisasi mobil_ in (1) dengan nilai temp, jika sama akan melompat ke fungsi cek fungsi cek adalah untuk men-cek arena parkir sudah penuh atau belum. Dengan melihat apakan p_jmlh sudah bernilai 10 dan sisa_p sudah bernilai 0, jika sudah akan jump ke fungsi penuh, tapi kalou belum, akan menuju rutin berikutnya. fungsi ini juga menampilkan ke port a jumlah mobil yang sudah ada di arena parkir dan ke ddr a sisa tempat parkir 11
www.digizoneku.com

berikut hasilnya, arena parkir masih kosong, sisa tempat parkir masih bisa untuk 10 mobil karena belum penuh, maka mobil boleh masuk operator men-inputkan no plat mobil yang masuk melalui pin c. Dikeluarkan ke portc dulu, kemudian di simpan ke sram dengan pointer yang sudah diinisialisasi diawal yaitu pada alamat 60h. No plat yang telah dicatat ditampilkan ke portd, kemudian untuk mengeluarkan kode karcis untuk mobil tersebut, jump ke fungsi out_karcisx. untuk mobil pertama yang masuk akan jump ke out_karcis1 Hasil: Misal no plat mobil = 1C 1C diinputkan melalui pin c, ditampilkan melalui port c

nilai plat mobil disimpan di sram sebagai data base sistem parkir minimal ini,

Untuk mobil pertama yang masuk: Kode karcis yang dikeluarkan, pada fungsi out_karcis1 Jika p_jmlh masih 0 maka nilai inisialisasi awal karcis yaitu 60h dikeluarkan melalui ddr d, sebagai kode karcis yang akan diberikan ke sopir mobil. Kode ini disimpan oleh sistem ke r0, kemudian sistem menincrement kode karcis menjadi 61h untuk mobil berikutnya yang masuk. Hasil: No plat mobil ditampilkan melalui portd, kode karcis yang diberikan ke sopir ditampilkan ke ddr d Kode karcis juga disimpan di r0

Setelah mobil pertama ini masuk maka counter berubah, Lihat tampilan pada port a Porta(p_jmlh) bernilai 1 dan ddra(sisa_p) bernilai 9 12
www.digizoneku.com

Lihat registernya

setelah mobil pertama berhasil masuk, maka sistem kembali ke fungsi switch begitu seterusnya untuk mobil selanjutnya, sampai mobil yang telah parkir sudah ada 10 mobil / sampai p_jumlah menjadi bernilai 10 dan sisa_p bernilai 0 b. mobil keluar berikut contoh untuk menunjukkan mobil keluar ketika mobil di arena parkir sudah ada 7 mobil keadaan awal dengan data 7 mobil di sistem p_jmlh/mobil yang di arena parkir = 7 sisa_p/sisa tempat parkir = 3 data kode karcis 7 mobil ada di r0-r6 r18 untuk jumlah mobil r19 untuk sisa tempat parkir

data no plat ketujuh mobil yang telah parkir di sram

Saat mobil keluar Saat ada mobil keluar maka operator akan menekan switch nilai2, yang diinputkan melalui pinb

Sopir mobil akan memperlihatkan kode karcis, yang oleh operator diinputkan melalui pinc untuk me-load data no plat mobil dari sram Hasil: Misal mobil ke-empat yang masuk akan keluar, yaitu mobil yang memiliki no plat 0F. maka sopir mobil itu akan memberikan kode karcis yang bernilai 63 oleh operator diinputkan melalui pin c

13
www.digizoneku.com

kemudian menuju rutin fungsi out4 (karena yang akan keluar adalah mobil ke-empat). Kode karcis yang diinputkan tadi disimpan di r.temp, dibandingkan dengan isi r3, jika sama maka akan me-load isi sram dengan alamat yang ditunjuk oleh nilai kode karcis tersebut (data sram yang ditunjuk adalah 0F). Keduanya ditampilkan di portd

Hasil: Kode karcis yang diinputkan ditampilakn pada ddr d. no plat mobil yang telah diload ditampilkan pada portd. Oleh operator, dilihat, jika cocok dengan no plat mobil yang keluar tadi, berarti mobil boleh keluar. Jika tidak sama maka akan diproses dengan syarat-syarat tertentu sebelum mobil tersebut boleh keluar. Mobil yang keluar tersebut mengakibatkan perubahan counter, yaitu p_jmlh (jumlah mobil di arena parkir) menjadi bernilai 6 dan sisa_p (sisa tempat parkir) menjadi bernilai 4

Kondisi terakhir

14
www.digizoneku.com

3. Saat mobil Penuh


Kondisi terakhir pada percobaan simulasi diatas adalah - mobil yang ada di arena parkir adalah 6 - sisa tempat parkir adalah 4 - ke enam mobil tersebut memiliki no plat: 1C, 08, 0A, 17, 31, 3D - kode parkir yang masih dipegang oleh sopir mobil: 60,61,62,64,65,66 berikut contoh untuk menampilkan keadaaan saat arena parkir telah terisi penuh. Kondisi penuh: - mobil yang ada di arena parkir adalah 10 (port a) - sisa tempat parkir adalah 0 (ddr a) - ke enam mobil tersebut memiliki no plat: 1C, 08, 0A, 17, 31, 3D,63, 6B, 3B, 2F (lihat data sram dibawah) - kode parkir yang masih dipegang oleh sopir mobil: 60,61,62,64,65,66,67,68,69,6A (lihat resister data)

kemudian diuji, mobil ke-12 dalam hari itu yang akan masuk. Dalam kondisi arena parkir penuh:

15
www.digizoneku.com

Kondisi penuh:

inputkan tombol switch = 1 rutin akan lompat ke fungsi cek

dari data awal p_jmlh = 10 sisa_p = 0, (lihat gambar diatas) maka rutin akan melompat ke fungsi penuh

dan rutin sistem kembali ke fungsi switch

kesimpulan:
sistem telah dapat menunjukkan fungsi minimal parkir, yaitu: - Jumlah mobil max yang bisa diparkir 10 (dibantu dengan fungsi penuh) - Mobil masuk mendapat karcis yang dilengkapi dengan kode dan dicatat no.platnya (disimpan dalam data base sram untuk no plat dan register data untuk kode karcis) - Jika keluar no.plat dan kode karcis harus cocok (ditampilkan pada port d) - Sistem bisa menunjukkan sisa tempat parkir dan jumlah total parkir mobil(ditampilkan pada port a) Kelemahan dalam simulasi ini: karena register dalam avr ATmega8535 ini terbatas hanya sampai 16 register data, maka kemungkinan mobil yang dapat parkir hanya 16 mobil. 16
www.digizoneku.com

17
www.digizoneku.com