Anda di halaman 1dari 24

FAKULTAS TEKNOLOGI KOMUNIKASI DAN INFORMATIKA

UNIVERSITAS NASIONAL
SPESIFIKASI PERALATAN
HARDWARE
- PC Minimal P3-450 atau Laptop
- Modul Mikrokontroller (Dz - USB AVR+MCS ISP MKII) + Kabel Downloader

SOFTWARE
- Sistem Operasi Windows (98, Me atau XP SP2)
- Topview Simulator

SPESIFIKASI MIKROKONTROLLER (MCS-51)

Mikrokontroller AT89XX (MCS-51) memiliki spesifikasi sebagai berikut :


• 4 x 8 bit port I/O
• RAM internal 128 bytes
• Memiliki 2 buah Timer

• 1 buah port serial

• 5 sumber kendali interupsi


• Memiliki register-register fungsi khusus (SFR)
Susunan pin-pin dari mikrokontroller AT89XX dapat dilihat dari gambar berikut.

Konfigurasi PIN Mikrokontroller AT89XX


1. Kode Instruksi Mikrokontroller Type MCS-51 (256 Kode Instruksi)
A. Pemindahan Data
Menyalin data dari suatu lokasi (sumber) ke lokasi lain (tujuan), tanpa terjadi perubahan isi data
pada lokasi sumber. Contoh : Mov
B. Aritmatika
Melaksanakan operasi aritmatika, meliputi penjumlahan, pengurangan, penambahan satu
(increment), pengurangan satu (decrement), perkalian dan pembagian.
Contoh : ADD, SUBB, INC, DEC
C. Logika dan Manipulasi Bit
Melaksanakan operasi-operasi logika pada accumulator dan manipulasi bit.
Contoh : AND, OR, CPL.
D. Percabangan
Mengubah urutan pelaksanaan program. Instruksi ini dibedakan atas percabangan bersyarat
(Contoh : CJNE) dan percabangan tanpa syarat (Contoh : ACALL).
E. Stack, I/O, dan Kontrol
Mengatur penggunaan stack, baca/tulis I/O, serta pengontrolan.

2. Teknik Pengalamatan Mikrokontroller


