Sei sulla pagina 1di 50

LAPORAN PRAKTIKUM VII DAN VIII

ANTARMUKA MIKROKONROLER DENGAN LED DAN


ANTARMUKA MIKROKONTROLER DENGAN TOGGLE SWITCH

Disusun untuk Memenuhi Tugas Matakuliah Praktikum


LAB. DIGITAL MIKROPROSESOR
yang Dibimbing oleh Drs. Suwasono, M.T.

Oleh :
KELOMPOK 5
AINUN NAJIB 150533604059
DWITHA FAJRI RAMADHANI 160533611410
EVA YULIA SAFITRI 160533611462
IKA DAMAYANTI 160533611505

UNIVERSITAS NEGERI MALANG


JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK
S1 PENDIDIKAN TEKNIK INFORMATIKA
NOVEMBER 2017
F. Data Hasil Percobaan
6.1 Antarmuka Mikrokonroler dengan LED
Tabel 6.1.1 Hasil Percobaan LED Program LED1 (Tampilan nyala)
Program Gambar Tampilan Nyala
#include <mega8535.h>
#include <delay.h>

void main(void)
{
PORTA=0x00;
PORTB=0xFF;

while (1)
{
PORTA=0x0f;
delay_ms(1000);
PORTA=0xf0;
delay_ms(1000);
}
Gambar 1. (a) Tampilan LED1 0x0f;
}

Gambar 1. (b) Tampilan LED1 0xf0;


Tabel 6.1. 2 Hasil Percobaan LED Program LED2 (Tampilan nyala)
Program Gambar Tampilan Nyala
#include <mega8535.h>
#include <delay.h>

void main(void)
{
PORTA=0x00;
PORTB=0xFF;

while (1)
{
PORTA=0b00001111;
delay_ms(1000);
PORTA=0b11110000;
delay_ms(1000);
}
Gambar 2. (a) Tampilan LED2 0b00001111;
}

Gambar 2. (b) Tampilan LED2 0x11110000;


Tabel 6.1.3 Hasil Percobaan LED Program LED3 (Tampilan nyala)
Program Gambar Tampilan Nyala
#include <mega8535.h>
#include <delay.h>

void main(void)
{
PORTA=0x00;
PORTB=0xFF;

while (1)
{
PORTA=0x55;
delay_ms(1000);
PORTA=0xaa;
delay_ms(1000);
}
Gambar 3. (a) Tampilan LED3 0x55;
}

Gambar 3. (b) Tampilan LED3 0xaa;


Tabel 6.1.4 Hasil Percobaan LED Program LED4 (Tampilan nyala)
Program Gambar Tampilan Nyala
#include <mega8535.h>
#include <delay.h>

void main(void)
{
PORTA=0x00;
PORTB=0xFF;

while (1)
{
PORTA=0b11100111;
delay_ms(1000);
PORTA=0b11011011;
delay_ms(1000);
PORTA=0b10111101;
Gambar 4. (a) Tampilan LED4 0b11100111;
delay_ms(1000);
PORTA=0b01111110;
delay_ms(1000);
PORTA=0b10111101;
delay_ms(1000);
PORTA=0b11011011;
delay_ms(1000);
}
}

Gambar 4. (b) Tampilan LED4 0b11011011;


Gambar 4. (c) Tampilan LED4 0b10111101;

Gambar 4. (d) Tampilan LED4 0b011111110;

Gambar 4. (e) Tampilan LED4 0b10111101;


Gambar 4. (f) Tampilan LED4 0b11011011;
Tabel 6.1.5 Hasil Percobaan LED Program LED5 (Tampilan nyala)
Program Gambar Tampilan Nyala
#include <mega8535.h>
#include <delay.h>

void main(void)
{
PORTA=0x00;
PORTB=0xFF;

while (1)
{
PORTA=0b00000001;
PORTA.2=1;
delay_ms(1000);
PORTA=0b00000010;
PORTA.1=1;
Gambar 5. (a) Tampilan LED5 0b00000001;
delay_ms(1000);
PORTA=0b00000100;
delay_ms(1000);
PORTA=0b00001000;
delay_ms(1000);
PORTA=0b00010000;
delay_ms(1000);
PORTA=0b00100000;
delay_ms(1000);
PORTA=0b01000000;
delay_ms(1000);
PORTA=0b10000000;
delay_ms(1000);
}
}
Gambar 5. (b) Tampilan LED5 0b00000010;
Gambar 5. (c) Tampilan LED5 0b00000100;

Gambar 5. (d) Tampilan LED5 0b00001000;

Gambar 5. (e) Tampilan LED5 0b00010000;


Gambar 5. (f) Tampilan LED5 0b00100000;

Gambar 5. (g) Tampilan LED5 0b01000000;

