Kalau kita melihat
alat musik organ elektronik yang di jual di toko musik dan kita coba membongkarnya
maka akan kita temukan berbagai komponen elektronika yang ada didalamnya dan
ada satu IC besar sebagai tempat menyimpan program not-not pada organ
elektronik tersebut.
Bagaimana membuat
program dari not-not musik tersebut itulah yang akan dicoba untuk dibagi agar
bisa menambah pengetahuan kita tentang bagaimana progses terbentuknya not-not
musik itu dari suatu program microkontroller dan microcontroller yang penulis
pakai adalah AT89S52 dengan bahasa Asembler.
Untuk bahan Tuts pada organ bisa digunakan saklar pushbotton dan bisa
dipasangan led pada tiap saklar sebagai indikator untuk mengetahui saklar
berfungsi atau tidak. Tombol saklar pushbotton ini bisa dihubungkan ke port B
dan port D sebagai input pada IC Mikrocontroller dan untuk keluarananya bisa dgunakan
port C dengan menggunakan salah satu Pin pada port C tersebut. Agar suara yang
keluar bisa lebih besar didengar maka bisa dihubungkan dengan Speaker aktiv
atau menggunakan speaker yang 8 ohm. Kalau menggunakan speaker 8 ohm maka
terlebih dahulu dibuatkan penguat audio sederhana.
Adapun program not ini masih bersifat dasar seperti do, re, mi, fa, sol,
la, si, doo (1,2,3,4,5,6,7,i) dan untuk program not yang lainnya silahkan di
uji coba sendiri atau tanya langsung kepada penulis di ruang guru jurusan TEI
SMKN 3 MATARAM atau tepatnya di sebelah utara Musholla. (Alfuad Gapuki)
##########################################################################
; Program membunyikan speaker dengan menggunakan frekuensi 500Hz
; kamis, 11 mei 2006 i am question to my students
; SAK IKI SING APIK SUARANE SEMPURNA
; dbantu oleh pak kartamina - jum'at, 19 mei 2006
; PAKAI " # " P1 n P3
Input sdk P2.0 output
; C #C D
#D E F #F G
#G A B
#B C'
; ---------------------------------------------------------------------------
;
FUAD01 EQU -1118
;C"DO" nilai isi ulang 1118 SHARUSNYA
FUAD02 EQU -1052
;#C"DO_CIS" nilai isi ulang 985 SHARUSNYA
FUAD03 EQU -985
;D"RE" nilai isi ulang 879
SHARUSNYA
FUAD04 EQU -932
;#D"RE_CIS" nilai isi ulang 830 SHARUSNYA
FUAD05 EQU -879
;E"MI" nilai isi ulang 760 SHARUSNYA
FUAD06 EQU -830
;F"FA" nilai isi ulang 660
SHARUSNYA
FUAD07 EQU -795 ;#F"FA_CIS" nilai isi ulang
580 SHARUSNYA
FUAD08 EQU -730
;G_"SOL" nilai isi ulang 550 SHARUSNYA
FUAD09 EQU -710
;#G"SOL_CIS" nilai isi ulang 1118 SHARUSNYA
FUAD10 EQU -660
;A"LA" nilai isi ulang 985
SHARUSNYA
FUAD11 EQU -580
;B"SI" nilai isi ulang 879
SHARUSNYA
FUAD12 EQU -565
;#B"SI_CIS" nilai isi ulang 830 SHARUSNYA
FUAD13 EQU -520
;C"DOO" nilai isi ulang 760 SHARUSNYA
;-------------------------------------------------------------------------
ORG
0H
START:
JNB P1.0,MULAIA
JNB P1.1,MULAIB
JNB P1.2,MULAIC
JNB P1.3,MULAID
JNB P1.4,MULAIE
JNB P1.5,MULAIF
JNB P1.6,MULAIG
JNB
P1.7,MULAIH
JNB P3.0,MULAII
JNB P3.1,MULAIJ
JNB P3.2,MULAIK
JNB P3.3,MULAIL
JNB P3.4,MULAIM
SETB P2.0
JMP START
;-------------------------------------------------------------------------
MULAIA:
JMP GAPUK01
SJMP START
MULAIB:
JMP GAPUK02
SJMP START
MULAIC:
JMP GAPUK03
SJMP START
MULAID:
JMP GAPUK04
SJMP START
MULAIE:
JMP GAPUK05
SJMP START
MULAIF:
JMP GAPUK06
SJMP START
MULAIG:
JMP GAPUK07
SJMP START
MULAIH:
JMP GAPUK08
SJMP START
MULAII:
JMP GAPUK09
SJMP
START
MULAIJ:
JMP GAPUK10
SJMP START
MULAIK:
JMP GAPUK11
SJMP START
MULAIL:
JMP GAPUK12
SJMP START
MULAIM:
JMP GAPUK13
SJMP START
;-------------------------------------------------------------------------
GAPUK01: MOV TMOD,#01H ; menggunakan timer 0 mode 16 bit (0000
0001)
KALANG01: MOV TH0,#HIGH FUAD01 ; siapkan nilai isi ulang pada
MOV
TL0,#LOW FUAD01 ; TH0 dan TL0
(timer 0)
SETB
TR0 ;
hidupkan timer 0
TUNGGU01: JNB TF0, TUNGGU01 ; tunggu hingga melimpah
CLR TR0 ;
CLR TF0 ;
CPL P2.0 ;
LJMP start
;
;-------------------------------------------------------------------------
GAPUK02: MOV TMOD,#01H ; menggunakan timer 0 mode 16 bit (0000
0001)
KALANG02: MOV TH0,#HIGH FUAD02 ; siapkan nilai isi ulang pada
MOV
TL0,#LOW FUAD02 ; TH0 dan TL0
(timer 0)
SETB
TR0 ;
hidupkan timer 0
TUNGGU02: JNB TF0, TUNGGU02 ; tunggu hingga melimpah
CLR
TR0 ; hentikan timer 0
CLR
TF0 ; nol-kan flag
overflow
CPL P2.0 ; 'toggle' pada P2.0
LJMP start
; ulangi lagi dari awal
;-------------------------------------------------------------------------
GAPUK03: MOV TMOD,#01H ; menggunakan timer 0 mode 16 bit (0000
0001)
KALANG03: MOV TH0,#HIGH FUAD03 ; siapkan nilai isi ulang pada
MOV
TL0,#LOW FUAD03 ; TH0 dan TL0
(timer 0)
SETB
TR0 ;
hidupkan timer 0
TUNGGU03: JNB TF0, TUNGGU03 ; tunggu hingga melimpah
CLR
TR0 ; hentikan timer 0
CLR
TF0 ; nol-kan flag
overflow
CPL P2.0 ; 'toggle' pada P2.0
LJMP start
; ulangi lagi dari awal
;-------------------------------------------------------------------------
GAPUK04: MOV TMOD,#01H ; menggunakan timer 0 mode 16 bit (0000
0001)
KALANG04: MOV TH0,#HIGH FUAD04 ; siapkan nilai isi ulang pada
MOV
TL0,#LOW FUAD04 ; TH0 dan TL0
(timer 0)
SETB
TR0 ;
hidupkan timer 0
TUNGGU04: JNB TF0, TUNGGU04 ; tunggu hingga melimpah
CLR
TR0 ; hentikan timer 0
CLR
TF0 ; nol-kan flag overflow
CPL P2.0 ; 'toggle' pada P2.0
LJMP start ; ulangi lagi dari awal
;-------------------------------------------------------------------------
GAPUK05: MOV TMOD,#01H ; menggunakan timer 0 mode 16 bit (0000
0001)
KALANG05: MOV TH0,#HIGH FUAD05 ; siapkan nilai isi ulang pada
MOV
TL0,#LOW FUAD05 ; TH0 dan TL0
(timer 0)
SETB
TR0 ;
hidupkan timer 0
TUNGGU05: JNB TF0, TUNGGU05 ; tunggu hingga melimpah
CLR
TR0 ; hentikan timer 0
CLR
TF0 ; nol-kan flag
overflow
CPL P2.0 ; 'toggle' pada P2.0
LJMP start
; ulangi lagi dari awal
;-------------------------------------------------------------------------
GAPUK06: MOV TMOD,#01H ;
menggunakan timer 0 mode 16 bit (0000 0001)
KALANG06: MOV TH0,#HIGH FUAD06 ; siapkan nilai isi ulang pada
MOV
TL0,#LOW FUAD06 ; TH0 dan TL0
(timer 0)
SETB
TR0 ;
hidupkan timer 0
TUNGGU06: JNB TF0, TUNGGU06 ; tunggu hingga melimpah
CLR
TR0 ; hentikan timer 0
CLR
TF0 ; nol-kan flag
overflow
CPL P2.0 ; 'toggle' pada P2.0
LJMP start ; ulangi lagi dari awal
;-------------------------------------------------------------------------
GAPUK07: MOV TMOD,#01H ; menggunakan timer 0 mode 16 bit (0000
0001)
KALANG07: MOV TH0,#HIGH FUAD07 ; siapkan nilai isi ulang pada
MOV
TL0,#LOW FUAD07 ; TH0 dan TL0
(timer 0)
SETB
TR0 ;
hidupkan timer 0
TUNGGU07: JNB TF0, TUNGGU07 ; tunggu hingga melimpah
CLR
TR0 ; hentikan timer 0
CLR
TF0 ; nol-kan flag
overflow
CPL P2.0 ; 'toggle' pada P2.0
LJMP start
; ulangi lagi dari awal
;-------------------------------------------------------------------------
GAPUK08: MOV TMOD,#01H ; menggunakan timer 0 mode 16 bit (0000
0001)
KALANG08: MOV TH0,#HIGH FUAD08 ; siapkan nilai isi ulang pada
MOV
TL0,#LOW FUAD08 ; TH0 dan TL0
(timer 0)
SETB
TR0 ;
hidupkan timer 0
TUNGGU08: JNB TF0, TUNGGU08 ; tunggu hingga melimpah
CLR
TR0 ; hentikan timer 0
CLR
TF0 ; nol-kan flag
overflow
CPL P2.0 ; 'toggle' pada P2.0
LJMP start
; ulangi lagi dari awal
;-------------------------------------------------------------------------
GAPUK09: MOV TMOD,#01H ; menggunakan timer 0 mode 16 bit (0000
0001)
KALANG09: MOV TH0,#HIGH FUAD09 ; siapkan nilai isi ulang pada
MOV TL0,#LOW FUAD09 ; TH0 dan TL0 (timer 0)
SETB
TR0 ;
hidupkan timer 0
TUNGGU09: JNB TF0, TUNGGU09 ; tunggu hingga melimpah
CLR TR0 ;
CLR TF0 ;
CPL P2.0 ;
LJMP start
;
;-------------------------------------------------------------------------
GAPUK10: MOV TMOD,#01H ; menggunakan timer 0 mode 16 bit (0000
0001)
KALANG10: MOV TH0,#HIGH FUAD10 ; siapkan nilai isi ulang pada
MOV TL0,#LOW FUAD10 ; TH0 dan TL0 (timer 0)
SETB
TR0 ;
hidupkan timer 0
TUNGGU10: JNB TF0, TUNGGU10 ; tunggu hingga melimpah
CLR
TR0 ; hentikan timer 0
CLR
TF0 ; nol-kan flag
overflow
CPL P2.0 ; 'toggle' pada P2.0
LJMP
start ; ulangi lagi dari
awal
;-------------------------------------------------------------------------
GAPUK11: MOV TMOD,#01H ; menggunakan timer 0 mode 16 bit (0000
0001)
KALANG11: MOV TH0,#HIGH FUAD11 ; siapkan nilai isi ulang pada
MOV TL0,#LOW FUAD11 ; TH0 dan TL0 (timer 0)
SETB
TR0 ;
hidupkan timer 0
TUNGGU11: JNB TF0, TUNGGU11 ; tunggu hingga melimpah
CLR
TR0 ; hentikan timer 0
CLR
TF0 ; nol-kan flag
overflow
CPL
P2.0 ; 'toggle' pada
P2.0
LJMP start
; ulangi lagi dari awal
;-------------------------------------------------------------------------
GAPUK12: MOV TMOD,#01H ; menggunakan timer 0 mode 16 bit (0000
0001)
KALANG12: MOV TH0,#HIGH FUAD12 ; siapkan nilai isi ulang pada
MOV TL0,#LOW FUAD12 ; TH0 dan TL0 (timer 0)
SETB
TR0 ;
hidupkan timer 0
TUNGGU12: JNB TF0, TUNGGU12 ; tunggu hingga melimpah
CLR
TR0 ; hentikan timer 0
CLR
TF0 ; nol-kan flag
overflow
CPL P2.0 ; 'toggle' pada P2.0
LJMP start ; ulangi lagi dari awal
;-------------------------------------------------------------------------
GAPUK13: MOV TMOD,#01H ; menggunakan timer 0 mode 16 bit (0000
0001)
KALANG13: MOV TH0,#HIGH FUAD13 ; siapkan nilai isi ulang pada
MOV TL0,#LOW FUAD13 ; TH0 dan TL0 (timer 0)
SETB
TR0 ;
hidupkan timer 0
TUNGGU13: JNB TF0, TUNGGU13 ; tunggu hingga melimpah
CLR
TR0 ; hentikan timer 0
CLR
TF0 ; nol-kan flag
overflow
CPL P2.0 ; 'toggle' pada P2.0
LJMP start
; ulangi lagi dari awal
;-------------------------------------------------------------------------
END
Tidak ada komentar:
Posting Komentar