PETUNJUK:
1. Bacalah secara cermat ke-empat soal di bawah ini, lalu kerjakan setiap soal secara seksama,
mandiri dan tidak curang.
2. Susunlah penyelesaian untuk setiap soal perancangan secara seksama dengan menguji hasil
rancangan anda pada simulator mikrokontroler 8051.
3. Tulislah setiap kode-sumber Bahasa C hasil rancangan anda dalam dokumen ini di bawah
setiap soal. Sertakan juga diagram perangkat-keras yang diperlukan rancangan anda.
1. [30 poin] Rancanglah suatu program Bahasa C yang dapat diunggah ke dalam mikro-
kontroler 8051 yang dapat menampilkan suatu penunjuk waktu (watch) digital dengan
menggunakan piranti output berupa 4 penampil seven-segment. Dua penampil menunjuk-
kan jam terkini sedangkan dua penampil lainnya menunjukkan menit terkini. Usahakan
tampilan seven-segment mengikuti penunjuk waktu yang sesungguhnya (real-time). Selain
kode-sumber, sertakan juga diagram perangkat-keras yang dipergunakan dalam rancangan
anda. Output perancangan ini mirip seperti gambar berikut:
Jawaban:
/* soal-uts-1.c:Program 8051 yang dapat menampilkan suatu penunjuk waktu (watch)
digital dengan menggunakan
* piranti output berupa 4 penampil seven-segment. Dua penampil
menunjuk-kan jam terkini sedangkan
* dua penampil lainnya menunjukkan menit terkini. Usahakan tampilan
seven-segment mengikuti penunjuk
* waktu yang sesungguhnya (real-time).
* Pada simulasi Edsim memiliki keterbatasan tidak dapat menampilkan
lebih dari satu seven segment
* secara bersamaan, maka pengukur waktu akan dinyalakan secara
berurutan.
* Jadi akan
* Menggunakan delay yang diperkirakan berdasarkan trial n error agar
mendekati waktu nyata
* Update Freq = 20(untuk mendekati waktu nyata)
UTS – Sistem Waktu Nyata DTNTF – UGM
#include <8051.h>
#define A0 P3_3 /* Dua bit untuk memilih alamat dari */
#define A1 P3_4 /* keempat seven-segment yang tersedia */
#define SevSeg P1 /* seven-segment terhubung dengan P1 */
#define OFF 0xFF /*untuk mematikan sevensegment sesaat*/
void tunda(void);
2. [35 poin] Rancanglah suatu program Bahasa C yang dapat dijalankan pada mikrokontroler
8051 yang dapat melakukan kerja suatu pengukur waktu (stopwatch) digital dengan meng-
gunakan piranti output berupa 4 penampil seven-segment. Dua penampil menunjukkan
menit terkini sedangkan dua penampil lainnya menunjukkan detik terkini. Rancangan ini
juga menggunakan piranti input berupa 2 saklar yang bekerja sebagai berikut:
Saklar pertama merupakan tombol START yang jika ditekan akan memulai kerja
pengukur waktu sejak menit ke-0 dan detik ke-0.
Saklar kedua merupakan tombol STOP yang jika ditekan akan menghentikan kerja
pengukur waktu dan menampilkan waktu pada menit dan detik yang terakhir.
Usahakan tampilan seven-segment mengikuti pengukur waktu yang sesungguhnya (real-
time). Selain kode-sumber, sertakan juga diagram perangkat-keras yang dipergunakan
dalam rancangan anda.
Jawaban:
#include <8051.h>
#define start P2_0 /* Tombol start menggunakan switch 0 */
#define stop P2_1 /* Tombol stop menggunakan switch 1 */
#define A0 P3_3 /* Dua bit untuk memilih alamat dari */
#define A1 P3_4 /* keempat seven-segment yang tersedia */
#define SevSeg P1 /* seven-segment terhubung dengan P1 */
/* Memulai stopwatch */
/* Saat tombol start ditekan */
if (start == 0 && stop == 1){
//untuk pengaturan detik
for (detik = 0; detik< 10; detik++) {
A0 = 0; A1 = 0; //pilih seven segment pada display 0
if (stop == 0){
while(stop == 0){
SevSeg = angka[detik];
for(i=0;i<60;i++);
}
}
}
}
}
3. [25 poin] Rancanglah suatu program Bahasa C yang dapat mengendalikan kerja mikro-
kontroler 8051 yang terhubung dengan piranti output berupa 1 penampil seven-segment dan
piranti input berupa keypad (papan-tombol) dengan 4 baris dan 3 kolom. Jika suatu tombol
keypad ditekan maka karakter dari tombol tersebut akan tertayang pada penampil seven-
segment. Selain kode-sumber, sertakan juga diagram perangkat-keras yang dipergunakan
dalam rancangan anda. Perangkat-keras yang terlibat dalam perancangan ini mirip seperti
gambar berikut:
Jawaban:
#include <8051.h>
#define B0 P0_0 /* baris-0 keypad yang terhubung P0.0 */
#define B1 P0_1 /* baris-1 keypad yang terhubung P0.1 */
#define B2 P0_2 /* baris-2 keypad yang terhubung P0.2 */
#define B3 P0_3 /* baris-3 keypad yang terhubung P0.3 */
#define K0 P0_4 /* kolom-0 keypad yang terhubung P0.4 */
#define K1 P0_5 /* kolom-1 keypad yang terhubung P0.5 */
#define K2 P0_6 /* kolom-2 keypad yang terhubung P0.6 */
#define nilai P1 /* seven-segment terhubung dengan P1 */
#define A0 P3_3 /* Dua bit untuk memilih alamat dari */
#define A1 P3_4 /* keempat seven-segment yang tersedia */
#define satu 0xF9 //pendefinisian angka satu untuk seven segment
#define dua 0xA4 //pendefinisian angka dua untuk seven segment
#define tiga 0xB0 //pendefinisian angka tiga untuk seven segment
#define empat 0x99 //pendefinisian angka empat untuk seven segment
#define lima 0x92 //pendefinisian angka lima untuk seven segment
#define enam 0x82 //pendefinisian angka enam untuk seven segment
#define tujuh 0xF8 //pendefinisian angka tujuh untuk seven segment
#define delapan 0x80 //pendefinisian angka delapan untuk seven segment
#define sembilan 0x90 //pendefinisian angka sembilan untuk seven segment
#define enol 0xC0 //pendefinisian angka nol untuk seven segment
//keypad pagar
B0 = 0; B1 = 1; B2 = 1; B3 = 1; /* uji baris-0 */
if (K0 == 0) { /* tombol keypad (B0,K0) ditekan */
while (K0 == 0) ; /* tunggu sampai tombol dilepas */
nilai = enol; /* tampilkan sevensegment */
K0 = 1; /* awali semua kolom = HI */
}
//keypad enol
B0 = 0; B1 = 1; B2 = 1; B3 = 1; /* uji baris-0 */
if (K1 == 0) { /* tombol keypad (B0,K1) ditekan */
while (K1 == 0) ;
nilai = enol;
K1 = 1;
}
//keypad bintang
B0 = 0; B1 = 1; B2 = 1; B3 = 1; /* uji baris-0 */
if (K2 == 0) { /* tombol keypad (B0,K2) ditekan */
while (K2 == 0) ;
nilai = enol;
K2 = 1;
}
// keypad 9
B0 = 1; B1 = 0; B2 = 1; B3 = 1; /* uji baris-1 */
if (K0 == 0) { /* tombol keypad (B1,K0) ditekan */
while (K0 == 0) ;
nilai = sembilan;
K0 = 1;
//keypad 8
B0 = 1; B1 = 0; B2 = 1; B3 = 1; /* uji baris-1 */
if (K1 == 0) { /* tombol keypad (B1,K1) ditekan */
while (K1 == 0) ;
nilai = delapan;
K1 = 1;
}
//keypad 7
B0 = 1; B1 = 0; B2 = 1; B3 = 1; /* uji baris-1 */
if (K2 == 0) { /* tombol keypad (B1,K2) ditekan */
while (K2 == 0) ;
nilai = tujuh;
K2 = 1;
}
//keypad 6
B0 = 1; B1 = 1; B2 = 0; B3 = 1; /* uji baris-2 */
if (K0 == 0) { /* tombol keypad (B2,K0) ditekan */
while (K0 == 0) ;
nilai = enam;
K0 = 1;
}
//keypad 5
B0 = 1; B1 = 1; B2 = 0; B3 = 1; /* uji baris-2 */
if (K1 == 0) { /* tombol keypad (B2,K1) ditekan */
while (K1 == 0) ;
nilai = lima;
K1 = 1;
}
//keypad 4
B0 = 1; B1 = 1; B2 = 0; B3 = 1; /* uji baris-2 */
if (K2 == 0) { /* tombol keypad (B2,K2) ditekan */
while (K2 == 0) ;
nilai = empat;
K2 = 1;
}
//keypad 3
B0 = 1; B1 = 1; B2 = 1; B3 = 0; /* uji baris-3 */
if (K0 == 0) { /* tombol keypad (B3,K0) ditekan */
while (K0 == 0) ;
nilai = tiga;
K0 = 1;
}
//keypad 2
B0 = 1; B1 = 1; B2 = 1; B3 = 0; /* uji baris-3 */
if (K1 == 0) { /* tombol keypad (B3,K1) ditekan */
while (K1 == 0) ;
nilai = dua;
K1 = 1;
}
//keypad 1
B0 = 1; B1 = 1; B2 = 1; B3 = 0; /* uji baris-3 */
4. [10 poin] Radar atau radio detection and ranging adalah suatu sistem waktu-nyata yang
berfungsi untuk melacak suatu obyek dengan memanfaatkan gelombang radio untuk
menentukan jarak, sudut dan kecepatan obyek yang dilacak. Ketika radar dipergunakan
untuk melacak peluru kendali maka sistem waktu-nyata ini bersifat ketat (hard real-time
system), namun ketika radar dipergunakan untuk mengikuti perubahan cuaca maka sistem
ini bersifat longgar (soft real-time system). Pilihlah suatu sistem waktu-nyata yang (mirip
radar) pada penerapan tertentu bersifat ketat namun pada penerapan lainnya bersifat
longgar. Jelaskan cara kerja sistem yang anda pilih ketika bersifat ketat dan ketika bersifat
longgar.
Jawaban:
Robot pada saat dioperasikan untuk pembangkit listrik reaktor nuklir harus bersifat ketat agar
tidak terjadi kesalahan fatal yang terjadi. Untuk robot yang memainkan suatu alat musik lebih
bersifat longgar.
Processor yang ternaman pada pacemaker(pemacu jantung) harus selalu bersifat ketat agar
tidak menyebabkan hal-hal yang tidak dinginkan penggunanya., untuk sebuah otomasi mesin
cuci bisa bersifat longgar.
1.Tiga baris instruksi assembly di bawah ini dapat melakukan pengubahan menjadi HI
(setting) pada suatu alamat memori RAM yang dapat diakses secara bit:
MOV A,24h
ORL A,#00100000
MOV 24h,A
Hasil dari ketiga baris instruksi tersebut juga dapat diperoleh dengan melakukan satu instruksi
assembly saja, yaitu ...
MOV 25h,#01h SETB 24h SETB 25h MOV 24h,#10h ADD 25h,#01
2.Singkatan dari nama register di dalam CPU yang berfungsi menyimpan alamat instruksi
yang berikutnya akan dijalankan CPU adalah ...
lebar bus alamatnya adalah 16 saluran. panjang alamat dari komputer tersebut adalah
16 bit. lebar bus kontrolnya adalah 16 saluran. panjang dari setiap lokasi memorinya
adalah 16 bit. lebar bus datanya adalah 16 saluran.
4.Bit C atau CY (Carry flag), yang menandai telah terjadinya bawaan pada bit-7 dari suatu
operasi penambahan, berada di dalam register ...
IR PC ACC R7 PSW
MOV A,0Ah
6.Sistem radar (radio detection and ranging) dapat dipergunakan untuk mengendalikan lalu-
lintas pesawat terbang di bandara, namun dapat pula dipergunakan untuk memantau kondisi
cuaca. Pada penerapan yang kedua tersebut, sistem radar dapat digolongkan sebagai ...
7.Lokasi memori di dalam RAM dapat dinamakan dengan istilah di bawah ini KECUALI ...
8.Sistem tertanam (embedded system) dapat ditemukan di dalam berbagai piranti berikut ini
KECUALI ...
9.Bagian dari mikrokontroler 8051 yang membangkitkan detak kerja yang disebut sebagai
siklus mesin adalah ...
10.Fungsi alternatif dari kaki port 3 pada mikrokontroler 8051 yang dapat menerima data
secara serial dinamakan ...