a. Pengalamatan Langsung
Teknik pengalamatan langsung dilakukan dengan memberikan nilai ke suatu register secara
langsung. Pengalamatan langsung menggunakan simbol ”#”.
Contoh instruksi : MOV A,#01H
b. Pengalamatan Tidak Langsung
Teknik pengalamatan tidak langsung menunjuk ke sebuah register yang berisi lokasi alamat
memori yang akan digunakan dalam operasi. Lokasi yang sebenarnya tergantung pada isi register
saat instruksi dijalankan. Pengalamatan tidak langsung menggunakan simbol ”@”.
Contoh instruksi: ADD A,@R0
MOV @R0,#30H
c. Pengalamatan Bit
Teknik pengalamatan bit adalah penunjukkan alamat lokasi memori secara bit. Untuk melakukan
pengalamatan bit digunakan simbol titik ”.”.
Contoh instruksi: SETB P2.0 atau CLR P2.1
3. Perangkat Instruksi Mikrokontroller
1. ACALL (Absolute Call)
Instruksi ini digunakan untuk memanggil sub-sub rutin program
Format :
ACALL (alamat kode)
2. ANL (Logical AND Immediate Data)
Instruksi ini sebagai instruksi gerbang logika and, yang berfungsi sebagai
pengali data terhadap nilai yang ditentukan.
Format :
ANL A,#DATA
Contoh : ANL A,#0001000B
Ini berarti data acumulator akan dikalikan dengan 00010000 Biner
- Jika A bernilai 11100001 maka hasilnya adalah 00000000
- Jika A bernilai 11110001 maka hasilnya adalah 00010000
3. CJNE (Compare Indirect Address to Immediate Data)
Instrksi ini akan membandingkan data langsung dengan lokasi memori
yang dialamati oleh register R atau Akumulator A. apabila tidak sama
maka instruksi akan menuju ke alamat kode.
Format :
CJNE R,#data,Alamat kode atau CJNE A,#data,Alamat kode
4. CLR (Clear Accumulator)
Instruksi ini akan mereset data akumulator menjadi 00H.
Format :
CLR A
5. DEC (Decrement Indirect Address)
Instruksi ini akan mengurangi isi lokasi memori yang ditujukan oleh
register R dengan 1, dan hasilnya disimpan pada lokasi tersebut.
6. DJNZ (Decrement Register And Jump Id Not Zer)
Instruksi ini akan mengurangi nilai register dengan 1 dan jika hasilnya
sudah 0 maka instruksi selanjutnya akan dieksekusi. Jika belum 0 akan
menuju ke alamat kode.
Format : DJNZ Rr,Alamat Kode
7. INC (Increment Indirect Address)
Instruksi ini akan menambahkan isi memori dengan 1 dan menyimpannya
pada alamat tersebut.
Format : INC Rr
8. JB (Jump if Bit is Set)
Instruksi ini akan membaca data per satu bit, jika data tersebut adalah 1
maka akan menuju ke alamat kode dan jika 0 tidak akan menuju ke alamat
kode.
Format : JB alamat bit,alamat kode
9. JNB (Jump if Bit is Not Set)
Instruksi ini akan membaca data per satu bit, jika data tersebut adalah 0
maka akan menuju ke alamat kode dan jika 1 tidak akan menuju ke alamat
kode.
Format : JNB alamat bit,alamat kode
10. JMP (Jump to sum of Accumulator and Data Pointer)
Instruksi untuk memerintahkan loncat kesuato alamat kode tertentu.
Format : JMP alamat kode.
11. MOV
Instruksi ini untuk memindahkan isi akumulator/register atau data dari nilai
luar atau alamat lain.
Format :
- MOV a,#data (Memindahkan data ke accumulator)
- MOV R,A (Memindahkan Accumulator ke Register)
- MOV Px,Px (Memindahkan data port ke port)
12. ORL (Logical OR Immediate Data to Accumulator)
Instruksi ini sebagai instruksi Gerbang logika OR yang akan
menjumlahkan Accumulator terhadap nilai yang ditentukan.
Format : ORL A,#data
Contoh : ORL A,#0001000B
Ini berarti data acumulator dijumlahkan dengan 00010000 Biner
- Jika A bernilai 11100001 maka hasilnya adalah 11110001
- Jika A bernilai 11110001 maka hasilnya adalah 11110001
13. RET (Return from subroutine)
Intruksi untuk kembali dari suatu subrutin program ke alamat terakhir
subrutin tersebut di panggil.
Format : RET
14. SETB (Set Bit)
Instruksi untuk mengaktikan atau memberikan logika 1 pada sebuat bit
data.
Format : SETB P1.1 (memberikan logika 1 pada Port 1 bit ke 1)
15. CLRB (Clear Bit)
Instruksi untuk memberikan logika 0 pada sebuat bit data.
Format : CLR P1.1 (memberikan logika 0 pada Port 1 bit ke 1)
4. Struktur Program Assembler
$Mod51
Org 00h




End
* Beberapa contoh aplikasi menggunakan LED (output)
• Program membuat 1 bit LED berkedip
$Mod51
Org 00h
Start:
Setb P2.0
Acall Two_Seconds_Delay
Clr P2.0
Acall Two_Seconds_Delay
Ajmp Start
$Include(Tunda.asm)
End
• Program membuat 2 kelompok LED berkedip
$Mod51
Org 00h
Start:
Mov P2,#00001111b
Acall Two_Seconds_Delay
Mov P2,#11110000b
Acall Two_Seconds_Delay
Ajmp Start
$Include(Tunda.asm)
End
• Program lampu LED berjalan
$Mod51
Org 00h
Start:
Mov A,#01111111b
Loop:
Mov P2,A
RL A
Acall Long_Delay
Ajmp Loop
$Include(Tunda.asm)
End
* Beberapa contoh aplikasi menggunakan Tombol (input)
• Program membaca input secara 1 Bit
$Mod51
Org 00h
Start:
Setb P2.0
Loop:
Jb P3.0,Start
Clr P2.0
Ajmp Loop
End
• Program membaca input secara 1 Byte
$Mod51
Org 00h
Start:
Mov P2,P3
Ajmp Start
End
• Program ON/OFF dengan 1 Tombol
$Mod51
Org 00h
Start:
Jb P3.0,$
Clr P2.0
Jnb P3.0,$
Acall Long_Delay
Jb P3.0,$
Setb P3.0
Jnb P3.0,$
Acall Long_Delay
Ajmp Start
$Include(Tunda.asm)
End
5. Cara membuat prosedur penundaan waktu (Delay)
Untuk membuat prosedure penundaan waktu dapat memanfaatkan pengurangan
nilai sebuah register, kita ketahui bahwa untuk 1 step program (siklus mesin) yang
dilakukan mikrokontroller adalah (Nilai Kristall / 12MHZ) sehingga jika kita
menggunakan nilai kristal 11,0592Mhz maka untuk satu siklus mesin
membutuhkan waktu 0.9216 uS.
;=====================================================
;Procedure penundaan waktu selama 255usx255us
;=====================================================
Long_Delay: ; Label Long_Delay
Mov R7,#0FFh ; Isikan Register 7 dengan data 0FFH(255)
Long_Delay_1: ; Label Long_Delay
Acall Delay ; Panggil Prosedure Delay
Djnz R7,Long_Delay_1 ;Kurangi Nilai Register7 (R7) dengan 1 jika belum sama
dengan 0 loncat ke prosedure Long_Delay_1
Ret
Delay: ; Label Delay
Mov R6,#0FFh ; Isikan Register 6 (R6) dengan data 0FFH (255)
Djnz R6,$ ; Kurangi Nilai Register6 (R6) dengan 1 jika belum
sama dengan 0 Terus kurangi. (waktu akan tertunda
selama 255 us)
Ret
6. Langkah-langkah mempergunakan software Topview Simulator

