Anda di halaman 1dari 7

MIKROKONTROLER AT89C51

AT89C51 adalah mikrokontroler keluaran atmel dengan 4K byte Flash PEROM


(programmable and erasable Read Only Memory), AT89C51 merupakan memori dengan
teknologi non volatile memory ( program/data tidak akan hilang meskipun catudaya di
putus ) . Isi memori tersebut dapat diisi ulang dan dihapus berkali-kali dengan batas
maximal 10000 kali.
Memori ini biasa digunakan untuk menyimpan instruksi (perintah) berstandar
MCS-51 code sehingga memungkinkan mikrokontroler ini untuk bekerja dalam mode
single chip operation (mode operasi keping tunggal) yang tidak memerlukan external
memory (memori luar) untuk menyimpan source code tersebut.
Mikrokontroler tepat digunakan untuk aplikasi aplikasi :
1) Memantau environment : proses input
2) Menghasilkan respon (keluaran), proses output
3) Respon yang berhubungan dengan waktu , timer/counter
4) Respons yang mengandung prioritas , interupsi
5) Software untuk mengontrol proses , memori non – volatil
6) Data sementara RAM
Bentuk dari mikrokontroler AT89C51
Mikrokontroler mempunyai fungsi fungsi khusus:
1. 2 buah timer/counter ( masing –masing terdiri dari 16 bit)
2. interupsi
3. serial

AT89C51 memiliki struktur memori yang terdiri atas:


1. RAM internal, yaitu memori sebesar 128 byte yang bisa digunakan untuk menyimpan
variabel atau data yang bersifat sementara.
2. Register Fungsi Khusus (Special Function Register), memori yang berisi register-
register yang mempunyai fungsi khusus yang disediakan oleh mikrokontroler seperti
timer, serial, port 0 sampai port 3 dan lain-lain.
3. Flash PEROM (Programmable Erasable Read Only Memory), memori yang digunakan
untuk menyimpan instruksi-instruksi MCS51 yang kapasitasnya 4 Kilo Byte.

Dasar Pemrograman MCS51

Program pengendali mikrokontroler disusun dari kumpulan instruksi-


instruksi.Instruksi tersebut setara dengan kalimat perintah bahasa manusia yang hanya
terdiri atas predikat dan objek. Dengan demikian tahap pertama pembuatan program
pengendali mikrokontroler dimulai dengan pengenalan dan pemahaman predikat (kata
kerja) dan objek apa saja yang dimiliki mikrokontroler.

Objek dalam pemrograman mikrokontroler adalah data yang tersimpan di dalam


memori, register dan input/output. Sedangkan ‘kata kerja’ yang dikenal pun secara umum
dikelompokkan menjadi perintah untuk perpindahan data, arithmetik, operasi logika,
pengaturan alur program dan beberapa hal khusus. Kombinasi dari ‘kata kerja’ dan objek
itulah yang membentuk perintah pengatur kerja mikrokontroler.

Intruksi MOV A,$7F merupakan contoh sebuah intruksi dasar yang sangat
spesifik, MOV merupakan ‘kata kerja’ yang memerintahkan peng-copy-an data,
merupakan predikat dalam kalimat perintah ini. Sedangkan objeknya adalah data yang di-
copy-kan, dalam hal ini adalah data yang ada di dalam memori nomor $7F di-copy-kan
ke Akumulator A.

Penyebutan data dalam MCS51

Data bisa berada diberbagai tempat yang berlainan, dengan demikian dikenal
beberapa cara untuk menyebut data (dalam bahasa Inggris sering disebut sebagai
‘Addressing Mode’), antara lain sebagai berikut:

 Penyebutan data konstan (immediate addressing mode): MOV A,#$20. Data


