Tugas Mikro Defi Tk 2b

  • July 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Tugas Mikro Defi Tk 2b as PDF for free.

More details

  • Words: 1,493
  • Pages: 13
Tugas Mikrokontroller Defi Riyantika TK 2B / 3.33.08.1.04

TUGAS MIKROKONTROLLER Disusun Sebagai Tugas Mata Kuliah Mikrokontroller Kelas TK2B Semester III

Disusun oleh: Nama : Defi Riyantika Kelas : TK 2B NIM

: 3.33.08.1.04

PROGRAM STUDI TEKNIK TELEKOMUNIKASI JURUSAN TEKNIK ELEKTRO POLITEKNIK NEGERI SEMARANG 2009

Page 1

Tugas Mikrokontroller Defi Riyantika TK 2B / 3.33.08.1.04

1.Buatlah Program agar lampu LED 1 sampai dengan LED 8 menyala terus dan cara kerjanya pada gambar berikut. SV

LED 1

LED 2

LED 8

PФ0 s/d PФ 7

Jawab : Program agar lampu LED 1 sampai dengan LED 8 menyala terus dan cara kerjanya adalah sebagai berikut. $MOD51 ; program LED ; dimana led 1 sampai led 4 pada port 0.0 sampai port 0.3 akan menyala terus ; dan led 5 sampai led 8 pada port 0.4 sampai port 0.7 akan padam ; LED jenis common anoda, LED aktif low

setb P0.0 setb P0.1 setb P0.2 setb P0.3 clr P0.4 Page 2

Tugas Mikrokontroller Defi Riyantika TK 2B / 3.33.08.1.04

clr P0.5 clr P0.6 clr P0.7 sjmp $ end

2.Sama dengan gambar soal nomor 1 Buatlah Program agar lampu LED 1 sampai dengan LED8 menyala Flip Flop dengan delay terserah beserta cara kerjanya. Jawab : Program agar lampu LED 1 sampai dengan LED8 menyala Flip Flop dengan delay terserah beserta cara kerjanya adalah sebagai berikut. $MOD51 START : MOV P1,#00h

;

hidupkan

LED1,LED2,

LED3,

LED4,LED5,

LED6,LED7,LED8 NOP

; tunda 12 µS

NOP

; tunda 12 µS

MOV P1,#0FFh

; matikan LED pada P1

SJMP Start

; kembali ke start

END

Page 3

Tugas Mikrokontroller Defi Riyantika TK 2B / 3.33.08.1.04

3. Buatlah program jika SW 1, SW2, dan SW3. Dan datakan output lampu LED1, LED2, LED3, sampai

LED8

akan

SV

SV I

menyala

beserta

langkah

langkahnya

LED 1

SW 1

I LED 2

SW 2

I

SW 8 P2.Ф s/d P2.7

LED 8

PФ0 s/d PФ 7

Jawab : Program jika SW 1, SW2, dan SW3. Dan datakan output lampu LED1, LED2, LED3, akan menyala beserta langkah langkahnya adalah sebagai berikut. $MOD51 ;SW1, SW2, SW3, sw4, sw4, sw5, sw6,sw7, sw8 pada port P2.0, P2.1, P2.2, P2.3, P2.4, P2.5, P2.6, P2.7 ;LED 1, LED 2, LED 3, LED4. LED5, LED6,LED7,LED8 pada port P0.0, P0.1, P0.2, P0.3, P0.4, P0.5, P0.6, P0.7 ;LED jenis common anoda, LED aktif low ;PORT 2 normaly kondisi high ;SW 1 - 3 normaly high ;SW1 to LED 1, SW2 to LED 2, SW3 to LED 3

Page 4

Tugas Mikrokontroller Defi Riyantika TK 2B / 3.33.08.1.04

;LED yang akan menyala sesuai dengan suwitch LED yang ditekan Sw1 bit P2.0 Sw2 bit P2.1 Sw3 bit P2.2 Sw4 bit P2.3 Sw5 bit P2.4 Sw6 bit P2.5 Sw7 bit P2.6 Sw8 bit P2.7 Led1 bit P0.0 Led2 bit P0.1 Led3 bit P0.2 Led4 bit P0.3 Led5 bit P0.4 Led6 bit P0.5 Led7 bit P0.6 Led8 bit P0.7 sjmp start delay: mov R7,#5 l1: mov R6,#1 Page 5