Gambar 5. (h) Tampilan LED5 0b10000000;


6.2 Antarmuka Mikrokontroler dengan Toggle Switch
Tabel 6.2.1 Hasil Percobaan Program Saklar1 (Tabel 2.1)
Saklar LED
Program
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
#include 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1
<mega8535.h>

void main(void)
{
PORTB=0x00;
DDRB=0xFF;
PORTC=0xFF;
DDRC=0x00;

while (1)
{
data_in=PINC;
PORTB=data_in; 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1
}
}

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

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

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

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

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Tabel 6.2.2 Hasil Percobaan Program Saklar2 (Tabel 3.1)
Saklar LED
Program
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
#include 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
<mega8535.h>

void main(void)
{

while (1)
{
data_in=PINC.0;
PORTB.7 = data_in;
}
}

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

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

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

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

Tabel 6.2.3 Hasil Percobaan No 24


Program Gambar Tampilan Nyala
#include <mega8535.h>

void main(void)
{

while (1)
{
//a
if(PINC.0==0){
PORTB.4 = 0;
}
else if(PINC.0==1){
PORTB.4 = 1; Gambar 8. (a) Switch bit 0 high, LED bit 4 menyala
}
//b
if(PINC.1==0){
PORTB.7 = 0;
}
else if(PINC.1==1){
PORTB.7 = 1;
}
}
}

Gambar 8. (b) Switch bit 1 high, LED bit 7 menyala

Tabel 6.2.4 Hasil Percobaan No 25


Program Gambar Tampilan Nyala
#include <mega8535.h>
#include <delay.h>

void main(void)
{

while (1)
{
//a
if(PINC.0==0){
PORTB.4 = 0;
} Gambar 9. (a) Switch bit 0 high, LED bit 4 menyala
else if(PINC.0==1){
PORTB.4 = 1;
}

//b
if(PINC.1==0){
PORTB.7 = 0;
}
else if(PINC.1==1){
PORTB.7 = 1;
}

//c Gambar 9. (b) Switch bit 1 high, LED bit 7 menyala


if(PINC.2==0){
PORTB = 0;
}
else if(PINC.2==1){
PORTB = 0b10101010;
}

//d
if(PINC.3==0){
PORTB = 0;
}
else if(PINC.3==1){
PORTB = 0b01010101;
}

//e
if(PINC.4==0){
Gambar 9. (c) Switch bit 2 high, LED menyala
PORTB = 0;
dengan konfigurasi ON-OFF-ON-OFF-ON-OFF-
}
else if(PINC.4==1){ ON-OFF (bit7-bit0)
PORTB = 0b11111111;
}
//f
if(PINC.5==0){
PORTB = 0;
}
else if(PINC.5==1){
PORTB = 0b00000000;
}

//g
if(PINC.6==0){ Gambar 9. (d) Switch bit 3 high, LED menyala
PORTB = 0;
dengan konfigurasi OFF-ON-OFF-ON-OFF-ON-
}
else if(PINC.6==1){
OFF- ON (bit7-bit0)
PORTB=0b0000001;
delay_ms(1000);
PORTB=0b0000010;
delay_ms(1000);
PORTB=0b0000100;
delay_ms(1000);
PORTB=0b0001000;
delay_ms(1000);
PORTB=0b0010000;
delay_ms(1000);
PORTB=0b0100000;
delay_ms(1000); Gambar 9. (e) Switch bit 4 high, LED menyala
PORTB=0b1000000; semua
delay_ms(1000);
PORTB=0b00000001;
delay_ms(1000);
}
//h
if(PINC.7==0){
PORTB = 0;
}
else if(PINC.7==1){
PORTB = 0b00111011;
delay_ms(1000);
PORTB = 0b00001010;
delay_ms(1000);
PORTB = 0b00111110;
delay_ms(1000);
PORTB = 0b00000101; Gambar 9. (f) Switch bit 5 high, LED padam semua
delay_ms(1000);
}
}
}

Gambar 9. (g.1) Switch bit 6 high, LED bit 0


menyala

Gambar 9. (g.2) Switch bit 6 high, LED bit 1


menyala
Gambar 9. (g.3) Switch bit 6 high, LED bit 2
menyala

Gambar 9. (g.4) Switch bit 6 high, LED bit 3


menyala

Gambar 9. (g.5) Switch bit 6 high, LED bit 4


menyala
Gambar 9. (g.6) Switch bit 6 high, LED bit 5
menyala

Gambar 9. (g.7) Switch bit 6 high, LED bit 6


menyala

Gambar 9. (g.8) Switch bit 6 high, LED bit 7


menyala
Gambar 9. (g.9) Switch bit 6 high, LED bit 0
menyala

Gambar 9. (h.1) Switch bit 7 high, LED biner


