Pemrograman Bit-Tunggal dan Instruksi-instruksinya

BAB 8

Sasaran

Setelah anda menamatkan bab ini , diharapkan anda dapat :

ð          Memaparkan Instruksi dalam bahasa Assembler 8051 untuk manipulasi bit.

ð          Membuat code instruksi 8051 untuk manipulasi bit pada port.

ð          Menjelaskan bagian mana dalam 8051 yang bisa dialamati bit.

ð          Menjelaskan manipulasi bit atas bendera carry.

ð          Memaparkan intruksi yang bit-relation pada bendera carry pada 8051.

 

 

Salah satu andalan yang unik dan hebat nan digjaya dari 8051 adalah operasi bit-tunggal. Instruksi bit-tunggal ini memungkinkan kepada kita untuk men-set, clear, move, dan complemet bit secara mandiri baik itu untuk port, memory, atau register. Pada bab ini ini kita akan menggali instruksi-instruksi ini dalam konteks dari beberapa contoh dan aplikasinya. Pada SubBab 8.1 kita belajar instruksi bit-tunggal yang umum. Dana pada SubBab 8.2 kita menggali instruksi bit-tunggal yang “bit-related” dengan carry.

 



 

SubBAB 8.1 Pemrograman Instruksi Bit tunggal

 

Pada kebanyakan mikroporsesor, data diakses dalam bentuk ukuran byte. Dalam hal pengalamatan byte pada Mikroprosesor, isi register, RAM, atau port, semuanya harus diakses sebagai byte. Dengan kata lain, minimum penanganan terhadap data di dalam mikroprosesor harus dilakukan dalam ukuran byte. Hal yang sama, dilakukan oleh Mikrprosesor seperti Pentium, jika kita ingin mengubah sebuah bit, kita terpaksa harus melibat semua bit-bit dalam satu byte yang bersangkutan. Namun adakalanya kita hanya ingin mengakses satu bit saja , misalnya saat kita ingin menghidupkan atau mematikan sebuah lampu. 8051 sanggup melakukannya operasi bit-tunggal itu. Kemampuan pengalamatan bit ini membuat 8051 menjadi mikroprosesor yang sangat pas untuk keperluan tersebut. Kemampuan dalam menanganan bit-tunggal dari 8051 ini, dan menjadikannya sebagai mikrokontroller 8-bit terbaik yang ada di pasaran. Bagian yang mana dari RAM, register, ROM, dll yang bisa dialamat secara bit ini ? Kita tahu bahwa ROM digunakan untuk menyimpan kode operasi yang berformat byte. Setiap opcode diwakili oleh satu byte, dan beberapa diantaranya ditambah dengan beberapa operand dan alamat relatif yang kesemuaya juga dalam bentuk byte. Dengan alasan ini, kemampuan pengalamat bit dalam ROM menjadi tidak berguna, oleh karena itu dalam 8051, ROM tidak dimasukkan di dalamnya, yaitu sebagai bagian yang bisa dialamati bit. Selebihnya beberapa lokasi RAM, beberapa register, dan port I/O dibuat untuk bisa dialamati secara bit. Kesemuanya akan dibahas satu per satu.

 

Instruksi Bit-Tunggal

 

Instruksi-instruksi untuk operasi bit-tunggal dapat kita lihat  dalam Table 8.1. Dalam SubBab ini kita akan menbahas instruksi tersebut dan memberikan contoh penggunaannya. Intruksi bit-tunggal yang hanya berpengaruh untuk CY akan dibahas di bagian lain.

 

Tabel 8.1 Instruksi-instruksi Bit Tunggal

Instruksi          keterangan

SETB bit           Men-set bit (bit=1)

CLR  bit           men-clear bit (bit=0)

CPL  bit           complement bit ( bit = NOT bit)

JB   bit,target    Lompat ke target jika bit = 1 (jumop if bit)

JNB  bit,target    Lompat ke target jika bit = 1 (jumop if bit)

JNC  bit,target    Lompat ke target dan clear bit,jika bit = 1 (jumop if bit)

 

 

Port I/O dan Kemampuan Pengalamatan-Bit

 

8051 memiliki 4 port, masing-masing port disebut sebagai P0, P1, P2, dan P3. Kita dapat mengakses port-port ini sebagai 8-bit, maupun sebagai bit tunggal tanpa mempengauhi bit-bit yang lain. Saat kita hendak mengakses satu bit dalam port tersebut kita dalam menggunakan perintah seperti “SETB X.Y”, dimana X dapat berupa P0, P1, P2, atau P3. Sedang Y adalah nomor bit yang dibutuhkan yaitu diantara 0 s/d 7 untuk data bit D0 s/d D7. Contohnya, ” SETB P1.5″, yaitu men-Set bit ke-5 dari Port P1. Ingat D0 adalah LSB dan D7 adalah MSB. Liihat contoh 8-1.

 

 

Contoh 8-1

 

Tulis program berikut.

(a)    Buat gelombang kotak dengan siklus kerja 50% pada bit-0 dari P1.

(b)    Buat gelombang kotak dengan siklus kerja 66% pada bit-3 dari P1.

 

Jawaban:

 

(a) siklus kerja 50% berarti lama status “on” dan “off” (atau high atau low) memiliki panjang yang sama.Selanjutnya kita akan men-toggle P1.0 yang ditambahkan Tundaan untuk setiap state-nya.

 

ULANG:      SETB  P1.0       ;Set tinggi untuk bit 0 dari port 1

            LCALL DELAY      ;Panggil Tundaan

            CLR   P1.0       ;Reset menjadi rendah

            LCALL DELAY      ;Panggil Tundaan

            SJMP ULANG       ;Terus kerjakan

 

Cara lain dalam penulisan program adalah sebagai berikut.

 

ULANG:      CPL   P1.0       ;buat Complement dari P1.0

            LCALL DELAY      ;Panggil Tundaan

            SJMP ULANG       ;Terus kerjakan

 

 

(b) Sedang siklus kerja 66%, berarti status “on” memiliki lama sebanyak 2 kali dari status “off”.

 

ULANG:      SETB  P1.3       ;Set tinggi untuk bit 3 dari port 1

            LCALL DELAY      ;Panggil Tundaan

            LCALL DELAY      ;Panggil Tundaan 2 kali

            CLR   P1.3       ;Reset menjadi rendah

            LCALL DELAY      ;Panggil Tundaan

            SJMP ULANG       ;Terus kerjakan

 

 

 

 

Harap dicatat saat ada instruksi seperti “SETB P1.0” di kompilasi, instruksi tersebut akan otomatis diubah menjadi “SETB 90h” karena P1.0 memiliki alamat bit 90h. Dari gambar 8.1 kita melihat bahwa alamat bit dari P1 adalan 90h s/d 97h, dan seterusnya. Gambar 8.1 juga menunjukkan semua register yang bisa dialamati bit.

 

Tabel 8-2 Port-port yang bisa dialamati-bit

P0          P1          P2          P3          Bit Port

P0.0        P1.0        P2.0        P3.0        D0

P0.1        P1.1        P2.1        P3.1        D1

P0.2        P1.2        P2.2        P3.2        D2

P0.3        P1.3        P2.3        P3.3