PERCOBAAN 2
Input, Output, Operasi Bit dan Operasi Byte
3.1
Tujuan Percobaan
1. Mengetahui dan memahami penggunaan dan cara mengakses input dan
2.
3.2
DasarTeori
3.2.1
untuk
mengeluarkan/menulis
data
ke
port
3.2.2
Arithmatic Operator
Keterangan
+
-
Operasi penambahan
Operasi pengurangan
Operasi perkalian
Operasi pembagian
Operasi modulus
Increment-Decrement
Keterangan
Operator
++
Increment
--
Decrement
Bitwise operator adalah operator yang dipakai untuk operasi bit pada nilai
operan. Yang termasuk bitwise operator bisa dilihat pada Tabel 3.3.
Tabel 3.3 Bitwise Operator
Bitwise Operator
Keterangan
Operasi complement
&
Operasi AND
Operasi OR
Operasi XOR
Logical Operator
Keterangan
!
&
1
A
Operasi OR
Operasi XOR
&&
ketika ia menjadi bitwise operator. Hanya saja di logical operator, operan yang
dilibatkan disini harus bertipe boolean, yang hanya mempunyai nilai true atau
false.
Logical operator (operator logika) adalah operator yang sering dipakai
untuk operasi perbandingan dan selalu menghasilkan suatu nilai bertipe boolean
(true atau false). Yang termasuk logical operator bisa dilihat pada Tabel 3.5.
Logical Operator
Keterangan
==
!=
Operasi
>
dengan
Operasi perbandingan lebih besar
>=
<
dengan
Operasi perbandingan lebih kecil
<=
perbandingan
tidak
sama
dengan
right shift
>>>
unsigned
<<
shift
left shift
right
Combination Operator
Keterangan
+=
-=
+
Gabungan
dari operator = dan
*=
/=
*
Gabungan
dari operator = dan
%=
/
Gabungan
dari operator = dan
>>=
%
Gabungan dari operator = dan
>>>=
>>
Gabungan dari operator = dan
<<=
>>>
Gabungan
dari operator = dan
&=
<<
Gabungan
dari operator = dan
|=
&
Gabungan dari operator = dan
A=
|
Gabungan
dari operator = dan
A
panjang sebesar delapan bit. Byte yang mempunyai panjang delapan bit juga
dikenal sebagai octet. Sebuah byte bisa mempunyai 256 nilai yang berbeda (28
nilai, 0255). Nilai sebesar empat bit disebut juga nibble, dan bisa mempunyai 16
nilai yang berbeda (24 nilai, 015).
3.3
LED
Toggle Button
2. Komputer dan software Code-Vision AVR
3. Aplikasi Chip GUI
3.4
Langkah Percobaan
3.4.1
3.
5. Simpan data pada folder khusus dalam bentuk Compiler Files, Project
Files dan CodeWizard Project Files dengan nama yang sama.
6. Untuk menjalankan program yang telah disimpan sebelumnya, Klik
File>Open, dan pilih file percobaan 1.c. Amati fungsi DDR A, PORT A
dan MCUCR.
7. Untuk memprogram Mikrokontroler, hubungkan programmer atau USB
programmer, lalu Build Project (Shift+F9) atau Build All (Ctrl+F9) hingga
tidak ada Error.
8. Buka aplikasi chipGUI pada computer, lalu select hexafile sesuai file yg
telah disimpan tadi.
4.
6. Simpan data pada folder khusus dalam bentuk Compiler Files, Project
Files dan CodeWizard Project Files dengan nama yang sama.
7. Untuk memprogram Mikrokontroler, hubungkan programmer atau USB
programmer, lalu Build All (Ctrl+F9) hingga tidak ada Error.
8. Buka aplikasi CHIP45BOOT2 GUI pada computer, lalu select hexafile
sesuai file yg telah disimpan tadi.
9. Connect program dengan mikrokontroller, lalu flash program dan start
aplikasi. Maka program yang dibuat telah dijalankan.
10. Amati toggle dan LED yang ada di modul.
3.4.3
Operasi Bit
4.
6. Simpan data pada folder khusus dalam bentuk Compiler Files, Project
Files dan CodeWizard Project Files dengan nama yang sama.
7. Untuk memprogram Mikrokontroler, hubungkan programmer atau USB
programmer,nyalakan operasi bit, lalu Build Project (Shift+F9) atau Build
All (Ctrl+F9) hingga tidak ada Error.
8. Buka aplikasi CHIP45BOOT2 GUI pada computer, lalu select hexafile
sesuai file yg telah disimpan tadi.
9. Connect program dengan mikrokontroller, lalu flash program dan start
aplikasi. Maka program yang dibuat telah dijalankan.
10. Amati LED yang ada di modul.
11. Ulangi langkah berapa ke 7-11 untuk percobaan geser kiri dan geser
kanan.
3.4.4
Operasi Byte
4.
6. Simpan data pada folder khusus dalam bentuk Compiler Files, Project
Files dan CodeWizard Project Files dengan nama yang sama.
7. Untuk memprogram Mikrokontroler, hubungkan programmer atau USB
programmer, lalu nyalakan fungsi NOT, kemudian Build Project
(Shift+F9) atau Build All (Ctrl+F9) hingga tidak ada Error.
8. Buka aplikasi CHIP45BOOT2 GUI pada computer, lalu select hexafile
sesuai file yg telah disimpan tadi.
9. Connect program dengan mikrokontroller, lalu flash program dan start
aplikasi. Maka program yang dibuat telah dijalankan.
10. Amati toggle dan LED yang ada di modul.
11. Ulangi langkah 8-11 dengan variasi fungsi OR, AND dan XOR.
12. Untuk operasi byte amati pada fungsi PORT A.
3.5
Data Percobaan
3.5.1
Bit 7
Bit 6
Bit 5
Bit
Bit 3
Bit 2 Bit 1
4
DDRA
1
1
1
1
1
1
1
PORTA
1
1
1
0
0
0
0
LED
1
1
1
0
0
0
0
Keterangan : nilai 1 pada baris LED menandakan LED menyala
3.5.2
Bit 0
1
0
0
DDR A
PORT A
DDR B
PORT B
TOGGLE
LED
Bit 7
1
0
0
1
0
1
DDR A
PORT A
DDR B
PORT B
TOGGLE
LED
Bit 7
1
0
0
1
0
0
Bit 7
1
0
0
1
0
0
DDR A
PORT A
DDR B
PORT B
TOGGLE
LED
Bit 7
1
0
0
1
1
0
DDR A
PORT A
DDR B
PORT B
TOOGLE
LED
3.5.3
Operasi Bit
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Bit 0
Bit 1 A
Bit 1 B
LED
0
0
0
0
1
1
0
0
0
0
0
0
0
1
0
0
Geser
Iterasi
0
Bit 7
0
Bit 6
0
Bit 5
0
Bit 4
0
Bit 3
0
Bit 2
0
Bit 1
0
Bit 0
1
2
3
Kiri
4
5
6
01
10
00
00
00
00
00
00
Geser
Kanan
3.5.4
Operasi Byte
PORTA= 0xf0
PORTA= 0xff
Bit7
1
1
Bit 1 Bit 0
0
0
1
1
Bit PORT A
0
1
2
3
Toggle
0
0
0
0
LED
1
1
1
1
PIN B.4
0
0
1
1
PIN B.5
0
1
0
1
PORT A.7
0
1
1
1
PIN B.6
0
0
1
1
PIN B.7
0
1
0
1
PORT A.6
0
1
1
1
PIN B.4
0
0
1
PIN B.5
0
1
0
PORT A.7
0
0
0
PIN B.6
0
0
1
PIN B.7
0
1
0
PORT A.6
0
0
0
PIN B.4
0
0
1
1
PIN B.5
0
1
0
1
PORT A.7
1
0
0
1
PIN B.6
0
0
1
1
PIN B.7
0
1
0
1
3.6
3.6.1
3.6.1.1 Flowchart
start
Inisialisasi
Library <mega2560.h>
Library <stdio.h>
PORT A: 0b11100000
DDRA: 0xFF
end
PORT A.6
1
0
0
1
#include <stdio.h>
void main(void)
3.6.2.1 Flowchart
Start
Inisialisasi
library
<mega2560h>
library <stdio h>
PORT A = 0x00
DDR A = 0X0F
PORT B = 0Xf
DDR B = 0x00
PORTA.7=PIN
B.4;
PORTA.6=PIN
B.5;
PORTA.5=PIN
B.6;
End
Gambar 3.17 Flowchart Percobaan 2
#include <stdio.h>
void main(void)
{
PORTA = 0x00;
DDRA = 0xFF;
DDRB = 0x00;
while(1)
{
PORTA.7=PINB.4;
ada penekanan toggle PIN 4 maka PORT A, PIN 4 akan menjadi high
PORTA.6=PINB.5;
ada penekanan toggle PIN 1 maka PORT A, PIN 5 akan menjadi high
PORTA.5=PINB.6;
ada penekanan toggle PIN 2 maka PORT A, PIN 6 akan menjadi high
PORTA.4=PINB.7;
ada penekanan toggle PIN 3 maka PORT A, PIN 7 akan menjadi high
}
}
juga
akan
berguna
sebagai
sourcing
(sumber
tenaga)
yaitu
mengaliri
arus
dari
3.6.3
Operasi Bit
inisialisai
#include<mega2560.h>
#include<stdio.h>
#include<delay.h>
PORTA=(1<<1)|(1<<5); delay_ms(250);
for(x=0;x<8;x++){PORTA=1<<x;delay_ms(1000);
for(x=0;x<8;x++)
{PORTA=0b10000000>>x;delay_ms(50);}
Pemanggilanfungsi
operasi_bit( );
geser_kiri( );
geser_kanan( );
END
PORTA=(1<<1)|(1<<5)
delay_ms (250)
return
Gambar 3.20 Flowchart fungsi operasi_bit ( )
for(x=0;x<8;x++){PORTA=1<<x
delay_ms (1000)
return
start
for(x=0;x<8;x++)
{
PORTA=0b10000000>>x;
delay_ms (50)
}
return
Gambar 3.22 Flowchart fungsi geser_kanan ( )
#include <stdio.h>
#include <delay.h>
int x;
//menyertakan
bahwa
variable
sebagai
integer
void operasi_bit()
//Fungsi oprasi_bit
{
PORTA=(1<<1)|(1<<5);
}
void geser_kiri()
// fungi geser_kiri
{
for(x=0;x<8;x++)
//
fungsi
perulangan
yang
berarti
saat
nilai x=0 maka bit 0 akan bernilai 1 dan akan terus bertambah
sampai x < 8.
{PORTA=1<<x;
//PORT
bernilai
bergeser
ke
kiri
berarti
saat
}
void geser_kanan()
// fungsi geser_kanan
{
for(x=0;x<8;x++)
//
fungsi
perulangan
yang
nilai x=0 maka bit 0 akan bernilai 1 dan akan terus bertambah
sampai x < 8.
{PORTA=0b10000000>>x;
Fungsi Operasi_bit ( )
Fungsi Oprasi_bit ( ) ini digunakan untuk menyalakan LED pada
port A dengan bit 1 dan bit 5 menyala lainnya padam. Hal ini dikarenakan
ada statement:
PORTA=(1<<1)|(1<<5)
LED
Kondis
Bit 7
0
Bit 6
0
Bit 5
1
Bit 4
0
Bit 0
0
LED
Bit
Bit
Bit
Bit
Bit
Bit
Bit
Bit
Kondisi awal
Iterasi 2
Iterasi 3
Iterasi 8
7
0
0
0
1
6
0
0
0
0
5
0
0
0
0
4
0
0
0
0
3
0
0
0
0
2
0
0
1
0
1
0
1
0
0
0
1
0
0
0
LED
Bit
Bit
Bit
Bit
Bit
Bit
Bit
Bit
Kondisi awal
Iterasi 2
Iterasi 3
Iterasi 8
7
1
0
0
0
6
0
1
0
0
5
0
0
1
0
4
0
0
0
0
3
0
0
0
0
2
0
0
0
0
1
0
0
0
0
0
0
0
0
1
3.6.4
Operasi Byte
Inisialisasi
#include <mega2560.h>
#include <delay.h>
#include <stdio.h>
PemanggilanFungsi
gerbang_not ()
gerbang_or ()
gerbang_and()
gerbang_xor ()
delay_ms (500)
PORTA=0xf0;delay_ms(500);
PORTB=0xff; delay_ms(500);
PORTA.7=~PINB.4; PORTA.6=~PINB.5;
PORTA.5=~PINB.6;PORTA.4=~PINB.7;
PORTA.7=PINB.4|PINB.5;PORTA.6=PINB.6|PINB.7;
PORTA.7=PINB.4&PINB.5;PORTA.6=PINB.6&PINB.7;
PORTA.7=PINB.4^PINB.5;PORTA.6=PINB.6^PINB.7;
start
Gambar 3.23 Flowchart fungsi operasi byte
PORTA.7=~PINB.4;
PORTA.6=~PINB.5;
PORTA.5=~PINB.6;
PORTA.4=~PINB.7;
return
PORTA.7=PINB.4|PINB.5;
PORTA.6=PINB.6|PINB.7;
return
Gambar 3.25 Flowchart Fungsi gerbang_or ()
PORTA.7=PINB.4&PINB.5;
PORTA.6=PINB.6&PINB.7;
return
PORTA.7=PINB.4^PINB.5;
PORTA.6=PINB.6^PINB.7;
return
{
PORTA.7=~PINB.4;
pin B.4
PORTA.6=~PINB.5;
pin B.5
PORTA.5=~PINB.6;
pin B.6
PORTA.4=~PINB.7;
pin B.7
}
Void gerbang_or()
//fungsi Operasi_OR.
{
PORTA.7=PINB.4|PINB.5;
//output
pada
port
A.7
merupakan
pada
port
A.6
merupakan
//output
//fungsi Operasi_AND.
output
pada
port
A.7
dihasilkan
dari
{
{
while(1)
//melakukan looping
{
gerbang_not();
gerbang_or();
gerbang_and();
gerbang_xor();
Fungsi gerbang_not ( )
Ketika kita memanggil fungsi
untuk bit 4, bit 5 , bit 6, bit 7, akan berkebalikan dari input Pin 7, pin 6,
pin 5, pin 4. Hal ini dikarenakan :
PORTA.7=~PINB.4;
PORTA.6=~PINB.5;
PORTA.5=~PINB.6;
PORTA.4=~PINB.7;
Sebagai contoh pin_1 berada pada posisi 1 (high), maka output
akan berlogika 0 (low) atau LED padam, begitu juga sebaliknya.
)
Bit
0
Toggle
0
LED
1
Fungsi gerbang_or ( )
Ketika kita memanggil fungsi gerbang_or ( ) output PORT A akan
berlogika high (1) ketika salah satu input toggle bernilai 1. Hal ini
disebabkan oleh:
PORTA.7=PINB.4|PINB.5;
PORTA.6=PINB.6|PINB.7;
Dapat di lihat pada tabel di bawah ini :
Tabel 3.26 Fungsi gerbang_or
()
PIN B.4
PIN B.5
PORT A.7
PIN B.6
PIN B.7
0
0
1
1
0
1
0
1
0
1
1
1
0
0
1
1
0
1
0
1
PORT
A.6
0
1
1
1
Y
XY
0
0
1
1
0
1
1
1
Dari kedua tabel diatas dapat dilihat bahwa percobaan sudah sesuai
PIN B.5
PORT A.7
PIN B.6
PIN B.7
0
0
1
1
0
1
0
1
0
0
0
1
0
0
1
1
0
1
0
1
PORT
A.6
0
0
0
1
X
0
0
1
1
Y
XY
0
0
1
0
0
0
1
1
Dari kedua tabel diatas dapat di simpulkan bahwa hasil pecobaan
Fungsi gerbang_xor ( )
Ketika kita memanggil fungsi gerbang_xor ( ) output akan high
apabila inputnya saling berbeda. Hal ini disebabkan oleh:
PORTA.7=PINB.4^PINB.5;
PORTA.6=PINB.6^PINB.7;
Untuk lebih jelasnya dapat dilihat juga pada tabel berikut:
Tabel 3.30 Fungsi gerbang_xor ( )
PIN B.4
PIN B.5
PORT A.7
PIN B.6
PIN B.7
PORT
0
0
1
1
0
1
0
1
1
0
0
1
0
0
1
1
0
1
0
1
A.6
1
0
0
1
X
0
0
1
1
Y
0
1
0
1
XY
1
0
0
1
Dari kedua tabel diatas dapat di simpulkan bahwa hasil pecobaan sudah
sesuai dengan tabel kebenaran.
3.7
Kesimpulan
1. Pada percobaan 1, dapat diketahui bahwa LED pada bit 0 sampai 4 tidak
menyala. Ini disebabkan karena pada PORT A bit 0 sampai bit 4 diset ke 0
atau bernilai LOW. Sedangkan LED bit 5 sampai 7 menyala karena pada
PORT A bit 5 sampai 7 diset ke 1 alias HIGH.
2. Pada percobaan 2, saat toggle button 1 (PIN B.4) ada di posisi high maka
PORT A.7 bernilai high dan membuat LED menyala. Begitu juga
sebaliknya ketika toggle button 0 (PIN B.4) ada di posisi 0 (low) maka
PORT A.7 bernilai 0 (low) juga akan menyebabkan LED padam.
hexa
DDRB=0x0F
DDRB=0b00001111
//jika
ditulis
salam
biner
maka