NIM 59 menyala

Gambar 9. (h.2) Switch bit 7 high, LED biner


NIM 10 menyala
Gambar 9. (h.3) Switch bit 7 high, LED biner
NIM 62 menyala

Gambar 9. (h.4) Switch bit 5 high, LED biner


NIM 05 menyala
G. Analisa Data
1. Percobaan Pertama Program LED 1

Gambar 1. (a) Tampilan LED1 0x0f;

Gambar 1. (b) Tampilan LED1 0xf0;


Analisis :
Tampilan nyala pada LED program LED 1 adalah sebagai berikut :
0 0 0 0 1 1 1 1
1 1 1 1 0 0 0 0

Pada program LED 1 ini input dari PORTA akan menyala secara bergantian
dimana:
Pada kondisi pertama Bit7 adalah low, Bit6 adalah low, Bit5 adalah low, Bit4
adalah low, Bit3 adalah high, Bit2 adalah high, Bit1 adalah high, Bit0 adalah
high. Hal tersebut dikarenakan masukan dari PORTA dideklarasikan dengan nilai
0x0f, LED dinyalakan dalam bentuk hexadesimal dimana 0f berarti 00001111.
Pada kondisi kedua Bit7 adalah high, Bit6 adalah high, Bit5 adalah high, Bit4
adalah high, Bit3 adalah low, Bit2 adalah low, Bit1 adalah low, Bit0 adalah low.
Hal tersebut dikarenakan input dari PORTA dideklarasikan dengan nilai 0xf0,
LED dinyalakan dalam bentuk hexadesimal dimana f0 berarti 11110000.
Kedua kondisi tersebut menyala secara bergantian dengan selang waktu 1
detik dikarenakan setelah mendeklarasikan input PORTA diberi script
delay_ms(1000); untuk mengaktifkan delay tersebut memerlukan header #include
<delay.h>.
Pada LED Bit5 Switch INPUT menyala bukan karena kesalahan program
namun dikarenakan pada saat praktikum Bit5 Switch INPUT diubah dalam
kondisi high atau lupa belum dimatikan (diubah menjadi kondisi low).
2. Percobaan Kedua Program LED 2

Gambar 2. (a) Tampilan LED2 0b00001111;

Gambar 2. (b) Tampilan LED2 0x11110000;


Analisis :
Tampilan nyala pada LED program LED 2 adalah sebagai berikut :
0 0 0 0 1 1 1 1
1 1 1 1 0 0 0 0

Pada program LED 2 ini input dari PORTA akan menyala secara bergantian
dimana:
Pada kondisi pertama Bit7 adalah low, Bit6 adalah low, Bit5 adalah low, Bit4
adalah low, Bit3 adalah high, Bit2 adalah high, Bit1 adalah high, Bit0 adalah
high. Hal tersebut dikarenakan masukan dari PORTA dideklarasikan dengan nilai
0b00001111, LED dinyalakan dalam bentuk biner.
Pada kondisi kedua Bit7 adalah high, Bit6 adalah high, Bit5 adalah high, Bit4
adalah high, Bit3 adalah low, Bit2 adalah low, Bit1 adalah low, Bit0 adalah low.
Hal tersebut dikarenakan input dari PORTA dideklarasikan dengan nilai
0b11110000, LED dinyalakan dalam bentuk biner.
Kedua kondisi tersebut menyala secara bergantian dengan selang waktu 1
detik dikarenakan setelah mendeklarasikan input PORTA diberi script
delay_ms(1000); untuk mengaktifkan delay tersebut memerlukan header #include
<delay.h>.
Pada LED Bit5 Switch INPUT menyala bukan karena kesalahan program
namun dikarenakan pada saat praktikum Bit5 Switch INPUT diubah dalam
kondisi high atau lupa belum dimatikan (diubah menjadi kondisi low).
3. Percobaan Ketiga Program LED 3

Gambar 3. (a) Tampilan LED3 0x55;

Gambar 3. (b) Tampilan LED3 0xaa;


Analisis :
Tampilan nyala pada LED program LED 3 adalah sebagai berikut :
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0