Membuka Program Notepad


Membuat file assembler baru

Menjalankan program Topview simulator


Melakukan setting Mikrokontroller

Setting memori Mikrokontroller


Tampilan Topview setelah melakukan setting Mikrokontroller
Proses mengambil file assembler

Open file assembler


Tampilan program assembler

Mengcompile program
Melakukan setting simulator

Setting Led dan 7 segment


Mengambil *.Hex program

Menampilkan simulator Led dan 7 segment

Tampilan simulator
Menjalankan simulator

Mematikan simulator

7. Program menghidupkan display 7 segment


VCC
VCC

40
10k
U?
39 1 a

VC C
P00 P10
38 2 b
P01 P11
37 3 c
P02 P12
36 4 d
P03 P13
35 5 e
P04 P14
34 6 f
P05 P15
33 7 g
P06 P16
32 8 Dp
P07 P17
Com
21 10
P20 P30/RXD
22 11 7SEG
P21 P31/TXD
23 12
P22 P32/INT0
24 13
P23 P33/INT1
25 14
P24 P34/T0
26 15
P25 P35/T1
27 16
P26 P36/W R VCC
28 17
P27 P37/RD

19
X1
31 U?
VCC EA/VP
18
X2
30
GND

ALE/P
29 9 CRYSTAL
PSEN RESET

89C51
20

VCC
10K
1uF

Rangkaian 7 Segment
Tabel Susunan pin 7segment terhadap port mikrokontroller:
Tampilan PX.7 PX.6 PX.5 PX.4 PX.3 PX.2 PX.1 PX.0
Dot g f e d c b a Hex
Digit
0 1 1 0 0 0 0 0 0 C0H
1 1 1 1 1 1 0 0 1 F9H
2 1 0 1 0 0 1 0 0 A4H
3 1 0 1 1 0 0 0 0 B0H
4 1 0 0 1 1 0 0 1 99H
5 1 0 0 1 0 0 1 0 92H
6 1 0 0 0 0 0 1 0 82H
7 1 1 1 1 1 0 0 0 F8H
8 1 0 0 0 0 0 0 0 80H
9 1 0 0 1 0 0 0 0 90H
Program menampilkan digit ”0” s/d ”9” pada modul 7 segment.
$Mod51
Start:
Clr P0.1
Loop:
Mov P1,#11000000b ; Menampilkan Angka 0
Acall Two_Seconds_Delay
Mov P1,#111111001b ; Menampilkan Angka 1
Acall Two_Seconds_Delay
Mov P1,#10100100b ; Menampilkan Angka 2
Acall Two_Seconds_Delay
Mov P1,#10110000b ; Menampilkan Angka 3
Acall Two_Seconds_Delay
Mov P1,#10011001b ; Menampilkan Angka 4
Acall Two_Seconds_Delay
Mov P1,#10010010b ; Menampilkan Angka 5
Acall Two_Seconds_Delay
Mov P1,#10000010b ; Menampilkan Angka 6
Acall Two_Seconds_Delay
Mov P1,#11111000b ; Menampilkan Angka 7
Acall Two_Seconds_Delay
Mov P1,#10000000b ; Menampilkan Angka 8
Acall Two_Seconds_Delay
Mov P1,#10010000b ; Menampilkan Angka 9
Acall Two_Seconds_Delay
Jmp Loop
$Include(Tunda.asm)
End

Program menampilkan digit dengan mode scaning.


VCC

40
U? U? U? U? U? U? U? U?
P00 39 1 a a a a a a a a
P00 P10

