Rabu, 15 Juni 2011

Bahasa Assembly

Bahasa assembly adalah bahasa level rendah dari bahasa pemograman.
Suatu simbol-simbol yang merepresentasikan bahasa mesin (machine language) dari suatu prosessor. Assembly language ini diubah menjadi bahasa mesin melalui assembler. Biasanya setiap baris dari kode bahasa ini merupakan satu instruksi untuk mesin. Pemrograman dalam bahasa mesin ini memakan waktu cukup lama dibandingkan dengan bahasa pemrograman lainnya, dan mudah terjadi kesalahan-kesalahan di dalamnya, tetapi cara ini sangat tepat apabila dilihat efesiensi penggunaan resource yang ada pada mesin.

Selasa, 07 Juni 2011

Soal & Jawab Mikrokontroler

SOAL -SOAL :

1. Sebutkan dan Jelaskan perbedaan antara Mikroprosesor, Mikrokontroler dan Mikrokomputer serta berikan contoh. (20%)
2. Konversikan bilangan dibawah ini (gunakan rumus atau cara konversi, bukan langsung hasil) : (30%)
a. 2510 = …….2
b. 3310 = ……..8
c. 24310 = …..16
d. 110012 = ……10
e. 1101112 = …..8
f. 111000102 = …..16
g. C816 = ……10
h. B716 = ……2
i. 718 = …..10
j. 578 = …..2

3. 1. Buat FlowChart sesuai deskripsi di bawah ini (20% )
Bila tombol input 1h dan input 2h di tekan (ON) maka lampu output 2h akan OFF tapi bila salah satu input 1h or 2h tidak ditekan (OFF) lampu nyala.

2. Buatlah program assembly dari soal no 1. (30%)

Jawab :
1. Perbedaan antara Mikroprosesor, Mikrokomputer dan Mikrokontroler adalah :
Mikroprosesor adalah bagian CPU (central processing unit) ) terdiri dari dua bagian, yaitu unit pengendali (control unit) serta unit aritmatika dan logika (ALU).dari sebuah komputer
Contoh 8088, 80X86 adalah suatu mikroprosesor.
Bila sebuah mikroprosesor dikombinasikan dengan I/O dan memori (RAM/ROM), akan dihasilkan sebuah mikrokomputer.
Contoh : Destop, Laptop. Untuk digunakan secara umum (general)
Mikrokontroler adalah sebuah sistem microprosesor di mana di dalamnya sudah terdapat CPU, ROM, RAM, I/O, Clock dan peralatan internal lainnya yang sudah saling terhubung dan terorganisasi (teralamati) dengan baik oleh pabrik pembuatnya dan dikemas dalam satu chip yang siap pakai.
Contoh : AT89C51/52, AT89S51/52, AVR ATMEGA 8/16/32/64/8535. Untuk digunakan pada suatu aplikasi tertentu (khusus).
Diantaranya yang terkenal ialah dari Intel, Maxim, Motorolla , dan ATMEL. Beberapa seri mikrokontroler yang digunakan secara luas ialah 8031, 68HC11, 6502 , 2051 dan 89S51. Mikrokontroler yang mendukung jaringan komputer seperti DS80C400 tampaknya akan menjadi primadona pada tahun-tahun mendatang . Untuk mencoba kit mikrokontrolerDT51, SMART52 berbasiskan 89S52 , SmartAVR

2. Konversi bilangan
a. 2510 = …….2
25/2 = 12 + sisa 1
12/2 = 6 + sisa 0
6/2 = 3 + sisa 0
3/2 = 1 + sisa 1
2/2 = 0 + sisa 1
Jadi ( 25 )10 = ( 11001 )2

b. 3310 = ……..8
33/8 = 4 + 1
4/8 = 0 +4
Jadi 3310 = 418

c. 24310 = …..16
243/16 = 15 sisa 3
15/16 = 0 sisa 15 = F
Jadi 24310 = F316

d. 110012 = ……10
1 x 20 = 1
0 x 21 = 0
0 x 22 = 0
1 x 23 = 8
1 x 24 = 16
-------
2510
Jadi 110012 = 2510
e. 1101112 = …..8
111 = 7
110 = 6
Jadi 1101112 = 678
f. 111000102 = …..16
0010 = 2
1110 = 14 = E
Jadi 111000102 = E216
g. C816 = ……10
8 x 160 = 8
C=12 x 161 = 192
-----
20010
Jadi C816 = 20010
h. B716 = ……2
716 = 710 = 01112
B16 = 1110 = 10112
Jadi B716 = 101101112
i. 718 = …..10
1 x 80 = 1
7 x 81 = 56
---
5710
Jadi 718 = 5710
j. 578 = …..2
7 = 1112
5 = 1012
Jadi 578 = 1011112


3. FlowChart
Bila tombol input 1h dan input 2h di tekan (ON) maka lampu output 2h akan OFF tapi bila salah satu input 1h or 2h tidak ditekan (OFF) lampu nyala