Pada program LED 3 ini input dari PORTA akan menyala secara bergantian
dimana:
Pada kondisi pertama Bit7 adalah low, Bit6 adalah high, Bit5 adalah low, Bit4
adalah high, Bit3 adalah low, Bit2 adalah high, Bit1 adalah low, Bit0 adalah high.
Hal tersebut dikarenakan masukan dari PORTA dideklarasikan dengan nilai 0x55,
LED dinyalakan dalam bentuk hexadesimal dimana 55 berarti 01010101.
Pada kondisi kedua Bit7 adalah high, Bit6 adalah low, Bit5 adalah high, Bit4
adalah low, Bit3 adalah high, Bit2 adalah low, Bit1 adalah high, Bit0 adalah low.
Hal tersebut dikarenakan input dari PORTA dideklarasikan dengan nilai 0xaa,
LED dinyalakan dalam bentuk hexadesimal dimana aa berarti 10101010.
Kedua kondisi tersebut menyala secara bergantian dengan selang waktu 1
detik dikarenakan setelah mendeklarasikan input PORTA diberi script
delay_ms(1000); untuk mengaktifkan delay tersebut memerlukan header #include
<delay.h>.
Pada LED Bit5 Switch INPUT menyala bukan karena kesalahan program
namun dikarenakan pada saat praktikum Bit5 Switch INPUT diubah dalam
kondisi high atau lupa belum dimatikan (diubah menjadi kondisi low).
4. Percobaan Keempat Program LED 4

Gambar 4. (a) Tampilan LED4 0b11100111;

Gambar 4. (b) Tampilan LED4 0b11011011;


Gambar 4. (c) Tampilan LED4 0b10111101;

Gambar 4. (d) Tampilan LED4 0b011111110;


Gambar 4. (e) Tampilan LED4 0b10111101;

Gambar 4. (f) Tampilan LED4 0b11011011;


Analisis :
Tampilan nyala pada LED program LED 4 adalah sebagai berikut :
1 1 1 0 0 1 1 1
1 1 0 1 1 0 1 1
1 0 1 1 1 1 0 1
0 1 1 1 1 1 1 0
1 0 1 1 1 1 0 1
1 1 0 1 1 0 1 1

Pada program LED 4 ini input dari PORTA akan menyala secara bergantian
dimana:
Pada kondisi pertama Bit7 adalah high, Bit6 adalah high, Bit5 adalah high,
Bit4 adalah low, Bit3 adalah low, Bit2 adalah high, Bit1 adalah high, Bit0 adalah
high. Hal tersebut dikarenakan masukan dari PORTA dideklarasikan dengan nilai
0b11100111, LED dinyalakan dalam bentuk biner.
Pada kondisi kedua Bit7 adalah high, Bit6 adalah high, Bit5 adalah low, Bit4
adalah high, Bit3 adalah high, Bit2 adalah low, Bit1 adalah high, Bit0 adalah
high. Hal tersebut dikarenakan masukan dari PORTA dideklarasikan dengan nilai
0b11011011, LED dinyalakan dalam bentuk biner.
Pada kondisi ketiga Bit7 adalah high, Bit6 adalah low, Bit5 adalah high, Bit4
adalah high, Bit3 adalah high, Bit2 adalah high, Bit1 adalah low, Bit0 adalah
high. Hal tersebut dikarenakan masukan dari PORTA dideklarasikan dengan nilai
0b10111101, LED dinyalakan dalam bentuk biner.
Pada kondisi keempat Bit7 adalah low, Bit6 adalah high, Bit5 adalah high,
Bit4 adalah high, Bit3 adalah high, Bit2 adalah high, Bit1 adalah high, Bit0
adalah low. Hal tersebut dikarenakan masukan dari PORTA dideklarasikan
dengan nilai 0b01111110, LED dinyalakan dalam bentuk biner.
Pada kondisi kelima Bit7 adalah high, Bit6 adalah low, Bit5 adalah high, Bit4
adalah high, Bit3 adalah high, Bit2 adalah high, Bit1 adalah low, Bit0 adalah
high. Hal tersebut dikarenakan masukan dari PORTA dideklarasikan dengan nilai
0b10111101, LED dinyalakan dalam bentuk biner.
Pada kondisi keenam Bit7 adalah high, Bit6 adalah high, Bit5 adalah low,
Bit4 adalah high, Bit3 adalah high, Bit2 adalah low, Bit1 adalah high, Bit0 adalah
high. Hal tersebut dikarenakan masukan dari PORTA dideklarasikan dengan nilai
0b11011011, LED dinyalakan dalam bentuk biner.
Keenam kondisi tersebut menyala secara bergantian dengan selang waktu 1
detik dikarenakan setelah mendeklarasikan input PORTA diberi script
delay_ms(1000); untuk mengaktifkan delay tersebut memerlukan header #include
<delay.h>.
Pada LED Bit5 Switch INPUT menyala bukan karena kesalahan program
namun dikarenakan pada saat praktikum Bit5 Switch INPUT diubah dalam
kondisi high atau lupa belum dimatikan (diubah menjadi kondisi low).
5. Percobaan Kelima Program LED 5

Gambar 5. (a) Tampilan LED5 0b00000001;

Gambar 5. (b) Tampilan LED5 0b00000010;


Gambar 5. (c) Tampilan LED5 0b00000100;