Tugas Mikrokontroller Defi Riyantika TK 2B / 3.33.08.1.04

l2: mov R5,#2 l3: djnz R5,l3 djnz R6,l2 djnz R7,l1 ret

display1: clr Led1 ret

display2: clr Led2 ret

display3: clr Led3 ret

display4: clr Led4 ret Page 6

Tugas Mikrokontroller Defi Riyantika TK 2B / 3.33.08.1.04

display5: clr Led5 ret

display6: clr Led6 ret

display7: clr Led7 ret

display8: clr Led8 ret

start: jnb Sw1,display1 jnb Sw2,display2 jnb Sw3,display3 Page 7

Tugas Mikrokontroller Defi Riyantika TK 2B / 3.33.08.1.04

jnb Sw4,display4 jnb Sw5,display5 jnb Sw6,display6 jnb Sw7,display7 jnb Sw8,display8

acall delay clr Led1 clr Led2 clr Led3 clr Led4 clr Led5 clr Led6 clr Led7 clr Led8 sjmp start end 4. Jelaskan instruksi Jump (Tidak berkondisi atau berkondisi) atau instruksi subroutine. Jawab : Sebenarnya Subroutine merupakan penggal progam yang sering digunakan, sehingga bisa digunakan progam berkali- kali, tanpa harus menulis ulang perintahnya. Proses tersebut mirip Page 8

Tugas Mikrokontroller Defi Riyantika TK 2B / 3.33.08.1.04

pada progam basik klasik, dimana masih terdapat line numbernya dan memanggil subrutin dengan perintah GOSUB. Pada MCU MCS-51 terdapat dua cara memanggil subroutine yang terdapat pada progam memori, yaitu: -

ACALL, yang maksimum hanya bisa mengakses hingga 2K (11 address line) saja di progam memori. Apabila subroutine kurang dari 2K dapat digunakan ACALL yang lebih cepat karena hanya memiliki total 2 byte (instruksi dan alamat yang dituju), sedangkan ACALL yang memiliki 3 byte terdiri dari opcode, alamat byte tinggi dan alamat byte rendah yang dituju.

-

LCALL yang dapat mengakses hingga 64 K. Apabila subroutine kurang dari 2K dapat digunakan ACALL yang lebih cepat karena hanya memiliki total 2 byte (instruksi dan alamat yang dituju), sedangkan ACALL yang memiliki 3 byte terdiri dari opcode, alamat byte tinggi dan alamat byte rendah yang dituju.

Acall hitung

; memanggil subroutine hitung yang alamatnya lebih kecil dari 2048

Hitung:

; progam hitung ini harus diletakan pada alamat yang <2048, misalnya 1024 atau ; 0412h

Mov a,#0Aah Mov b, #0BBh Add a,b Ret

;kembali kesubrutin

Kode operasi dari acall dibentuk dengan mengombinasikan opcode + lokasi alamat yang dituju, dengan format sebagai berikut; A10 A9 A8 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0 Page 9

Tugas Mikrokontroller Defi Riyantika TK 2B / 3.33.08.1.04

Dalam contoh diatas, alamatnya 0412h, maka formatnya menjadi: A10 A9 A8 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0 1

0

0 10001 0

0

0

1

0 0 1 0

Atau dalam format hexa ; 91h 12h Jika digunakan LCALL, maka kodenya untuk pemanggilan subrutin hitung tersebut diatas adalah : 12h 04h 12h, dimana 12h adalah opcodenya. Proses ACALL dan LCALL menggunakan memori stack untuk menyimpan data – data alamat yang ditinggalkan sebelum melaksanakan subrutin, agar bila kembali melaksanakab subrutin, MCU ingat lokasi kembalinya. Akhir subrutin ada perintah RET(return from Subroutin). Proses PUSHing sejak meninggalakan progam pertama dan proses POPing setelah selesai subrutin, pada stack dilakukan otomatis. Jadi bila progam menggunakan subrutin, didefinisikan dan diperhatikan baik- baik lokasi stack.

