Mikrokontroler 2
Dosen Pengajar:
Gilang Maulana
Oleh:
IV. Program
1. a = 2700
#include <mega16.h>
#include <alcd.h>
#include <stdio.h>
void main(void)
DDRD = 0x0f;
PORTD = 0x0f;
lcd_init(16);
while(1){
a=2700;
lcd_gotoxy(0,0);
lcd_puts(buff);
}
2. a = 2700, menampilkan nilai H dan L
#include <mega16.h>
#include <alcd.h>
#include <stdio.h>
void main(void)
DDRD = 0x0f;
PORTD = 0x0f;
lcd_init(16);
while(1){
int a=2700;
lcd_gotoxy(0,0);
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>
void main(void)
DDRD = 0x0f;
PORTD = 0x0f;
lcd_init(16);
while(1){
lcd_gotoxy(0,0);
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:
L = 10 H = 140
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
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.