Gambar 5. (d) Tampilan LED5 0b00001000;


Gambar 5. (e) Tampilan LED5 0b00010000;

Gambar 5. (f) Tampilan LED5 0b00100000;


Gambar 5. (g) Tampilan LED5 0b01000000;

Gambar 5. (h) Tampilan LED5 0b10000000;


Analisis :
Tampilan nyala pada LED program LED 5 adalah sebagai berikut :
0 0 0 0 0 1 0 1
0 0 0 0 0 0 1 0
0 0 0 0 0 1 0 0
0 0 0 0 1 0 0 0
0 0 0 1 0 0 0 0
0 0 1 0 0 0 0 0
0 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0

Pada program LED 5 ini input dari PORTA akan menyala secara bergantian
dimana:
Pada kondisi pertama Bit7 adalah low, Bit6 adalah low, Bit5 adalah low, Bit4
adalah low, Bit3 adalah low, Bit2 adalah high, Bit1 adalah low, Bit0 adalah high.
Hal tersebut dikarenakan masukan dari PORTA dideklarasikan dengan nilai
0b00000001 kemudian sejajar dengan perintah PORTA.2=1 sehingga pada Bit2
LED berkondisi high pada waktu yang sama dengan kondisi program LED 5 yang
pertama, LED dinyalakan dalam bentuk biner.
Pada kondisi kedua Bit7 adalah low, Bit6 adalah low, Bit5 adalah low, Bit4
adalah low, Bit3 adalah low, Bit2 adalah low, Bit1 adalah high, Bit0 adalah low.
Hal tersebut dikarenakan masukan dari PORTA dideklarasikan dengan nilai
0b00000010, LED dinyalakan dalam bentuk biner.
Pada kondisi ketiga Bit7 adalah low, Bit6 adalah low, Bit5 adalah low, Bit4
adalah low, Bit3 adalah low, Bit2 adalah high, Bit1 adalah low, Bit0 adalah low.
Hal tersebut dikarenakan masukan dari PORTA dideklarasikan dengan nilai
0b00000100, LED dinyalakan dalam bentuk biner.
Pada kondisi keempat Bit7 adalah low, Bit6 adalah low, Bit5 adalah low, Bit4
adalah low, Bit3 adalah high, Bit2 adalah low, Bit1 adalah low, Bit0 adalah low.
Hal tersebut dikarenakan masukan dari PORTA dideklarasikan dengan nilai
0b00001000, LED dinyalakan dalam bentuk biner.
Pada kondisi kelima Bit7 adalah low, Bit6 adalah low, Bit5 adalah low, Bit4
adalah high, Bit3 adalah low, Bit2 adalah low, Bit1 adalah low, Bit0 adalah low.
Hal tersebut dikarenakan masukan dari PORTA dideklarasikan dengan nilai
0b00010000, LED dinyalakan dalam bentuk biner.
Pada kondisi keenam Bit7 adalah low, Bit6 adalah low, Bit5 adalah high, Bit4
adalah low, Bit3 adalah low, Bit2 adalah low, Bit1 adalah low, Bit0 adalah low.
Hal tersebut dikarenakan masukan dari PORTA dideklarasikan dengan nilai
0b00100000, LED dinyalakan dalam bentuk biner.
Pada kondisi ketujuh Bit7 adalah low, Bit6 adalah high, Bit5 adalah low, Bit4
adalah low, Bit3 adalah low, Bit2 adalah low, Bit1 adalah low, Bit0 adalah low.
Hal tersebut dikarenakan masukan dari PORTA dideklarasikan dengan nilai
0b01000000, LED dinyalakan dalam bentuk biner.
Pada kondisi kedelapan Bit7 adalah high, Bit6 adalah low, Bit5 adalah low,
Bit4 adalah low, Bit3 adalah low, Bit2 adalah low, Bit1 adalah low, Bit0 adalah
low. Hal tersebut dikarenakan masukan dari PORTA dideklarasikan dengan nilai
0b10000000, LED dinyalakan dalam bentuk biner.
Kedelapan kondisi tersebut menyala secara bergeser dari kanan ke kiri dengan
selang waktu 1 detik dikarenakan setelah mendeklarasikan input PORTA diberi
script delay_ms(1000); untuk mengaktifkan delay tersebut memerlukan header
#include <delay.h>.
Pada LED Bit5 Switch INPUT menyala bukan karena kesalahan program
namun dikarenakan pada saat praktikum Bit5 Switch INPUT diubah dalam
kondisi high atau lupa belum dimatikan (diubah menjadi kondisi low).
6. Percobaan Pertama Tabel 2.1 Togle
Analisis :
Saklar LED
No
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1
2 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1
3 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1
4 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1
5 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1
6 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1
7 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1
8 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1
9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Pada program Saklar1 ini keluaran LED tergantung pada masukan, sehingga
didapatkan INPUT=OUTPUT.

