Anda di halaman 1dari 8

LAPORAN PRAKTIKUM

Mikrokontroler 2

Dosen Pengajar:
Gilang Maulana

Oleh:

Ade Candra Gunawan 2B D3 – TE / 1831110047

Azizah Dian Sukowati 2B D3 – TE / 1831110007

Maulana Sofiyan Effensdi 2B D3 – TE / 1831110010

Wahyu Aji Kurniawan 2B D3 – TE / 1831110110

D-III TEKNIK ELEKTRONIKA


TEKNIK ELEKTRO
POLITEKNIK NEGERI MALANG
2020
I. Judul
- System Bilangan
II. Tujuan
- Menganalia system bilangan Hight dan Low
- Mencari nilai dari hasil unsigned char a = 1547
- Mengetahui jenis tipe data beserta jumlah data yang dapat ditampungnya

III. Alat dan Bahan


- Laptop - Minimum System
- LCD 16x2 - Downloader
- Jumper male-female

IV. Program
1. a = 2700

#include <mega16.h>

#include <alcd.h>

#include <stdio.h>

unsigned char a, buff[33];

void main(void)

DDRD = 0x0f;

PORTD = 0x0f;

lcd_init(16);

while(1){

a=2700;

lcd_gotoxy(0,0);

sprintf(buff," nilai a = %02d ",a);

lcd_puts(buff);

}
2. a = 2700, menampilkan nilai H dan L
#include <mega16.h>

#include <alcd.h>

#include <stdio.h>

unsigned char a, buff[33];

void main(void)

DDRD = 0x0f;

PORTD = 0x0f;

lcd_init(16);

while(1){

int a=2700;

unsigned char h = (a >> 8);

unsigned char l = (a);

lcd_gotoxy(0,0);

sprintf(buff, "a=%03d", a,h);

lcd_puts(buff);

lcd_gotoxy(0,1);

sprintf(buff,"H=%03d , L=%03d",h,l);

lcd_puts(buff);

}
3. a = 2700, menampilkan nilai H dan L yang telah ditentukan
#include <mega16.h>

#include <alcd.h>

#include <stdio.h>

unsigned char a, buff[33];

void main(void)

DDRD = 0x0f;

PORTD = 0x0f;

lcd_init(16);

while(1){

unsigned char H = 178;

unsigned char L = 10;

unsigned int jumlah = (H<<8) | (L);

lcd_gotoxy(0,0);

sprintf(buff, "H=%03d L=%03d", H,L);

lcd_puts(buff);

lcd_gotoxy(0,1);

sprintf(buff,"s=%d ",jumlah);

lcd_puts(buff);

}
V. Analisa Hasil
1. a = 2700
Pada program pertama, nilai yang dimasukkan adalah 2700. Namun nilai
yang ditampilkan pada LCD, a = 140. Hal ini terjadi karena tipe data yang
digunakan pada program pertama adalah unsigned char yang hanya dapat
menampung atau menampilkan maksimal 8bit data pertama. Sehingga, data yang
terbaca hanyalah 8bit pertama (byte ke-1)
Nilai yang ditampilkan 140 berdasarkan perhitungan 2n yang menghitung
sesuai dengan jumlah nilai yang dimasukkan (a=2700) dengan rincian sebagai
berikut:
-) 22 = 4 -) 27 = 128 -) 211 = 2048
-) 23 = 8 -) 29 = 512
4 + 8 + 128 + 512 + 2048 = 2700
Namun karena tipe data yang digunakan adalah char, maka data yang ditampilkan
hanya 8bit pertama (menggunakan urutan LSB), sehingga diperoleh nilai 4 + 8 +
128 = 140. Nilai sebagai berikut:

MSB LSB
1 0 0 0 1 1 0 0

