Anda di halaman 1dari 24
FAKULTAS TEKNOLOGI KOMUNIKASI DAN INFORMATIKA UNIVERSITAS NASIONAL

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.

Susunan pin-pin dari mikrokontroller AT89XX dapat dilihat dari gambar berikut. Konfigurasi PIN Mikrokontroller AT89XX

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 :

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:

MOV A,#01H

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

6. Langkah-langkah mempergunakan software Topview Simulator Membuka Program Notepad

Membuka Program Notepad

Membuat file assembler baru Menjalankan program Topview simulator

Membuat file assembler baru

Membuat file assembler baru Menjalankan program Topview simulator

Menjalankan program Topview simulator

Melakukan setting Mikrokontroller Setting memori Mikrokontroller

Melakukan setting Mikrokontroller

Melakukan setting Mikrokontroller Setting memori Mikrokontroller

Setting memori Mikrokontroller

Tampilan Topview setelah melakukan setting Mikrokontroller

Tampilan Topview setelah melakukan setting Mikrokontroller

Tampilan Topview setelah melakukan setting Mikrokontroller

Proses mengambil file assembler

Proses mengambil file assembler Open file assembler

Open file assembler

Proses mengambil file assembler Open file assembler

Tampilan program assembler

Tampilan program assembler Mengcompile program

Mengcompile program

Tampilan program assembler Mengcompile program

Melakukan setting simulator

Melakukan setting simulator Setting Led dan 7 segment

Setting Led dan 7 segment

Melakukan setting simulator Setting Led dan 7 segment

Mengambil *.Hex program

Mengambil *.Hex program Menampilkan simulator Led dan 7 segment Tampilan simulator

Menampilkan simulator Led dan 7 segment

Mengambil *.Hex program Menampilkan simulator Led dan 7 segment Tampilan simulator

Tampilan simulator

Menjalankan simulator Mematikan simulator 7. Program menghidupkan display 7 segment

Menjalankan simulator

Menjalankan simulator Mematikan simulator 7. Program menghidupkan display 7 segment

Mematikan simulator

7. Program menghidupkan display 7 segment

VCC VCC 10k U? 39 1 a P00 P10 38 2 b P01 P11 37
VCC
VCC
10k
U?
39
1
a
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
P26
P36/WR
28
VCC
P27
P37/RD
19
X1
31
U?
VCC
EA/VP
18
X2
30
ALE/P
29
9
CRYSTAL
PSEN
RESET
89C51
VCC
10K
1uF
40
VCC
20
G N D

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

 

Digit

Dot

g

f

e

d

c

b

a

Hex

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,#111111001b Acall Two_Seconds_Delay Mov P1,#10100100b Acall Two_Seconds_Delay Mov P1,#10110000b Acall Two_Seconds_Delay Mov P1,#10011001b Acall Two_Seconds_Delay Mov P1,#10010010b Acall Two_Seconds_Delay Mov P1,#10000010b Acall Two_Seconds_Delay Mov P1,#11111000b Acall Two_Seconds_Delay Mov P1,#10000000b Acall Two_Seconds_Delay Mov P1,#10010000b Acall Two_Seconds_Delay Jmp Loop $Include(Tunda.asm) End

; Menampilkan Angka 1

; Menampilkan Angka 2

; Menampilkan Angka 3

; Menampilkan Angka 4

; Menampilkan Angka 5

; Menampilkan Angka 6

; Menampilkan Angka 7

; Menampilkan Angka 8

; Menampilkan Angka 9

Program menampilkan digit dengan mode scaning.

VCC U? U? U? U? U? U? U? U? P00 39 1 a a a
VCC
U?
U?
U?
U?
U?
U?
U?
U?
P00
39
1
a
a
a
a
a
a
a
a
P00
P10
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/WR
28
17
VCC
VCC
VCC
VCC
VCC
VCC
VCC
VCC
P27
P37/RD
19
X1
31
VCC
EA/VP
18
X2
30
ALE/P
29
9
11,059200 33p
PSEN
RESET
33p
89C51
VCC
10K
1uF
P07
P06
P05
P04
P03
P02
P
01
P
00
40
VCC
20
GND

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

Lampiran Langkah membuat program Kapasitas memori Mikro type AT89xx

Langkah membuat program

Lampiran Langkah membuat program Kapasitas memori Mikro type AT89xx

Kapasitas memori Mikro type AT89xx

File Tunda.asm berisi ?

;--- SUBROUTINE PROGRAM DELAY ---

Two_Seconds_Delay:

Mov R5,#0Ah

Two_Seconds_Delay_1:

Acall Long_Delay

Djnz R5,Two_Seconds_Delay_1

;PINDAHKAN DATA 0Ah KE REGISTER 5

;PANGGIL SUB RUTIN LONG DELAY

;KURANGI DATA R5 DENGAN 1,JIKA

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

Ret SECONDS DELAY

;KEMBALI KE YANG "ACALL" SUB RUTIN TWO

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,$ TIDAK "0" LOOPING DITEMPAT

Ret

;KURANGI DATA R6 DENGAN 1,JIKA HASILNYA

;KEMBALI KE YANG "ACALL" DELAY