7. Percobaan Kedua Tabel 3.1 Togle


Analisis :
No Saklar LED
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
2 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0
3 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
4 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0
5 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
6 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0
7 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Pada program Saklar2 ini keluaran LED hanya menyalakan LED pada Bit7, hal
tersebut karena yang diperintahkan hanya pada satu masukan yaitu masukan saat
PINC.7.

8. Source code program pada percobaan langkah 24


#include <mega8535.h>
void main(void)
{
while (1)
{
if(PINC.0==0){
PORTB.4 = 0;
}
else if(PINC.0==1){
PORTB.4 = 1;
}
if(PINC.1==0){
PORTB.7 = 0;
}
else if(PINC.1==1){
PORTB.7 = 1;
}
}
}

9. Source code program pada percobaan langkah 25


#include <mega8535.h>
#include <delay.h>

void main(void)
{

while (1)
{
//a
if(PINC.0==0){
PORTB.4 = 0;
}
else if(PINC.0==1){
PORTB.4 = 1;
}

//b
if(PINC.1==0){
PORTB.7 = 0;
}
else if(PINC.1==1){
PORTB.7 = 1;
}

//c
if(PINC.2==0){
PORTB = 0;
}
else if(PINC.2==1){
PORTB = 0b10101010;
}

//d
if(PINC.3==0){
PORTB = 0;
}
else if(PINC.3==1){
PORTB = 0b01010101;
}

//e
if(PINC.4==0){
PORTB = 0;
}
else if(PINC.4==1){
PORTB = 0b11111111;
}

//f
if(PINC.5==0){
PORTB = 0;
}
else if(PINC.5==1){
PORTB = 0b00000000;
}

//g
if(PINC.6==0){
PORTB = 0;
}
else if(PINC.6==1){
PORTB=0b0000001;
delay_ms(1000);
PORTB=0b0000010;
delay_ms(1000);
PORTB=0b0000100;
delay_ms(1000);
PORTB=0b0001000;
delay_ms(1000);
PORTB=0b0010000;
delay_ms(1000);
PORTB=0b0100000;
delay_ms(1000);
PORTB=0b1000000;
delay_ms(1000);
PORTB=0b00000001;
delay_ms(1000);
}

//h
if(PINC.7==0){
PORTB = 0;
}
else if(PINC.7==1){
PORTB = 0b00111011;
delay_ms(1000);
PORTB = 0b00001010;
delay_ms(1000);
PORTB = 0b00111110;
delay_ms(1000);
PORTB = 0b00000101;
delay_ms(1000);
}
}
}

