Anda di halaman 1dari 17

COUNTER UP &COUNTER

DOWN
DENGAN
AT 8 9 C 5 1 & 7 S E G M E N T
Counter Up & Counter Down
Counter Up merupakan sebuah rangkaian yang berfungsi sebagai penghitung
naik. Sedangkan Counter down sendiri merupakan sebuah rangkaian yang
berfungsi sebagai penghitung turun. Pada program ini direncanakan Counter
Up akan berjalan dari 00-99 dan Counter Down akan berjalan turun dari 99-00.
Counter Up dan Counter Down sendiri biasanya digunakan untuk fungsi
stopwatch, maupun timer.
1. ACALL (absolute call)
ACALL adalah instruksi 2-byte yang berbeda dengan LCALL yang merupakan instruksi 3-byte. Alamat tujuan dalam instruksi AC ALL haruslah
berada dalam blok 2 KB yang sama dari perintah ACALL tersebut. Persisnya adalah blok yang sama dengan alamat yang persis di bawah ACALL
(mirip dengan AJMP). Tidak ada perbedaan antara ACALL dan LCALL dalam hal penanganannya dalam subrutin. Di mana nilai PC akan disimpan
dalam stack, dan menjalankan subrutin sampai menemukan instruksi RET. Dan kembali menjalankan instruksi yang tepat di bawah instruksi
ACALL tadi.
Pada beberapa versi turunan dari 8051, seperti AT89C2051, chip ini memiliki memory program hanya sebesar 2 KB di dalamnya. Sehingga
hanya dengan instruksi ACALL seluruh alamat memory program sudah dapat dijadikan tujuan ACALL. Dengan demikian menggunakan ACALL
akan membuat ukuran kode program kita menjadi lebih kecil dibandingkan dengan menggunakan LCALL.
2. ORG
Directive ORG digunakan untuk mengindikasikan awal dari alamat. Artinya adalah kode berikutnya akan ditempatkan oleh assembler dimulai
dari alamat seperti yang ada dibelakang simbol ORG. Bilangan dibelakang symbol ORG ini boleh berbentuk desimal maupun hex. Jika bilangan
ternyata tidak diikuti oleh symbol "h", maka Assembler akan merubahnya nanti menjadi hex.
3. MOV
Singkatnya instruksi MOV adalah menyalin isi data dari register yang satu ke register yang lain, dengan format sebagai berikut :
MOV dest, source ;salin data source ke dest
Instruksi ini memerintahkan pada CPU untuk memindahkan (sebenarnya adalah menyalin) operand source menuju operand destination.Seperti
contohnya, "MOV A,R0" adalah menyalin isi R0 ke register A. Setelah instruksi ini dijalankan isi dari kedua register tersebut adalah sama.
Instruksi MOV tidak mengubah isi dari operand Source. Program berikut ini adalah contoh untuk mengubah Akumulator menjadi 55h (h adalah
hex), lalu kemudian memindahkan nilainya kedalam beberapa register dalam CPU. Perhatikan tanda "#" dalam instruksi tersebut. Hal itu
mengindikasikan bahwa simbol dibelakangnya adalah sebuah nilai. Hal tersebut akan kita bahas segera.
4. CJNE
Instruksi CJNE (Compare and Jump if Not Equal) membandingkan dua nilai yang disebut dan MCS akan Jump kalau kedua nilai tersebut
tidak sama!
MOV A,P1
CJNE A,#$0A,TidakSama
...
SJMP EXIT
;
TidakSama:
...
5. LJMP
Instruksi 3-byte, dimana byte pertama adalah opcode, sedang dua byte yang lain adalah representasi dari alamat 16-bit yang dituju
6. RET
Instruksi untuk kembali dari suatu subrutin program ke alamat terakhir subrutin tersebut di panggil
7. DJNZ (Decrement Register and Jump if Not Zero)
Mengurangi nilai register dengan 1 dan jika hasilnya sudah 0 maka instruksi selanjutnya akan dieksekusi. Jika belum 0 akan menuju ke
alamat kode
8. END
Perintah untuk mengakhiri program
9. $
Artinya tak terhingga (infinity)
PROGRAM UNTUK EDSIM
Minimum System At89C51
Saklar S1 S2 dan
Reset aktif low
Flowchart
ORG = 0000H

AWAL
Puluhan=0
Satuan=0
No

S1 S2

Puluhan naik Puluhan turun

Satuan naik Satuan turun

99

Yes No
Reset
PROGRAM
Program Counter Up & Down ini dibagi menjadi 7 Unit yaitu :
1. Awal Program
2. Counter Up (Puluhan)
3. Counter Down (Puluhan)
4. Sub-routine Counter Up (Satuan)
5. Sub-routine Counter Down (Satuan)
6. Delay Puluhan
7. Delay Satuan
PROGRAM UNTUK PROTEUS
SEKIAN PRESENTASI
DARI KELOMPOK KAMI
TERIMAKASIH

Anda mungkin juga menyukai