pada rangkaian ini menggunakan ic keluaran atmel yaitu AT89s51, program ini menggunakan interupt time1. speaker dipasang pada port 1.7.
Circuit diagram:
;---------------------------------------------------------------
;Program
demo HB2000 untuk drive speker bunyi tone
;Pintu
Rel Kereta Api dan lampu flip-loop, selang waktu
;pakai
interupt Timer 1, sepeker di pasang pada P1.7
;Lampu
flip-loop pada port 1.4 dan port 1.7
;file
name HL14.H51 By. haline, des 1999
ver 0.0
;---------------------------------------------------------------
Org 0h
Ljmp Mulai
;
Org 1Bh ;alamat
untuk interupt timer 1
Ljmp timer_1
;
Delay : Mov 79h,#0 ;sub
routine delay
Delay1: Nop
Djnz 79h,Delay1 ;
Ret
Ldelay:
Mov 7Ah,#0
Ld1:
Acall
Delay
Acall Delay
Djnz 7Ah,ld1
ret
;------------------------------------
;sub
routine interupt timer 1
;penghasil
pulsa pada port 1 bit ke 0
;------------------------------------
Timer_1:
clr TCON.6 ;stop
timer 1
Cjne R0,#0, Tone1
Setb P1.0
Mov R0,#1 ; +---
Sjmp Tone2 ;
---+
Tone1:
Clr P1.0 ;Buat
P1.0 berlogika 0 --+
Mov R0,#0
Tone2:
Cjne R1,#0,Tone3
Mov TL1,#06Bh ;Tone
500 hz = 1ms x 2
Mov TH1,#0FCh
Sjmp Tone4
Tone3:
Mov TL1,#0D7h ;Tone 225 Hz= 1.8 ms x 2
Mov TH1,#0F8h
Tone4: ; Perhitungan Frekuensi
Tone
Setb TCON.6 ;Fosc
= 11Mhz (Tergantung
;Crystalnya)
Reti ;F
Timer = 11 Mhz/12=916 Khz
;T Timer = 1/916=1.09 us
;T Tone = (65535-THxTLx)
* 1.09 us
;THxTLx (500Hz)=
65535-(1 ,s/1.09us)
;=65535-916=64619dec
;=FC6B Hex (THx=FC,
TLx=6B)
;------------------
;Awal
dari program
;------------------
Mulai:
Clr A ;nolkan accumulator
Mov
IE,A ;dissable semua interrupt
Setb IE.7 ;enable interupt
Setb
Ie.3 ;enable interupt timer 1
Mov TCON,A ;clear tcon A
Mov TMOD,#11h ;mode timer 16 bit
Setb TCON.6 ;start timer 1
Tunggu:
Mov
R1,#0 ;Flag untuk tone 500Hz
Setb P1.7
Setb P1.6
Clr P1.5
Clr P1.4
Lcall Delay
Mov R1,#1 ;Flag untuk tone 225 Hz
Setb P1.4
Setb P1.5
Clr P1.6
Clr P1.7
Lcall Delay
Sjmp Tunggu ;ulangi terus menerus
;
End