VC C
P01 38 2 b b b b b b b b
P01 P11
P02 37 3 c c c c c c c c
P02 P12
P03 36 4 d d d d d d d d
P03 P13
P04 35 5 e e e e e e e e
P04 P14
P05 34 6 f f f f f f f f
P05 P15
P06 33 7 g g g g g g g g
P06 P16
P07 32 8 Dp Dp Dp Dp Dp Dp Dp Dp
P07 P17
Com Com Com Com Com Com Com Com
21 10
P20 P30/RXD
22 11 7SEG 7SEG 7SEG 7SEG 7SEG 7SEG 7SEG 7SEG
P21 P31/TXD
23 12
P22 P32/INT0
24 13
P23 P33/INT1
25 14
P24 P34/T0
26 15 4k7 4k7 4k7 4k7 4k7 4k7 4k7 4k7
P25 P35/T1
27 16
P26 P36/W R
28 17 VCC VCC VCC VCC VCC VCC VCC VCC
P27 P37/RD
P 00

P 01

P 02

P 03

P 04

P 05

P 06

P 07
19
X1
31
VCC EA/VP
18
X2
30
ALE/P
GND

29 9 11,059200
PSEN RESET 33p 33p

89C51
20

VCC
10K
1uF

Apa itu Scaning Mode?


Scaning mode merupakan sistem pengiriman data kepada beberapa alamat secara bergantian.
Pada modul tujuh-51 sistem scaning dimanfatkan untuk mengirimkan data kepada 8 buah sevent
segment.

Dengan mengatur penundaan waktu pengiriman data yang pas, maka akan menimbulkan efek
seolah-olah sevent segmen aktif dalam waktu yang bersamaan.

Bagaimana caranya?
Untuk menampilkan angka 123 pada segmen 0-2 prosesnya adalah sebagai berikut:

 kirim data 1 ke seven segment dan aktifkan common segment 1


 tunda waktu
 kirim data 2 ke seven segment dan aktifkan common segment 2
 tunda waktu
 kirim data 3 ke seven segment dan aktifkan common segment 3
 tunda waktu
langkah tersebut diatas harus likakukan terus dan berulang.
Program Menampilkan angka 1,2,3,4 pada display scaning
$Mod51
Start:
Loop:
Mov P0,#11111110b ;Mengaktifkan Common display 1
Mov P1,#0F9h ;Menampilkan Angka 1
Acall Delay
Mov P0,#11111101b ;Mengaktifkan Common display 2
Mov P1,#0A4h ;Menampilkan Angka 2
Acall Delay
Mov P0,#11111011b ;Mengaktifkan Common display 3
Mov P1,#0B0h ;Menampilkan Angka 3
Acall Delay
Mov P0,#11110111b ;Mengaktifkan Common display 4
Mov P1,#99h ;Menampilkan Angka 4
Acall Delay
Jmp Loop
$Include(Tunda.asm)
End
Lampiran

Langkah membuat program

Kapasitas memori Mikro type AT89xx


File Tunda.asm berisi ?

;--- SUBROUTINE PROGRAM DELAY ---

Two_Seconds_Delay:

Mov R5,#0Ah ;PINDAHKAN DATA 0Ah KE REGISTER 5

Two_Seconds_Delay_1:

Acall Long_Delay ;PANGGIL SUB RUTIN LONG DELAY

Djnz R5,Two_Seconds_Delay_1 ;KURANGI DATA R5 DENGAN 1,JIKA


HASILNYA TIDAK "0" LOMPAT KE SUB RUTIN TWO SECONDS DELAY 1

Ret ;KEMBALI KE YANG "ACALL" SUB RUTIN TWO


SECONDS DELAY

Long_Delay:

Mov R7,#0FFh ;PINDAHKAN DATA 0FFh KE REGISTER 7

Long_Delay_1:

Acall Delay ;PANGGIL SUB RUTIN DELAY

Djnz R7,Long_Delay_1 ;KURANGI DATA R7 DENGAN 1,JIKA HASILNYA


TIDAK "0" LOMPAT KE SUB RUTIN LONG DELAY 1

Ret ;KEMBALI KE YANG "ACALL" SUB RUTIN LONG


DELAY

Delay:

Mov R6,#0FFh ;PINDAHKAN DATA 0FFh KE REGISTER 6

Djnz R6,$ ;KURANGI DATA R6 DENGAN 1,JIKA HASILNYA


TIDAK "0" LOOPING DITEMPAT

Ret ;KEMBALI KE YANG "ACALL" DELAY

Anda mungkin juga menyukai