Sabtu, 01 Februari 2014

Membuat Program Mikrocontroller Organ Elektrik



 
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