Rancang interupt dan Buat Program ISR untuk Timer 1
Saturday, April 28, 2012
Ini merupakan program ISR dengan menggunakan penguji Edsim51 yang memanfaatkan interupt dan dan menggunakjan Timer 1.
ORG 0000h ;alamat pertama setelah reset
LJMP MULAI ;Lompati Interupt Vector Table
ORG 001Bh ;Interupt Vector Table untuk Timer-1
CPL P1.2
MOV TL0,#00h ;Re-load nilai Low-Byte
MOV TH0,#0DCh ;Re-load nilai High-Byte
RETI ;Akhir dari ISR
;———————————————————–
;—– Program Utama mulai dari sini
ORG 0030h ;Alamat bebas dari vektor table
MULAI: MOV TMOD,#10h ;Timer-1, Mode-2
MOV TL0,#00h
MOV TH0,#0DCh
MOV IE,#80h ;IE=10000010b utk interupsi Timer-0
SETB TR1 ;Jalankan Timer
ULANG: MOV A,P0 ;Ambil data dari Port 0
MOV P1,A ;Kirim data ke Port 1
SJMP ULANG ;Lompat ke ULANG, untuk terus mengulang
;—– IST Timer-1. Harus di-reload karena Timer pakai Mode-1
ISR_T1: CLR TR1 ;Matikan Timer
CLR P2.1 ;P2.1=0, mulai bagian rendah
MOV R2,#4 ; 2MC
TUNGGU: DJNZ R2,TUNGGU ; 4 x 2 siklus Mesin (MC) 8MC
MOV TL1,#018h ;Re-load nilai Low-Byte 2MC
MOV TH1,#0FCh ;Re-load nilai High-Byte 2MC
SetB TR1 ;Jalankan lagi Timer-1 1MC
SetB P2.1 ;P2.1=1, kembali (1s) 1MC
RETI ;Akhir dari ISR
END