konstan merupakan data yang berada di dalam instruksi. Contoh instruksi ini mempunyai
makna data konstan $20 (sebagai data konstan ditandai dengan ‘#’) di-copy-kan ke
Akumulator A. Yang perlu benar-benar diperhatikan dalam perintah ini adalah bilangan
$20 merupakan bagian dari instruksi
   Penyebutan data secara langsung (direct addressing mode), cara ini dipakai
untuk menunjuk data yang berada di dalam memori dengan cara menyebut nomor
memori tempat data tersebut berada : MOV A,$30. Contoh instruksi ini mempunyai
makna data yang berada di dalam memori nomor $30 di-copy-kan ke Akumulator

Sekilas intruksi ini sama dengan instruksi data


konstan di atas, perbedaannya instruksi di atas memakai
tanda ‘#’ yang menandai $20 adalah data konstan, sedangkan
dalam instruksi ini karena tidak ada tanda ‘#’ maka $30
adalah nomor dari memori.

 Penyebutan data secara tidak langsung (indirect addressing mode), cara ini
dipakai untuk menunjuk data yang berada di dalam memori, kalau memori penyimpan
data ini letaknya berubah-rubah sehingga nomor memori tidak disebut secara langsung
tapi di-‘titip’-kan ke register lain : MOV A,@R0.

Dalam instruksi ini register serba guna R0 dipakai untuk mencatat nomor memori,
sehingga instruksi ini mempunyai makna memori yang nomornya tercatat dalam R0
isinya di-copy-kan ke Akumulator A.

Tanda ‘@’ dipakai untuk menandai nomor memori disimpan di dalam R0.

Bandingkan dengan instruksi penyebutan nomor memori secara langsung di atas,


dalam instruksi ini nomor memori terlebih dulu disimpan di R0 dan R0 berperan
menunjuk memori mana yang dipakai, sehingga kalau nilai R0 berubah memori yang
ditunjuk juga akan berubah pula.

Dalam instruksi ini register serba guna R0 berfungsi dengan register penampung
alamat (indirect address register), selain R0 register serba guna R1 juga bisa dipakai
sebagai register penampung alamat.

 Penyebutan data dalam register (register addressing mode): MOV A,R5. Instruksi
ini mempunyai makna data dalam register serba guna R5 di-copy-kan ke Akumulator A.
Instruksi ini membuat register serba guna R0 sampai R7 sebagai tempat penyimpan data
yang sangat praktis yang kerjanya sangat cepat.

SISTEM BILANGAN

Pendahuluan
Untuk mempelajari bahasa assembler, harus memahami konsep
bilangan,
karena berhubungan dalam pengaksesan ke port atau mengetahui pengkodean
ASCII.
Sistem Bilangan adalah kumpulan angka yang membentuk suatu sistem
peredaran tertentu.
Jenis bilangan :
1. Sistem Bilangan Biner
2. Sistem Bilangan Oktaf
3. Sistem Bilangan Desimal
4. Sistem Bilangan Hexadesimal

Sistem Bilangan Biner


Komputer memproses data atau program dari memori komputer berupa
sejumlah bilangan biner yang menyatakan dalam keadaan hidup atau mati
(on or off) dengan angka 1 dan 0. Sehingga semua yang diproses komputer
hanya angka 0 dan 1, sehingga sistem biner (bilangan berdasar 2)
sangatlah penting. Cara mengkonversi bilangan biner ke bilangan desimal

adalah dengan mengalikan dua dengan pangkat N (suku ke-N).

Contoh :

· Angka 11010 bilangan desimalnya adalah :


( 1 x 24 ) + ( 1 x 23 ) + ( 0 x 22 ) + ( 1 x 21 ) + ( 0 x 20 ) = 26
16 + 8 + 0 + 2 + 0
· Angka 110111 bilangan desimalnya adalah :
( 1 x 25 )+( 1 x 24 )+( 0 x 23 )+( 1 x 22 )+ ( 1 x 21 )+( 1 x 20 ) = 55
32 + 16 + 0 + 4 + 2 + 1

Operasi tambah pada sistem biner


Aturan operasi tambah :
Bilangan pertama Bilangan kedua Hasil
0 0 00
1 0 01
0 1 01
1 1 11

Contoh :

· Biner 1110001 + 1011000 = 11001001


Desimal 113 + 89 = 201

· Biner 1010100 + 1111100 = 11010000


Desimal 84 + 124 = 208
Hal-hal penting : ( Konsep ini mohon dihapalkan!!!!!!!)
· Setiap digit bilangan biner disebut satu bit
· Setiap empat digit bilangan biner disebut satu nibble
· Setiap delapan digit bilangan biner disebut satu byte
· Setiap enambleas digit bilangan biner disebut satu word
· Setiap tiga puluh dua digit bilangan biner disebut satu double word
· Setiap 128 digit bilangan biner disebut satu para
· Setiap 256 byte (2048 bit) disebut satu page (halaman).

Sistem Bilangan Oktal


Merupakan bilangan berdasar 8, terdiri angka 0, 1, 2, 3, 4, 5, 6, dan 7
serta jarang digunakan. Konversi bilangan oktal ke desimal mempunyai
cara yang sama bila anda melakuka konversi bilangan biner ke desimal,
hanya saja menggunakan dasar delapan.

Contoh :
· 355 bilangan oktal ke desimal :
( 3 x 82 )+ ( 5 x 81 ) + ( 5 x 80 )
192 + 40 + 5 = 237 Desimal

· 204 bilangan oktal ke desimal :


(2 x 82 ) + ( 0 x 81 ) + ( 4 x 80 )
128 + 0 + 4 = 132 Desimal

Sistem Bilangan Desimal


Jenis bilangan yang umum dipakai dalam kehidupan sehari-hari yang
menggunakan 10 simbol dasar (digits), yaitu : 0, 1, 2, 3, 4, 5, 6, 7,
8, dan 9.
Contoh :
· Angka 3932 dengan dasar 10, maka :
3932 = ( 3 x 103 ) + ( 9 x 102 ) + ( 3 x 101 ) + ( 2 x 100 )

· Angka 4532 dengan dasar 10, maka :


4532 = ( 4 x 103 ) + ( 5 x 102 ) + ( 3 x 101 ) + ( 2 x 100 )

Sistem Bilangan Hexadesimal


Bilangan yang mutlak dipahami dalam memakai bahasa Assembler. Hal ini
disebabkan berbagai perintah assembler baik dalam program yang digunakan
dengan utility 'DEBUG' (DOS) dan 'COMPILER TURBO ASSEMBLER'.
Terdiri 16 bilangan, yaitu 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. (Hexa = 6 ;
Desimal = 10).
Cara mengkonversi bilangan desimal ke bilangan hexadesimal :
· 3A bilangan desimalnya adalah :
( 3 x 161 ) + ( A x 160 )
48 + 10 = 58 Desimal
· A341 bilangan desimalnya adalah :
( 10 x 163 ) + ( 3 x 162 ) + ( 4 x 161 ) + ( 1 x 160 )
40960 + 768 + 64 + 1 = 41793 Desimal
Tabel Hexadecimal Digits and Binary Equivalent

Hex Digits Binary


0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111

1 Kilobyte (1 KB) = 1024 = 400h


64 Kilobytes (64 KB) = 65536 = 10000h
1 Megabyte (1 MB) = 1,048,576 = 100000h

Bentuk-bentuk Konversi
8 A 2 D h = 8 x 163 + A x 162 + 2 x 161 + D x 160
= 8 x 163 + 10 x 162 + 2 x 161 + 13 x 160
= 35373 Desimal

1 1 1 0 1 b = 1 x 24 + 1 x 23 + 1 x 22 + 0 x 21 + 1 x 20
= 29 Desimal

REFERENSI

Paulus Andi Nalwan.2003.Panduan praktis Teknik Antar Muka dan


Pemrograman Mikrokontroler AT89C51.Penerbit PT elex media komputindo
Gramedia ; Jakarta

Anda mungkin juga menyukai