INTERUPSI


I N T E R U P S I

TUJUAN
1. Mahasiswa memahami sistem interupsi pada mikrokontroller
2. Mahasiswa dapat menerapkan sistem interupsi pada pembuatan jam digital
3. Mahasiswa dapat memahami penggunakan bahasa assembly untuk penggunakan sistem interupsi

Pada mikrokontroller menyediakan 5 buah sumeber interupsi, 2 buah interupsi eksternal, 2 buah interupsi timer, dan 1 buah interupsi serial. Agar interupsi dapat dilayani maka instruksi assembly harus ditempatkan pada alamat vektor berikut, sesuai dengan sumber interupsi yang akan digunakan.

Source
Vector Address
IE0
0003H
TF0
000BH
IE1
0013H
TF1
001BH
RI + TI
0023H

Org 0000h Ljmp Start Org 000bh Ljmp Timer0Interupt Start: ; 
Instruksi Rutinitas ; 
Instruksi Rutinitas ; 
Instruksi Rutinitas Sjmp Start; { Looping Forever } ; 
Timer0Interupt: : : Reti End

Pada contoh instruksi pemrograman tersebut tampak, apabila tidak ada interupsi maka program akan menuju ke start dan menjalankan rutinitas-rutinitas secara terus menerus, tetapi apabila suatu interupsi yang dibangkitkan oleh overflow timer 0 terjadi, maka program yang semula bersarang pada rutinitas akan melompat pada alamat vektor 0bh (alamat interupsi timer 0) dan melompat ke subrutine interupsi Timer0Interupt.

Percobaan 11.1. Membangkitkan clock pada jam digital :DD dengan memanfaatkan interupsi timer 0.

Pada percobaan akan dibangkitkan clock untuk jam digital, hanya bagian detik puluhan (display 1) dan detik satuan (display 2) pada 7 segmen
Pada mode ini, dengan kristal 12MHz maka timer akan overflow setiap 65.536 udetik. Pada percobaan ini, untuk membangkitkan interupsi setiap 50000 udetik maka data yang harus diisikan pada register TL1 dan TH1 adalah sebagai berikut:
65536 – 50000 = 15536 d or 3CB0h
Maka interupsi TF1 akan segera dibangkitkan setiap 50000 x 1 udetik = 0,05 detik
pada pemrograman ini, RO diimplementasikan sebagai counter software, Register R0 akan increment setiap Timer 1 overflow. Jika register R7 telah mendeteksi nilai 50 maka port P0.0 ( LED D0 ) akan nyala selama = 0,05 x 20 detik = 1 detik

Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut:
1. Hubungkan jumper 7Segmen_EN, untuk mengaktifkan Decoder 74LS138
2. Hubungkan modul Microcontroller Trainer dengan power supply +5V
3. Hubungkan modul Microcontroller Trainer dengan rangkaian programmer
4. Buka Program M-IDE Studio for MCS-51, sebagai editor dan compiler program
5. Ketik program berikut ini:(download file prog111a.asm)

detik equ 30h detikpuluhan equ 31h detiksatuan equ 32h counter20 equ 33h ; 
Org 0h sjmp Start Org 0bh Ljmp Interrupt_Timer0 ; 
Start: mov detik,#0 call InitTimer ; 
Forever: call ClockDisplay sjmp Forever ;
 ; 
Interrupt_Timer0: mov tl0,#0b0h mov th0,#03ch djnz Counter20, EndInterrupt mov Counter20,#20 call DoClock EndInterrupt: reti ; 
DoClock: inc detik mov A,detik cjne A,#60,Update mov detik,#0 Update:mov A,detik mov B,#10 DIV AB mov detikpuluhan,A mov detiksatuan,B ret ;
 ClockDisplay: Mov DPTR,#Decoder7Segmen mov A,detiksatuan Movc A,@A+DPTR mov P0,A clr P3.5 ; 
Setb P3.6 Setb P3.7 call delay ;
 Mov DPTR,#Decoder7Segmen mov A,detikpuluhan Movc A,@A+DPTR mov P0,A ; 
Setb P3.5 ; 
clr P3.6 Setb P3.7 call delay ret ; 
InitTimer: mov TMOD,#00000001b mov tl0,#0b0h mov th0,#03ch setb ET0 ;
Enable Timer 0 Interrupt setb EA ;
Master Interrupt Enable setb TR0 ;
Clock start running ret ;
 ;
=============================== ;
subroutine delay time ;
=============================== delay: mov R1,#2 del1: mov R2,#255 del2: djnz R2,del2 djnz R1,del1 ret ;
======================================== ; 
L O O K U P T A B L E ; 
Decode to Seven Segmen -> g f e d c b a ;
======================================== 
Decoder7Segmen: DB 11000000b,11111001b,10100100b,10110000b,10011001b DB 10010010b,10000010b,11111000b,10000000b,10010000b ; 
End

6. Simpanlah program yang anda ketik dan beri nama : prog111a.asm
7. Pada program MIDE tersebut pilih Build /F9 atau untuk melakukan kompilasi program dari *.asm ke *.hex.
8. Lakukan pemrograman mikrokontroller dengan menggunakan Program ISP Software ( Lihat Petunjuk Penggunaan)
9. Lakukan pengamatan untuk data waktu detik yang ditampilkan apakah sesuai dengan jam konvensional.

Display Detik (:DD)
Jam Konvensional (Detik)
1
2
3
4
5
:
60

 

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s