a. Instruksi lompat tak terkondisi Huruf J terdapat pada instruksi jump dalam asembler, berarti jump atau lompat. Subroutine adalah lompat dan kembali lagi, kalau hanya lompat tak terkondisi, biasanya tidak kembali ketempat semula, ini dalam perintah basic classic identik dengan perintah GOTO. Dalam system MCU MCS-51terdapat AJMP yang hanya bisa melompat di dalam program memori maksimum 2K saja, dan LJMP yang dapat melompat ke mana saja hingga 64K di program memori. Untuk perintah lompat ke lokasi memori 0412h, menggunakan AJMP, kode Instruksinya; A10 A9 A8 0 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0 1

0

0 00001 0

0

0

1

0 0 1 0

Atau dalam format hexa; 81h,12h

Page 10

Tugas Mikrokontroller Defi Riyantika TK 2B / 3.33.08.1.04

Apabila digunakan LJMP maka kodenya untuk melompat ke 0412h tersebut di atas adalah: 02h,04h,12h, dimana 02h adalah opcodenya. Instruuksi jump relatif menggunakan perintah SJMP atau shortjump sejauh -128 (mundur) atau +127 (maju). Jika lokasi tujuan Instruksi jump dijangkauan -128 hingga +127 dari tempat mulai lompat sebaiknya gunakan perintah SJMP , lebih cepat prosesnya karena hanya menggunakan 2 byte instruksi. Instruksi JMP @A+DPTR adalah lompat absolut ke lokasi memori yang alamatnya ditunjukkan pada DPTR+isi A, lompatan ini biasanya digunakan untuk instruksi lompat ke lokasi tertentu yang ditentukan oleh isi dari A, contoh berikut memberi penjelasan; MOV DPTR, #JMP_TABLE JMP @A+DPTR JMP_TABLE: AJMP LABEL0 AJMP LABEL1 AJMP LABEL2 AJMP LABEL3 Jika isi a mula-mula =0, maka akan melompat ke LABEL0, jika A=1 akan melompat ke LABEL1 dan seterusnya.

b. Instruksi lompat terkondisi Instruksi lompat terkondisi adalah lompat ke alamat tertentu bila kondisi terpenuhi. Secara umum perintahnya adalah: CJNE <dest-byte>,<scr-byte>,rel; artinya Comapre destination byte dan source byte, Jump is not Equal re(active). Source byte adalah A yang dibandingkan dengan

Page 11

Tugas Mikrokontroller Defi Riyantika TK 2B / 3.33.08.1.04

destination byte berupa direct memori atau immediate constant. Source dapat juga berupa direct Rn atau indirect @Rn yang dibandingkan dengan immediate constant. START CJNE A,#040h,LABEL1

; bandingkan A dengan 40h, jika tak ; sama lompat ke LABEL1

CJNE A,P1,LABEL1

; bandingkan A dengan P1, jika tak ; sama lompat ke LABEL1

CJNE R1,#040h,LABEL1

; bandingkan R1 dengan 40h, jika tak ; sama lompat ke LABEL1

CJNE @R1,#0CCh,LABEL1 ; bandingkan indirect R1 dengan CCh, jika tak ; sama lompat ke LABEL1 Label1: __ __ Instruksi DJNZ direct,rel adalah: Decrement Jump If Not Zero, artinya kurangi satu dahulu data di direct, kemudian bila isinya 0 maka lompatlah ke rel. Biasanya instruksi ini digunakan untuk pencacah. Berikut contoh penggunaan instruksi tersebut; START : MOV R0,#5

; isi R0 dengan 5

MOV R1,#40h

; isi R1 dengan 40h

LOOP: Page 12

Tugas Mikrokontroller Defi Riyantika TK 2B / 3.33.08.1.04

MOV @R1,#0Aah

; isi memori di dengan 0Aah

Inc R1

; R1=R1+1

DJNZ R0, LOOP

; R0=R0-1, jika belum 0 kembali ke LOOP

Sjmp $

; usai

Pada memori lokasi 40h ,41h, 42h,43h,dan 44h diisi oleh data Aah,disini R0 digunakan sebagai pencacah sebanyak 5 kali sedangkan R1 digunakan sabagai pointer memori dengan alamat awal 40h. Dan MCU melompat ke tempat yang sama, artinya looping di tempat berdasarkan perintah SJMP$.

Page 13

Related Documents

Defi
September 2019 36
Tugas Mikro Arya.docx
November 2019 11
Tugas Mikro Nina.docx
June 2020 6
Tk
May 2020 28
Mikro
November 2019 45