6131028 Indah K modul2
-
Upload
independent -
Category
Documents
-
view
1 -
download
0
Transcript of 6131028 Indah K modul2
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
LLaabboorraattoorriiuummOOttoommaassii ddaann SSiisstteemm EEmmbbeeddddeedd
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
Kerja LaboratoriumSistem Mikrokontroler – 61B044
Modul 2
Akses Interupsi dan ADC AT89S52
Nama : Indah Kusumaningrum
NRP : 6131028
KP : -
Tanggal Kerja Lab : 23 Maret 2015
Dikumpulkan tanggal : 15 April 2015
Semester GenapTahun Akademik 2012 – 2013
Dengan ini saya menyatakan bahwa laporan kerjalaboratorium ini merupakan hasil tulisan saya sendiri.Dan saya bersedia mendapatkan sanksi sesuaiperaturan yang berlaku jika di kemudian hari ternyatalaporan ini dinyatakan mempunyai kesamaan denganlaporan kerja laboratorium mahasiswa yang lain.
( Indah K )
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
LLaabboorraattoorriiuummOOttoommaassii ddaann SSiisstteemm EEmmbbeeddddeedd
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
1. Jam Digital
#include <sfr52.inc>one equ 30htwo equ 31hthree equ 32hfour equ 33hR8 equ 34h
org 000hajmp startorg 03hajmp int0_ubahdetikorg 13hajmp int0_ubahmenitorg 0100h
int0_ubahdetik: mov P2,oneacall delaymov P2,twoacall delaymov P2,threeacall delaymov P2,fouracall delay
djnz R8,int0_ubahdetikmov R8,#01hdjnz R7,int0_ubahdetikmov R7,#04Ahdjnz R6,int0_ubahdetikmov R6,#01hajmp cekdetik
cekdetik: mov A,threecjne A,#11011001b,nambah2detikmov three,#11010000bmov A,fourcjne A,#11100101b,nambah3detikmov four,#11100000breti
nambah2detik: inc threereti
nambah3detik: inc fourreti
int0_ubahmenit: mov P2,oneacall delay
mov P2,twoacall delaymov P2,threeacall delaymov P2,fouracall delay
djnz R8,int0_ubahmenit
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
LLaabboorraattoorriiuummOOttoommaassii ddaann SSiisstteemm EEmmbbeeddddeedd
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
mov R8,#01hdjnz R7,int0_ubahmenitmov R7,#04Ahdjnz R6,int0_ubahmenitmov R6,#01hajmp cekmenit
cekmenit: mov A,onecjne A,#01111001b,nambahmenitmov one,#01110000bmov A,twocjne A,#10110101b,nambah1menitmov two,#10110000breti
nambahmenit: inc onereti
nambah1menit: inc tworeti
start: setb EAsetb EX0setb PX0setb EX1setb PX1
mov R3,#01hmov R4,#0AAhmov R5,#01hmov R6,#01hmov R7,#04Ahmov R8,#01hmov one,#01110000bmov two,#10110000bmov three,#11010000bmov four,#11100000bmov A,#00h
tampil: mov P2,oneacall delaymov P2,twoacall delaymov P2,threeacall delaymov P2,fouracall delay
djnz R5,tampilmov R5,#01hdjnz R4,tampilmov R4,#0AAhdjnz R3,tampilmov R3,#01hajmp cek
cek: mov A,onecjne A,#01111001b,nambah
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
LLaabboorraattoorriiuummOOttoommaassii ddaann SSiisstteemm EEmmbbeeddddeedd
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
mov one,#01110000bmov A,twocjne A,#10110101b,nambah1mov two,#10110000bmov A,threecjne A,#11011001b,nambah2mov three,#11010000bmov A,fourcjne A,#11100101b,nambah3mov four,#11100000bajmp tampil
nambah: inc oneajmp tampil
nambah1: inc twoajmp tampil
nambah2: inc threeajmp tampil
nambah3: inc fourajmp tampil
delay : mov R0,#02hdelay1: mov R1,#08hdelay2: mov R2,#0Fh
djnz R2,$djnz R1,delay2djnz R0,delay1ret
end
Cara Kerja Program
Program dimulai dengan mengaktifkan register EA, EX1, PX1,EX0,PX0 dengan
memberikan logika 1 pada masing-masing register. EX1 dan PX1 untuk menggunakan
P3.3(push button) sebagai interupt 1 sedangkan EX0 dan PX0 untuk menggunakan
P3.2(push button) sebagai interupt 0. Setelah menjalankan program tersebut,
memberikan nilai pada register-register dan variabel-variabel yang digunakan
menggunakan mov seperti yang ditulis pada program diatas. R3-R8 digunakan untuk
program delay, variabel one, two, three, four sebagai selektor untuk 7segment dimana
one adalah satuan dari detik, two puluhan dari detik, three satuan dari menit dan four
puluhan dari menit. Lalu menampilkan variabel selektor tersebut pada 7 segment pada
subroutine tampil melalui perintah mov P2, satu diikuti dengan pemanggilan delay dan
menampilkan digit berikut nya menggunakan cara ini hingga semua sudah digit
ditampilkan. Setelah semua ditampilkan diberi delay dalam subroutine tampil sehingga
nilai yang sama dari variabel selektor ditampilkan beberapa kali hingga delay selesai
baru dapat menampilkan nilai yang berbeda.
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
LLaabboorraattoorriiuummOOttoommaassii ddaann SSiisstteemm EEmmbbeeddddeedd
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
Setelah dari subroutine tampil, masuk ke subroutine cekdetik yang digunakkan
untuk membatasi satuan detik dan menit maksimal 9, puluhan detik dan menit
maksimal 5. Pembuatan batas tersebut dengan menggunakan perintah cjne A,
#01111001b,nambah dimana A telah dimasukkan nilai dari satu 4 digit pertama adalah
selektornya dan 4 digit terakhir adalah datanya. Jika data dari A tidak sama dengan 9
maka dia akan jump ke subroutine nambah dimana berisi inc satu yaitu menambah nilai
dari variabel satu sebanyak 1. Jika A sama dengan 9 maka akan melanjutkan pada
program dibawahnya yaitu data dari variabel satu dijadikan 0 kembali. Untuk satuan
menit, puluhan detik dan menit menggunakan teknik yang sama. Setelah pengecekan,
program akan jump ke subroutine tampil.
Interupsi 0 akan berjalan jika switch 3 ditekan maka digit detik akan naik secara
terus menerus hingga switch dilepas. Untuk programnya sama dengan program
utamanya namun delay pada subroutine tampilnya dipercepat sehingga seolah-olah
digunakan untuk mengatur detiknya. Untuk Interupsi 1 akan berjalan jika switch 4
ditekan maka digit menit akan naik secara terus menerus hingga switch dilepas. Untuk
programnya sama dengan program utamanya namun delay pada subroutine tampilnya
dipercepat sehingga seolah-olah digunakan untuk mengatur detiknya dan pada
subroutine cek yang digunakan adalah pengecekan pada satuan dan puluhan menit saja
menggunakan perintah cjne. Program utama akan berhenti dieksekusi dan akan
menjalankan interupsi hingga bertemu reti. Ketika bertemu reti, program utama akan
kembali dieksekusi dari program terakhir dimana interupsi muncul.
Prosedur delay berfungsi untuk memberikan jeda waktu dalam menjalankan
perintah yang dilakukan dengan perintah selanjutnya.
2. Emergency STOP prioritas intrupsi
#include <sfr52.inc>org 000hajmp startorg 03hajmp int0_0norg 13hajmp int1_0norg 0100h
int1_0n: mov P2,#0mov R7,#01breti
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
LLaabboorraattoorriiuummOOttoommaassii ddaann SSiisstteemm EEmmbbeeddddeedd
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
int0_0n: cjne R7,#00b,kiri
kanan: mov P2,ARR Aacall delaycjne A,#00000001b,outmov R7,#1breti
kiri: mov P2,ARL Aacall delaycjne A,#10000000b,outmov R7,#0bretiout: reti
start: setb EAsetb EX0clr PX0setb EX1setb PX1mov P2,#0mov A,#00000001bmov R7,#01bajmp $
delay : mov R0,#05hdelay1: mov R1,#0FFhdelay2: mov R2,#00hdjnz R2,$djnz R1,delay2djnz R0,delay1retend
Cara Kerja Program
Pada mulanya, program dimulai dengan memanggil file sfr52.inc dari library
Reads51.
Program diawali dengan mengaktifkan register EA, EX1, PX1,EX0,PX0 dengan
memberikan logika 1 pada masing-masing register. EX1 dan PX1 untuk menggunakan
P3.3(push button) sebagai interupt 1 sedangkan EX0 dan PX0 untuk menggunakan
P3.2(push button) sebagai interupt 0. Namun pada kasus ini, interupt 1 sebagai prioritas
sehingga PX0 yang terhubung pada interupt 0 diberi logika 0 jadi ketika interupt 1
ditekan maka seolah-olah interupt 0 tidak berfungsi.
Pada percobaan ini, program LED berjalan diletakkan pada interupt 0, jadi ketika
run atau interupt 0 ditekan maka program baru dijalankan. Pada program utamanya
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
LLaabboorraattoorriiuummOOttoommaassii ddaann SSiisstteemm EEmmbbeeddddeedd
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
yaitu start: hanya pendeklarasian nilai pada variabel R7 dan accumulator kemudian
ajmp $, dimana program utama hanya mengulang di baris ajmp $ itu saja. Tanpa
penekanan interupt maka program yang dijalankan di baris ajmp $ aja. Ketika interupt 0
ditekan program jump ke subroutine int0_Run yang berisi program LED berjalan.
R7 bernilai 1 dan 0 ketika R7 digunakan untuk menentukan arah jalan LED,
bernilai 1 maka LED sedang berjalan ke kiri sedangkan 0 berarti LED sedang berjalan
ke arah kanan. Ketika interupt 0 ditekan ada pengecekan R7 menggunakan perintah cjne
R7,#0b,mulai(nilai R7 pada saat start adalah 1) yang akan jump ke mulai jika R7
bernilai 1 dan turun ke subroutine mula jika R7 bernilai 0 dimana subroutine mulai
adalah program LED bergeser ke kiri dan mula adalah program LED bergeser ke kiri.
Untuk dapat bergeser ke kiri menggunakan perintah RL A dimana pada awalnya A
bernilai 00000001b ketika di RL maka menjadi 00000010b lalu diikuti perintah
pemanggilan delay dan menampilkan A pada LED. Setelah itu ada pengecekan, apakah
LED yang menyala sudah bergeser ke paling kiri 10000000b. Pada pengecekan ini akan
kembali ke program kiri bila LED belum mencapai paling kiri. Setelah mencapai kiri
maka program akan mengubah R7 menjadi 0 maka led mulai dari kanan (10000000b).
Untuk dapat bergeser ke kanan menggunakan perintah RR A dimana akan masuk ke
subroutine ini ketika A bernilai 10000000b ketika di RR maka menjadi 01000000b lalu
diikuti perintah pemanggilan delay dan menampilkan A pada LED. Setelah itu
pengecekan akan kembali ke program kanan bila LED belum mencapai paling kanan,
dan R7 bernilai 1 bila LED telah bergeser hingga paling kanan.
Prosedur delay berfungsi untuk memberikan jeda waktu dalam menjalankan
perintah yang dilakukan dengan perintah selanjutnya.
3. Termometer Celcius dan Reamur
#include <sfr52.inc>save equ 31hR8 equ 32hR9 equ 33h
org 000hajmp mulaiorg 0100h
mulai: mov R9,#01hmov R8,#0AAhmov R7,#01h
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
LLaabboorraattoorriiuummOOttoommaassii ddaann SSiisstteemm EEmmbbeeddddeedd
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
start: clr P0.0clr P0.1clr P0.2mov A,P3mov save,P3mov B,#4mul ABmov B,#5div ABmov B,#10div ABadd A,#10110000bmov R3,Amov A,Badd A,#01110000bmov R4,Amov A,savemov B,#10div ABadd A,#11100000bmov R5,Amov A,Badd A,#11010000bmov R6,Aajmp tampil
tampil: mov P2,R4acall delaymov P2,R3acall delaymov P2,R6acall delaymov P2,R5acall delaydjnz R9,tampilmov R9,#01hdjnz R8,tampilmov R8,#0AAhdjnz R7,tampilmov R7,#01hajmp start
delay : mov R0,#01hdelay1: mov R1,#0Fhdelay2: mov R2,#09h
djnz R2,$djnz R1,delay2djnz R0,delay1ret
end
TujuanAplikasi Program
Cara Kerja Program
Pada awal program, supaya mengaktifkan penggunaan LM35 menggunakan
deklarasi clr P0.0, clr P0.1, dan clr P0.2. keluaran dari pengukuran suhu pada variabel
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
LLaabboorraattoorriiuummOOttoommaassii ddaann SSiisstteemm EEmmbbeeddddeedd
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
P3 dalam bentuk celcius, hasil pengukuran tersebut disimpan dalam variabel save.
Kemudian untuk mengubah menjadi reamur maka keluaran tersebut disimpan dalam
accumulator dan kemudian dikalikan 4/5 dengan perintah sebagai berikut mul AB
dimana B diberi nilai 4 sehinga A dikalikan B, kemudian div AB dimana B diubah
nilainya menjadi 5, sehingga A dibagi B. Melalui program ini A sudah menjadi suhu
reamur. Untuk menampilkan pada 7 segmen A dibagi 10 yang dimasukkan dalam
variabel B, misalnya A adalah 24 ketika dibagi B maka A akan bernilai 2 dan B bernilai
4. Dari hasil tersebut dapat disimpulkan bahwa A adalah bilangan puluhan reamurnya
dan B adalah bilangan satuan reamurnya. Kemudian nilai dari A dimasukkan ke R3 dan
di add kan dengan selektor untuk digit ke 3 seven segmen. Nilai dari B dimasukkan ke
A kemudian di add kan dengan selektor untuk digit ke 4 seven segmen dan dimasukkan
dalam R4. Kemudian untuk celciusnya, memasukkan nilai dari variabel save ke
accumulator. Untuk menampilkan pada 7 segmen A dibagi dengan 10 yang dimasukkan
dalam variabel B, misalnya A adalah 24 ketika dibagi B maka A akan bernilai 2 dan B
bernilai 4. Dari hasil tersebut dapat disimpulkan bahwa A adalah bilangan puluhan
celciusnya dan B adalah bilangan satuan celciusnya. Kemudian nilai dari A dimasukkan
ke R5 dan di add kan dengan selektor untuk digit ke 1 seven segmen. Nilai dari B
dimasukkan ke A kemudian di add kan dengan selektor untuk digit ke 2 seven segmen
dan dimasukkan dalam R6. Kemudian jump ke subroutine tampil untuk menampilkan
nilai suhu tersebut pada 7 segment pada subroutine tampil melalui perintah mov P2,R3
diikuti dengan pemanggilan delay dan menampilkan digit berikut nya menggunakan
cara ini hingga semua sudah digit ditampilkan. Setelah semua ditampilkan diberi delay
dalam subroutine tampil sehingga nilai yang sama dari variabel selektor ditampilkan
beberapa kali hingga delay selesai baru dapat menampilkan nilai yang berbeda.
Kemudian kembali jump ke subroutine start.
Prosedur delay berfungsi untuk memberikan jeda waktu dalam menjalankan
perintah yang dilakukan dengan perintah selanjutnya.
4. Voltmeter Digital
#include <sfr52.inc>R8 equ 32hR9 equ 33h
org 000hajmp mulai
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
LLaabboorraattoorriiuummOOttoommaassii ddaann SSiisstteemm EEmmbbeeddddeedd
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
org 0100h
mulai: mov R3,#01hmov R4,#0AAhmov R5,#01h
start: setb P0.0clr P0.1clr P0.2mov A,P3mov B,#35div ABadd A,#01110000b
tampil: djnz R5,tampilmov R5,#01hdjnz R4,tampilmov R4,#0AAhdjnz R3,tampilmov R3,#01hmov P2,Aacall delayajmp start
delay : mov R0,#01hdelay1: mov R1,#0Fhdelay2: mov R2,#00h
djnz R2,$djnz R1,delay2djnz R0,delay1ret
end
Cara Kerja Program
Pada awal program, supaya mengaktifkan potensiometer menggunakan deklarasi
setb P0.0, clr P0.1, dan clr P0.2. Keluaran dari pengukuran potensio disimpan pada
variabel P3. Memasukkan nilai P3 pada accumulator dan membagi A dengan 35 karena
hasil pengukuran tegangan menggunakan voltmeter max adalah 4 sehingga nilai dari
potensio dibagi 4 sehingga kurang lebih 35. Memasukkan B dengan nilai 35 dan div
AB. Setelah itu menambahkan A dengan selektor supaya dapat ditampilkan pada 7
segment
Lalu jump ke subroutine tampil untuk menampilkan nilai suhu tersebut pada 7
segment pada subroutine tampil melalui perintah mov P2,R3. Setelah semua
ditampilkan lalu kembali jump ke subroutine start.
Prosedur delay berfungsi untuk memberikan jeda waktu dalam menjalankan
perintah yang dilakukan dengan perintah selanjutnya.
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
LLaabboorraattoorriiuummOOttoommaassii ddaann SSiisstteemm EEmmbbeeddddeedd
Jurusan Teknik ElektroFakultas Teknik – Universitas Surabaya
Gambar 1.1 Jam Digital berjalan Gambar 1.2 Emergency Stop
Gambar 1.3Thermometer Gambar 1.4 Voltmeter Digital