H. Kesimpulan
Pada hasil praktikum disimpulkan bahwa :
1. Dari praktikum ini dapat disimpulkan bahwa LED atau Light Emitting Diode
adalah komponen elektronika yang dapat memancarkan cahaya monokromatik
ketika diberi tegangan maju. LED merupakan keluarga dioda yang terbuat dari
bahan semikonduktor. LED ini dapat digunakan untuk mempraktikan sistem
mikrokontroler. Dalam mempraktikan sistem ini membutuhkan aplikasi
(AVR, dan Khazama), trainer, alat pendukug seperti USB untuk
menghubungkan trainer dengan PC dan suatu program. Program ini dibuat
pada AVR, program ini akan dimasukkan pada mikrokontroler. Dalam
program tersebut berisi perintah dasar mengeluarkan data yang akan
ditampilkan berupa nyala LED, perintah dasar mengeluarkan data byte bisa
berupa bilangan desimal, heksadesimal, biner, dan perintah data per bit.
2. Hasil yang dikeluarkan dari LED adalah output dalm bentuk logika dengan
masukan program dari listing program yang telah dilakukan sebelumnya,
yaitu jika masukan berupa bilangan heksa desimal maka bentuk keluaran atau
output pada LED adalah bentuk dalam bilangan binernya misalkan 0x0f =
0b00001111 dengan logika tersebut jika keluarannya nol (0) maka LED akan
mati dan begitu juga sebaliknya jika keluarannya logika satu (1) maka LED
akan menyala. Lama perpindahan antara listing program yang satu dengan
listing program yang lainnya tergantung pada delay masukan pada program
yang dibuat.
3. Mengantarmukakan mikrokontroler dengan rangkaian input saklar toggle
adalah sebagai berikut :
a. Menyusun program untuk mengantarmukakan rangkaian input saklar
toggle dengan program Code Vision AVR. Program harus disusun
sesuai antara saklar dengan nyala LED yang diinginkan. Bilangan
yang bisa digunakan pada program adalah bilangan biner, decimal, dan
hexadecimal.
b. Program yang sudah dibuat ditransfer dari computer ke dalam
mikrokontroler dengan menggunakan ISP downloader.
c. Jika program yang dibuat sudah benar, maka saklar akan mempunyai
fungsi yang sesuai dengan nyala LED yang diinginkan.
4. Untuk memprogram mikrokontroler dalam membaca data input dari saklar
toggle:
a. Inisialisasi PORT yang akan digunakan.
b. Penentuan saklar yang akan digunakan sebagai input
Statement : data_in = PINX;
Contoh: data_in = PINB;
c. Sebelum membaca data, perlu dibuat deklarasi variabel untuk data
yang dimasukkan. Data bisa bertipe char. Deklarasi variabel
diletakkan di variabel local pada main program.
void main (void)
{
//Declare your local variables here
unsigned char data_in;

d. Untuk membaca data byte ke PORTX (X=A, B, C, D) digunakan
statement
data_in = PINX;
contoh: data_in = PINB;
e. Untuk membaca data bit ke PORTX.Y (X=A, B, C, D, dan Y=0, 1, 2 ,
3, 4, 5, 6, 7) digunakan statement
data_in = PINX.Y;
contoh: data_in = PINB.1;
f. Mengirim data per bit ke PORTX.Y (X=A, B, C, D, dan Y=0, 1, 2 , 3,
4, 5, 6, 7).
Contoh statement yang digunakan yakni:
PORTX.Y = data;
PORTB.1 = 1;
g. Menambahkan program utama.
Misal: data_in=PINC; //baca saklar di PORTC
PORTB=data_in; //tampilkan logika saklar ke LED di PORTB
h. Program IF .. Else..dapat digunakan sebagai logika untuk menentukan
suatu nyala LED dengan saklar.
i. Program IF .. Else .. dapat digunakan secara berurutan pada 1
program.
I. Tugas
1. Analisa Program LED1 – LED5! (Jobsheet LED)
Jawab :
a. Program LED 1
Pada program ini LED menyala secara bergantian dengan selang
waktu 1 detik dikarenakan setelah mendeklarasikan input PORTA diberi
script delay_ms(1000); untuk mengaktifkan delay tersebut memerlukan
header #include <delay.h>, LED menyala dalam bentuk bilangan hexa.
Hal tersebut dapat diketahui pada pendeklarasian nilai PORTA=0x0f
menghasilkan kondisi LED 00001111 dan PORTA=0xf0 menghasilkan
kondisi LED 11110000. Huruf x tersebut menunjukkan nilai heksa-
desimal.
b. Program LED 2
Pada program ini LED menyala secara bergantian dengan selang
waktu 1 detik dikarenakan setelah mendeklarasikan input PORTA diberi
script delay_ms(1000); untuk mengaktifkan delay tersebut memerlukan
header #include <delay.h>, program LED 2 menghasilkan nyala LED
yang sama dengan LED 1, hanya saja pada program LED 2 menyala
dalam bentuk bilangan biner.
Hal tersebut dapat diketahui pada pendeklarasian nilai
PORTA=0b00001111 menghasilkan kondisi LED 00001111 dan
PORTA=0b11110000 menghasilkan kondisi LED 11110000. Huruf b
tersebut menunjukkan nilai biner.
c. Program LED 3
Pada program ini LED menyala secara bergantian dengan selang
waktu 1 detik dikarenakan setelah mendeklarasikan input PORTA diberi
script delay_ms(1000); untuk mengaktifkan delay tersebut memerlukan
header #include <delay.h>, LED menyala dalam bentuk bilangan hexa.
Hal tersebut dapat diketahui pada pendeklarasian nilai PORTA=0x55
menghasilkan kondisi LED 01010101 dan PORTA=0xaa menghasilkan
kondisi LED 10101010. Huruf x tersebut menunjukkan nilai heksa-
desimal.
d. Program LED 4
Pada program ini LED menyala secara bergantian dengan selang
waktu 1 detik dikarenakan setelah mendeklarasikan input PORTA diberi
script delay_ms(1000); untuk mengaktifkan delay tersebut memerlukan
header #include <delay.h>, LED menyala dalam bentuk bilangan biner.
Hal tersebut dapat diketahui pada pendeklarasian nilai
PORTA=0b11100111 menghasilkan kondisi LED 11100111,
PORTA=0b11011011 menghasilkan kondisi LED 11011011,
PORTA=0b10111101 menghasilkan kondisi LED 10111101, dan
PORTA=0b01111110 menghasilkan kondisi LED 01111110. Huruf b
tersebut menunjukkan nilai biner.
e. Program LED 5
Pada program ini LED menyala secara bergeser dengan selang waktu
1 detik dikarenakan setelah mendeklarasikan input PORTA diberi script
delay_ms(1000); untuk mengaktifkan delay tersebut memerlukan header
#include <delay.h>, LED menyala dalam bentuk bilangan biner.
Hal tersebut dapat diketahui pada pendeklarasian nilai
PORTA=0b00000001 dan PORTA.2=1 menghasilkan kondisi LED
00000101, PORTA=0b00000010 menghasilkan kondisi LED 00000010,
PORTA=0b00000100 menghasilkan kondisi LED 00000100, PORTA=
0b00001000 menghasilkan kondisi LED 00001000, PORTA=0b00010000
menghasilkan kondisi LED 00010000, PORTA=0b00100000 menghasil-
kan kondisi LED 00100000, PORTA=0b01000000 menghasilkan kondisi
LED 01000000, PORTA=0b10000000 menghasilkan kondisi LED
10000000. Huruf b tersebut menunjukkan nilai biner.

2. Apakah persamaan dan perbedaan program LED1 dan program LED2?


(Jobsheet LED)
Jawab :
Persamaan pada program LED 1 dan program LED 2 adalah hasil nyala
LED yaitu bergantian antara kondisi LED 00001111 dan 11110000.
Perbedaan pada program LED 1 dan program LED 2 adalah pada program
LED 1 LED dinyalakan dalam bentuk nilai heksadesimal, sedangkan pada
program LED 2 LED dinyalakan dalam bentuk nilai biner.

3. Instruksi apa yang digunakan untuk mengeluarkan data ke LED? (Jobsheet


LED)
Jawab :
Untuk mengeluarkan data yang telah dibuat pada program ke LED dengan
cara mengeksekusi “Auto Program” pada Khazama AVR Programmer.

4. Analisa Program Saklar1 dan Saklar2! (Jobsheet Togle)


Jawab :
Pada program Saklar1 ini keluaran LED tergantung pada masukan,
sehingga didapatkan INPUT=OUTPUT.
Sedangkan pada program Saklar2 ini keluaran LED hanya menyalakan
LED pada Bit7, hal tersebut karena yang diperintahkan hanya pada satu
masukan yaitu masukan saat PINC.7.

5. Instruksi apa yang digunakan untuk membaca data input? (Jobsheet Togle)
Jawab :
Untuk membaca data input diperlukan instruksi sebagai berikut:
a. Ubah deklarasi variabel pada void main().
b. Ganti DDR (Data Direction Register) dengan nilai 0x00 sebagai input 1
PORT dan PORT menjadi 0xFF sebagai input pull up.
c. Beri variabel pada input (contoh: unsigned char).
d. Input diberi nama PINX, X dapat diubah sesuai dengan kebutuhan
(contoh: PINC)
6. Apakah perbedaan program yang menggunakan if dan if-else? (Jobsheet
Togle)
Jawab :
Pada operator kondisi if akan menjalankan atau memproses script yang
ada dalam kurung kurawal if tersebut apabila pernyataan terpenuhi, namun
apabila pernyataan tidak terpenuhi maka tidak akan menjalankan atau
memproses script yang ada dalam kurung kurawal if tersebut.
Sedangkan pada operator kondisi if-else, if akan menjalankan atau
memproses script yang ada dalam kurung kurawal if tersebut apabila
pernyataan terpenuhi, else akan menjalankan atau memproses script yang ada
dalam kurung kurawal else tersebut apabila pernyataan if tidak terpenuhi

J. Daftar Pustaka
_____, 2011. Pemograman Mikrokontroler, https://embeddednesia.com/
v1/?p=282, diakses pada tanggal 02 Desember 2017.
Ansori, Akhmad Insya. 2013. Antarmuka Mikrokontroller dengan 8 Buah Toggle
Switch, http://insyaansori.blogspot.co.id/2013/02/antarmuka-mikrokontrol
ler-dengan-8-buah.html, diakses pada tanggal 02 Desember 2017.
Pramesti, Dwitha. 2010. Menyalakan LED menggunakan CodeVision AVR,
https://tugaspti140110100051.wordpress.com/2010/12/09/menyalakan-led-
menggunakan-codevision-avr/, diakses pada tanggal 02 Desember 2017.
Puspita, Dian. 2010. Antarmuka Mikrokontroler Dengan Saklar Toggle,
http://puspitaasmara.blogspot.co.id/2010/12/antarmuka-mikrokontroler
dengan-saklar.html, diakses pada tanggal 02 Desember 2017.
Setiadi, Indra. 2012. Perancangan Dan Pembuatan Rangkaian Mikrokontroler
Dengan Menggunakan Mikrokontroler ATMEGA 8535 Sebagai Training
KIT Laboratorium Teknik Elektro. Skripsi tidak diterbitkan.
Batam:Universitas Batam.

Potrebbero piacerti anche