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