Merancang Keypad Fotocopy dengan AVR


Ini tugas Sistem Mikroprosessorku di JTE UGM Semester 2 lalu, aku dapat nilai D dari mata kuliah ini *sedih sekali rasanya.

Ok, cekidot.

Program keypad fotocopy berikut ini diaplikasikan pada ATMEGA16, dengan kriteria sebagai berikut:

- Pin C bit 4 untuk memberikan input 10 lembar fotocopy.
- Pin C bit 5 untuk memberikan input 20 lembar fotocopy.
- Pin C bit 6 untuk memberikan input 40 lembar fotocopy (jumlah maksimum).
- Pin D bit 2 merupakan interupsi eksternal 0, yang apabila ditekan ,proses pengcopyan dihentikan
- Pind D bit 7 digunakan untuk melanjutkan proses fotocopy setelah mesin diinterupsi.
- Port A bit 7 untuk menyalakan LED 1 saat jumlah fotocopy mencapai 10 lembar.
- Port A bit 6 untuk menyalakan LED 2 saat jumlah fotocopy mencapai 20 lembar.
- Port A bit 5 untuk menyalakan LED 3saat jumlah fotocopy mencapai 30 lembar.
- Port A bit 4 untuk menyalakan LED 4 saat jumlah fotocopy mencapai 40 lembar.
- Port B untuk menyalakan layar BCD yang menunjukkan jumlah yang sudah tercopy.

PENGGALAN 1
.include "m16def.inc"
.org 0x00
rjmp main
.org 0x01
rjmp pause
rjmp lanjut

Keterangan 1
org 0x0000 digunakan untuk memberitahu bahwa instruksi selanjutnya akan ditempatkan pada alamat 0000.
Jadi, pada alamat 0000 akan ditempati oleh instruksi rjmp main.
Instruksi ini memberi perintah untuk meloncat ke subrutin main.
Alamat 0001 ditempati oleh instruksi rjmp pause.
Instruksi ini akan memberi perintah untuk meloncat ke subrutin pause.


PENGGALAN 2
main:
ldi r16, low(ramend)
out spl, r16
ldi r16, high(ramend)
out sph, r16


Keterangan 2
kelima baris ini digunakan sebagai stack pointer SRAM.


PENGGALAN 3
ldi r20,0b01000000
out GICR,r20
sei

Keterangan 3
R20 yang berisi bit seperti di atas, masing-masing digunakan sebagai untuk membuat intterrupt int0,sedangkan perintah sei untuk mengenablekannya.


PENGGALAN 4
awal1:
ldi r16,255
out ddra,r16; porta output
ldi r17,0
out ddrc,r17;portc input
out ddrd,r17
out ddrb,r16
out pinc,r17
out portd,r16

Keterangan 4
Baris di atas digunakan untuk menentukan fungsi pin ATMEGA yakni sebagai input atau output.


PENGGALAN 5
awal:
clr r16
out porta,r16
sbic pinc,4
rjmp kopi10
sbic pinc,5
rjmp kopi20
sbic pinc,6
rjmp kopi40
rjmp awal

Keterangan 5
Program di atas mengecek keadaan pin C bit 4, 5 dan 6 secara berurutan.
Jika bit 4 pin C ditekan ( logic 0 ) maka program akan mengisi register dengan nilai 10 kemudian meloncat ke subrutin kopi10 untuk melakukan proses fotocopy.
Tetapi, bila pin C bit 4 tidak ditekan maka program akan melanjutkan pengecekan terhadap bit 5 pin C.
Jika bit ini ditekan maka program akan mengisi register dengan nilai 20 kemudian meloncat ke subrutin kopi20 untuk melakukan proses fotocopy.
Dan seandainya tidak ditekan, maka program akan melanjutkan pengecekan terhadap bit 6 pin C.
Seperti sebelumnya, jika bit ini ditekan maka program akan mengisi register dengan nilai 40 kemudian meloncat ke subrutin kopi40 untuk melakukan proses fotocopy.
Jika tidak ditekan maka program akan kembali mengulang pengecekan terhadap bit 4 pin C.


PENGGALAN 6
kopi10:
inc r16
out portb,r16
rcall waktu
cpi r16,10
breq led1
rjmp kopi10

Keterangan 6
Program di atas merupakan proses pengcopyan 10 lembar.
R16 akan diincrementkan hingga 10 desimal, sehingga melompat ke subrutin led1.
Port B akan menghidupkan BCD,sesuai isi dari register R16.
Pengcopyan akan dijalankan sesuai pewaktuan dari subrutin waktu.


PENGGALAN 7
kopi20:
inc r16
out portb,r16
cpi r16,10
breq led2
rjmp kopi20

Keterangan 7
Program di atas merupakan proses pengcopyan 10 lembar pertama dari fotocopy 20.
Proses ini berjalan setelah led2R16 akan diincrementkan hingga 10 desimal, sehingga melompat ke subrutin led2.
Port B akan menghidupkan BCD,sesuai isi dari register R16.
Pengcopyan akan dijalankan sesuai pewaktuan dari subrutin waktu.


PENGGALAN 8
kopi20b:
inc r16
out portb,r16
cpi r16,20
breq led2b
rjmp kopi20b

Keterangan 8
Program di atas merupakan proses pengcopyan 11-20 lembar dari fotocopy 20.
Proses ini berjalan setelah subrutin led2 dijalankan.R16 akan diincrementkan hingga 20 desimal.
Port B akan menghidupkan BCD, sesuai isi dari register R16.
Pengcopyan akan dijalankan sesuai pewaktuan dari subrutin waktu.
Setelah itu akan kembali ke fungsi awal untuk pengecekan kembali.


PENGGALAN 9
kopi40:
inc r16
out portb,r16
cpi r16,10
breq led3
rjmp kopi40

Keterangan 9
Program di atas merupakan proses pengcopyan 1-10 lembar dari fotocopy 40.
R16 akan di-increment hingga 10 dan akan melompat ke subrutin led3.


PENGGALAN 10
kopi40b:
inc r16
out portb,r16
cpi r16,20
breq led3b
rjmp kopi40b

Keterangan 10
Program diatas adalah lanjutan dari proses pengcopyan 40 lembar.
Yakni dari 11 – 20 lembar.
Proses ini berjalan setelah subrutin led 3 selesai dijalankan.


PENGGALAN 11
kopi40c:
inc r16
out portb,r16
cpi r16,30
breq led3c
rjmp kopi40c

Keterangan 11
Program diatas adalah lanjutan dari proses pengcopyan 40 lembar.
Yakni dari 21 – 30 lembar.
Proses ini berjalan setelah subrutin led 3b selesai dijalankan.


PENGGALAN 12
kopi40d:
inc r16
out portb,r16
cpi r16,40
breq led4
rjmp kopi40d

Keterangan 12
Program diatas adalah lanjutan dari proses pengcopyan 40 lembar.
Yakni dari 31 – 40 lembar.
Proses ini berjalan setelah subrutin led 3c selesai dijalankan.


Comments

Popular posts from this blog

Perbaikan Putaran Fasa (Listrik 3 Fasa)

Perlengkapan Sistem Tenaga di Gardu Induk

Setting dan Wiring Relay ABB Tipe SPAJ 140C