Pages

Jumat, 13 April 2012

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

Tidak ada komentar:

Posting Komentar

Silahkan berkomentar !