Jumat, 04 Juni 2010

Membuat Delay Satu Detik Untuk Mikrokontroler MCS51 Dengan Bahasa Assembly

PERHITUNGAN & TIMING DIAGRAM MACHINE CYCLES

    Machine Cycle atau siklus mesin merupakan satuan waktu terkecil dalam menjalankan satu instruksi MCS51. Satu machine cycle terdiri atas enam state atau tahap. Masing-masing tahap terdiri dan 2 phase atau fase. Jadi, satu machine cycle terdiri dan 12 periode osilator (6 state x 2 phase) atau 12 pulsa clock. Jika frekuensi crystal yang digunakan adalah 12 MHz, maka crystal tersebut akan mengeluarkan 12.000.000 pulsa per detik. Hal ini berarti dalam satu detik akan ada 1.000.000 (12.000.000/12) machine cycle. Atau dengan kata lain, satu machine cycle akan memakan waktu satu mikro detik. Jika frekuensi crystal yang digunakan lebih tinggi, maka akan ada lebih banyak machine cycle dalam satu detik sehingga lebih banyak instruksi/opcode yang dapat dijalankan.

Gambar.1 Satu Siklus Mesin

Dan untuk lebih mudahnya kita akan membuat program tundaan satu detik dengan bahasa assembly. Perhatikan listing program berikut ini

        MOV    R1,#2        ; 1 SIKLUS MESIN
DEL1    :    MOV    R2,#244    ; 1 SIKLUS MESIN
DEL2    :    MOV    R3,#255    ; 1 SIKLUS MESIN
DEL3    :    DJNZ R3,DEL3    ; 2 SIKLUS MESIN X 255
        DJNZ R2,DEL2    ; 2 SIKLUS MESIN X 244
        DJNZ R1,DEL    ; 2 SIKLUS MESIN X 2

Dari program diatas kita dapat melihat ada dua buat Op-Code yang kita gunakan yakni MOV dan DJNZ. Masing-masing op-code tersebut memiliki siklus mesin namun berbeda. MOV memiliki 1 siklus mesin sedankan DJNZ memiliki 2 Siklus Mesin. Dan untuk perhitungan Waktunya kita menggunakan Persamaan:
Delay    = [ siklus mesin MOV+ (siklus mesin DJNZ x jumlah Putaran) ] x perioda clock
    = [ 1 + ( 1 + ( 1 + ( 2 x 255 ) ) x ( 2 x 244 ) ) x ( 2 x 2 ) ] x 1 mikrosekon
    = 997477 mikrosekon
    = 1 detik





1 komentar:

Need Your Comments, Please !!!