2. a = 2700, h = 140, l = 10
Pada program kedua, nilai yang dimasukkan adalah 2700. Namun dapat
menampilkan pada LCD berupa nilai high dan low, H = 140 dan L = 10. Hal ini
terjadi karena tipe data yang digunakan pada program kedua ini adalah interger
yang dapat menampung atau menampilkan maksimal 16bit data, namun tetap
terbagi menjadi setiap 1 byte.
Nilai yang ditampilkan H = 140 dan L = 10 berdasarkan perhitungan 2n
yang menghitung sesuai dengan jumlah nilai yang dimasukkan (a=2700) dengan
rincian sebagai berikut:
-) 22 = 4 -) 27 = 128 -) 211 = 2048
-) 23 = 8 -) 29 = 512
4 + 8 + 128 + 512 + 2048 = 2700
Tipe data interger dapat menampung 16bit data yang terbagi menjadi 2
(setiap 8bit atau 1 byte). Perhitungan menggunakan urutan LSB. Pada byte ke-1,
menjadi nilai high, H = 140 dengan perhitungan 4 + 8 + 128 = 140. Sedangkan
pada byte ke-2 menjadi nilai lo2, L = 10. Perhitungan byte ke-2 ini dimulai lagi
dari 20 (LSB), sehingga perhitungan menjadi 2 + 8 = 10
Perhitungan seperti demikian dapat terjadi karena data digeser sebanyak
8bit ke kanan sehingga perhitungan pada byte ke-2 tetap dimulai dari 20
Nilai sebagai berikut:

MSB Byte ke-2 Byte ke-1 LSB


0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0

L = 10 H = 140

3. a = 2700, nilai h dan l ditentukan


Pada program ketiga, nilai yang dimasukkan adalah 2700. Namun nilai
yang ditampilkan pada LCD telah ditentukan berupa nilai high dan low, H = 178
dan L = 10. Kedua nilai tersebut dapat ditampilkan, karena tipe data yang
digunakan pada program kedua ini adalah interger yang dapat menampung atau
menampilkan maksimal 16bit data, namun tetap terbagi menjadi setiap 1 byte.
Nilai yang ditampilkan H = 140 dan L = 10 berdasarkan perhitungan 2n
yang menghitung sesuai dengan jumlah nilai yang dimasukkan (a=2700) dengan
rincian sebagai berikut:
-) 22 = 4 -) 27 = 128 -) 211 = 2048
-) 23 = 8 -) 29 = 512
4 + 8 + 128 + 512 + 2048 = 2700
Tipe data interger dapat menampung 16bit data yang terbagi menjadi 2
(setiap 8bit atau 1 byte). Perhitungan menggunakan urutan LSB. Pada byte ke-1,
biner menjadi 0 karena data digeser sebanyak 8bit ke kiri. Sedangkan pada byte
ke-2 ditempati oleh data high yang telah digeser. Perhitungan byte ke-2 ini
dimulai dari 28, sehingga menjadi 512 + 4096 + 8192 + 32768 = 45568. Lalu hasil
penjumlahan pada byte ke-2 ditambah dengan nilai pada low, L = 10 sehingga
menjadi 45578.

Nilai sebagai berikut:

MSB Byte ke-2 Byte ke-1 LSB


1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0

H = 178
VI. Dokumentasi
1. a = 2700
Nilai yang ditampilkan, a = 140

2. a = 2700
Nilai yang ditampilkan berupa high dan low
3. a = 2700

VII. Kesimpulan

Dari percobaan di atas dapat disimpulkan bahwa tampilan nilai yang di


masukkan 2700 pada LCD menjadi 140 menggunakan tipe data usigned char
yang hanya dapat menampung atau menampilkan maksimal 8bit. Sehingga data
yang terbaca hanyalah 8bit pertama (byte ke -1).

Sedangkan untuk nilai Hight atau Low penampilan pada LCD nilai Hight
140 dan Low 10, karena tipe data yang digunakan pada program interger yang
dapat menampung atau menampilkan maksimal 16bit data namun masih terbagi
menjadi setiap 1 byte.

Anda mungkin juga menyukai