4.Bahasa Assembly
$mod51
ORG 4000H ; Bit 1 dan Bit 2 ON = 0, Bit 1 or Bit 2 Off = 1 (02h)
MOV A,#089H
MOV DPTR,#2003H
MOVX @DPTR,A
;
START: MOV DPTR,#2002H ;Input PortC
MOVX A,@DPTR
CJNE A,#003H,START1
JMP STOP
START1: MOV DPTR,#2002H ; Input PortC
MOVX A,@DPTR
CJNE A,#001H,START2
JMP ON
START2: MOV DPTR,#2002H ; Input PortC
MOVX A,@DPTR
CJNE A,#002H,STOP
ON:
MOV A,#001H
MOV DPTR,#2000H
MOVX @DPTR,A
JMP START
STOP:
MOV A,#000H
MOV DPTR,#2000H
MOVX @DPTR,A
JMP START
END


Praktek :
1.Bila salah satu Saklar: Saklar1 (01H) atau Saklar2 (02H) ditekan lampu nyala (08H) dan bila kedua saklar ditekan atau tidak ditekan lampu padam (PORT A Input DAN port B Output).
Program Assembly:
$mod51
ORG 4000H ; Saklar1 (01H) atau Saklar2 (02H) lampu nyala (08H)
; Kedua saklar ditekan atau tidak ditekan Lampu padam
MOV A,#090H ; Port A = input, Port B = Output
MOV DPTR,#2003H
MOVX @DPTR,A

START: MOV DPTR,#2000H ;Input PortA
MOVX A,@DPTR
CJNE A,#001H,START1
JMP NYALA
START1: MOV DPTR,#2000H ; Input PortA
MOVX A,@DPTR
CJNE A,#002H,START2
JMP NYALA
START2: MOV DPTR,#2000H ; Input PortA
MOVX A,@DPTR
CJNE A,#003H,START
JMP STOP
NYALA:
MOV A,#008H
MOV DPTR,#2001H
MOVX @DPTR,A
JMP START
STOP:
MOV A,#000H
MOV DPTR,#2001H
MOVX @DPTR,A
JMP START
END

2.Pada saat tombol 3(04h) ditekan lampu Hidup (00Ah), saat tombol 2 (02h) ditekan Lampu (00Ah) padam, Jika tombol 1 (01h) ditekan lampu Hidup (0A0h), jika tombol 2(02h) ditekan lampu (0A0h) padam. Dengan Port A sebagai input, Port C sebagai Output.

Program Assembly:
$MOD51
ORG 4000H
MOV A,#090H ; Port A = input, Port C =Output
MOV DPTR,#2003H
MOVX @DPTR,A
START:
MOV DPTR,#2000H ;Saat Tombol 3(04H) ditekan Led (00AH) ON
MOVX A,@DPTR
CJNE A,#004H,START
MOV A,#00AH
MOV DPTR,#2002H ;Output PortC = 00AH
MOVX @DPTR,A
;
STOP:
MOV DPTR,#2000H ;Led OFF saat tombol 2 (002H) ditekan
MOVX A,@DPTR
CJNE A,#002H,STOP
MOV A,#000H
MOV DPTR,#2002H
MOVX @DPTR,A
;
START1:
MOV DPTR,#2000H ;Saat TOmbol 1 (001H) ditekan Led ON
MOVX A,@DPTR
CJNE A,#001H,START1
MOV A,#0A0H
MOV DPTR,#2002H ;Output PortC= 0A0H
MOVX @DPTR,A
;
STOP1:
MOV DPTR,#2000H ;Led OFF saat tombol 2 (002H) ditekan
MOVX A,@DPTR
CJNE A,#002H,STOP1
MOV A,#000H
MOV DPTR,#2002H
MOVX @DPTR,A
JMP START
END

3. Jika input saklar 1 (01h) ditekan hitung A0h / 02h bila hasilnya adalah 50h maka output lampu led pada port A (A0h) akan Nyala, Jika input saklar 2 (02h) ditekan maka hitung 28h x 02h bila hasilnya adalah 50h Lampu Port A (0Ah) akan Nyala. Pada saat saklar tidak ditekan semua lampu led mati.

Program Assembly :
;-------------------------------------------------------------------------;
;Jika input 01h ditekan hitung A0h/02h jika = 50h maka lampu led on 00Ah;
;Jika input 02h ditekan hitung 28hx02h jika = 50h maka lampu led on 0A0h;
;-------------------------------------------------------------------------;
$MOD51
ORG 4000H
MOV A,#089H
MOV DPTR,#2003H
MOVX @DPTR,A
;
START:
MOV DPTR,#2002H ; INPUT PORTc
MOVX A,@DPTR
CJNE A,#001H,START1
MOV A,#0A0h
MOV B,#002h
DIV AB
CJNE A,#050H,START
MOV A,#00AH
MOV DPTR,#2000H
MOVX @DPTR,A
;
START1:
MOV DPTR,#2002H ; INPUT PORTc
MOVX A,@DPTR
CJNE A,#002H,START
MOV A,#028H
MOV B,#002H
MUL AB
CJNE A,#050H,START1
MOV A,#0A0H
MOV DPTR,#2000H
MOVX @DPTR,A
JMP START
END