📄 flp.asm
字号:
;------------------------------------------------------------------------------------
; Program square wafe osilator dengan memanfaatkan prosedur interrupt timer.
; Output berupa gelombang kotak (flip-flop Port2.0 dan Port2.1)
; Frequency 50 hz pada operasi X-tall 12Mhz
; by: Herlambang Aribowo J0D005037 D3 Instrumentasi dan Elektronika UNDIP
;------------------------------------------------------------------------------------
isine equ -5000
cntx equ 20h
cnty equ 21h
Q bit p2.0
Qinv bit p2.1
Org 00h ; iki routine pengorganisasian memori usage
sjmp mulai ; 00h buat operasi routine normal
Org 0bh ; 0bh adalah memory alocation buat interrupt timer0
Ljmp nginterupt ; iki alamat routin interrupt
Org 1bh ; 1bh adalah alamat alocation buat interrupt timer1
Ljmp nginterupt2; alamat routine interrupt timer1
mulai: clr Q
clr Qinv
mov cntx,#02h ; counter timer0 biar 25hz
mov cnty,#02h ; counter timer1 biar 25hz
InitTimer: mov TMOD,#11h ; setting timer mode
mov tl0,#0ffh ; ngisi tl dan th timer 0 dengan ffh
mov th0,#0ffh ;
setb tf0 ; kondisikan overflow
setb ET0 ; aktifkan layanan interrupt timer0
mov tl1,#low (isine)
mov th1,#high (isine) ;
setb tf1 ; kondisikan overflow
setb ET1 ; aktifkan layanan interrupt timer0
setb EA ; aktifkan master layanan interrupt
setb TR0 ; layanan interrupt timer0 dijalankan
ljmp looping
;------------------------------------------------------------------------------------------------
; Procedure Flip-flop dengan layanan interupt T0 dan T1
;------------------------------------------------------------------------------------------------
nginterupt: mov tl0,#low (isine)
mov th0,#high (isine)
djnz Cntx,rampungx ; uwis 20ms po durung?
clr tf0 ; bersihkan flag timer 0 overflow
clr tr0 ; mateni timer internal
acall pulsax ; pulsax
mov Cntx,#2 ; tiap overflow dikali2 ben 10ms dab
acall resetx ; reset boss..
rampungx: reti ;
resetx:
mov tl0,#low (isine)
mov th0,#high (isine)
setb tr1 ; nyumet timer1
ret ; balek maning
pulsax: clr Q ; pulsa low
cpl Qinv ; pulsa high
ret
nginterupt2: mov tl1,#low (isine)
mov th1,#high (isine)
djnz Cnty,rampungy ; uwis 20ms po durung?
clr tf1 ; bersihkan flag timer 0 overflow
clr tr1 ; mateni timer internal
acall pulsay ; pulsa inverse pulsax
mov Cnty,#2 ; tiap overflow dikali2 ben 10ms dab
acall resety ; reset boss..
rampungy: reti ;
resety:
mov tl1,#low (isine)
mov th1,#high (isine)
setb tr0 ; nyumet timer1
ret ; balek maning
pulsay: cpl Q ; pulsa high
cpl Qinv ; pulsa low
ret
;------------------------------------------------------------------------------------------------
; Routine utama buat bekerja mencari nafkah hehehehe :)
;------------------------------------------------------------------------------------------------
looping:
sjmp looping
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -