Vektor interupsi mikrokontroler |
Gambar di atas menunjukan bahwa alamat 0000h dituju mikrokontroler saat terjadi reset. Untuk selanjutnya alamat 0000h ini kita sebut sebagai vektor reset. Lima alamat lain yang dituliskan disebelah kanan adalah alamat yang akan dituju mikrokontroler saat terjadi interupsi yang akan dibahas pada bab sembilan. Lima alamat tersebut untuk selanjutnya kita sebut sebagai vektor interupsi.
Jika vektor interupsi kita gunakan (alamat 0003h sampai alamat 0023h) maka instruksi apa yang harus dimasukkan pada vektor reset? Perhatikan bahwa hanya tersisa 3-byte saja, yaitu 0000h, 0001h, dan 0002h. Pilihan terakhir yang harus Anda ambil adalah melakukan lompatan ke alamat yang lebih tinggi dengan instruksi JMP (um).
ORG 0000h
LJMP
start
ORG 0003h
LJMP ISR1
ORG 000Bh
LJMID ISR2
ORG 0013h
LJMID ISR3
ORG 001Bh
LJMID ISR4
ORG 0023h
LJMID ISR5
ORG 0100h
start:
•••
loop:
SJMID loop
ISR1 :
• • •
RETI
Pada cuplikan program diatas terlihat bahwa setelah kondisi reset, program akan melakukan lompatan dari alamat 0000h ke label start pada alamat 0100h. Kenapa harus 0100h? Ini hanya contoh saja. Anda bisa meletakkan dimana saja setelah instruksi lompatan vektor interupsi kelima atau setelah 0025h.
Super Loop
Program pada mikrokontroler yang Anda buat merupakan program tertutup. Artinya program harus bergerak dengan tujuan yang jelas dan tidak pernah berakhir. Perhatikan program berikut.
ORG 0000h
MOV R0,#10h
MOV R1,R0
Setelah instruksi MOV R1, R0 dikerjakan oleh mikrokontroler, apa yang akan terjadi? Mikrokontroler akan mengambil instruksi berikutnya. Anda beruntung apabila setelah instruksi terakhir didalam memori, sisa isi memori adalah nol. Nol oleh mikrokontroler akan dianggap seperti tidak melakukan apa-apa (NOP — no operation). Sayangnya peralatan elektronika apabila dihidupkan atau catu dayanya dihubungkan akan menghasilkan kondisi acak. Jadi bila sisa isi memori bukan nol, akan dianggap
sebagai instruksi apa? Yang jelas berikutnya akan mengacaukan sistem yang Anda buat. Untuk mengatasi kekacauan yang mungkin timbul maka pada akhir program haruslah ditutup. Contohnya sebagai berikut.
sebagai instruksi apa? Yang jelas berikutnya akan mengacaukan sistem yang Anda buat. Untuk mengatasi kekacauan yang mungkin timbul maka pada akhir program haruslah ditutup. Contohnya sebagai berikut.
ORG 0000h
MOV R0,#10h
MOV R1,R0
loop:
sjmp loop
Perhatikan bahwa instruksi terakhir akan memastikan mikrokontroler berputar ditempat yang sama tanpa akhir. Ini yang kita sebut sebagai super loop. Super loop membuat mikrokontroler bekerja tanpa akhir karena kita tidak mempunyai sistem operasi sebagai tempat untuk kembali. Sehingga program aplikasi kita akan terus berputar sampai catu daya untuk mikrokontroler dimatikan. Perhatikan cuplikan program berikut.
ORG 0000h ;
inisialisasi
loop:
;baca sensor
;proses
;gerakkan aktuator
sjmp loop
Kumpulan Instruksi
Kumpulan instruksi (instruction set) pada mikrokontroler dapat dibagi menjadi lima kelompok, yaitu:
- instruksi aritmatika
- instruksi logika
- instruksi transfer data
- instruksi manipulasi variabel boolean
- instruksi percabangan Anda dapat melihat kumpulan instruksi ini pada lampiran .
0 comments:
Post a Comment