Anda di halaman 1dari 9

Praktikum CodeVisionAVR

PRAKTIKUM INPUT OUTPUT


1.1. TUJUAN
Memahami dan mampu menggunakan input – ouput pada IC ATMega8535
dengan program Code Vision AVR

1.2. TEORI DASAR

1.2.1. Pin – pin yang digunakan

VCC Digital supply voltage.

GND Ground.

Port A (PA7.. PA0) Port A sebagai input analog untuk A/D converter.
Port A juga sebagai 8-bit bi-directional I/O Port, jika A/D Converter
tidak digunakan. Output buffer port A mempunyai karakteristik drive
yang simetris dengan kedua sink tinggi dan kemampuan sumber. Ketika
pin PA0 sampai PA7 dgunakan sebagai input dan disetting pada keadaan
pull low, maka akan memiliki arus sama dengan arus sumber jika
internal pull-up resistor aktif, Pins port A dalam keadaan tri-stated jika
kondisi reset aktif, meskipun clock tidak berjalan

Port B (PB7..PB0)
Port B sebagai 8-bit directional I/O Port dengan internal pull-up resistor.
Output buffer port B mempunyai karakteristik drive yang simetris
dengan kedua sink tinggi dan kemampuan sumber, Ketika pin PB0
sampai PB7 dgunakan sebagai input dan disetting pada keadaan pull low,
maka akan memiliki arus sama dengan arus sumber jika internal pull-up
resistor aktif, Pins port B dalam keadaan tri-stated jika kondisi reset
aktif, meskipun clock tidak berjalan.

Port C (PC7..PC0)
Port C sebagai 8-bit directional I/O Port dengan internal pull-up resistor.
Output buffer port C mempunyai karakteristik drive yang simetris
dengan kedua sink tinggi dan kemampuan sumber, Ketika pin PC0
sampai PC7 dgunakan sebagai input dan disetting pada keadaan pull low,
maka akan memiliki arus sama dengan arus sumber jika internal pull-up
resistor aktif, Pins port C dalam keadaan tri-stated jika kondisi reset
aktif, meskipun clock tidak berjalan

Port D (PD7..PD0)
Port B sebagai 8-bit directional I/O Port dengan internal pull-up resistor.
Output buffer port B mempunyai karakteristik drive yang simetris
dengan kedua sink tinggi dan kemampuan sumber, Ketika pin PA0
sampai PA7 dgunakan sebagai input dan disetting pada keadaan pull
low, maka akan memiliki arus sama dengan arus sumber jika internal
pull-up resistor aktif, Pins port A dalam keadaan tri-stated jika kondisi
reset aktif, meskipun clock tidak berjalan

1
Praktikum CodeVisionAVR

RESET
Input Reset, keadaan low pada pin ini diberikan yang tidak lebih dari
besar pulsa minimum akan mengaktifkan reset, meskipun clock tetap
berjalan.
XTAL1
Input ke inverting oscillator amplifier dan input ke operasi sirkuit
internal clock
XTAL2
Output dari inverting oscillator amplifier
AVCC
Adalah pin suplai tegangan untuk Port A dan A/D Converter, hal itu
menjadikannya sebagai koneksi external untuk Vcc, meskipun ADC
tidak digunakan, jika ADC digunakan, maka AVCC dihubungkan ke
Vcc melalui low-pass filter
AREF
AREF adalah pin untuk referensi analog pada A/D Converter

1.2.2. Perintah – perintah yang digunakan

#include <mega8535.h>
Perintah yang mengindikasikan bahwa perintah di bawah
digunakan untuk IC ATMega8535
#include <delay.h>
Menginformasikan bahwa perintah delay akan digunakan pada
program yang dikerjakan
unsigned char data1, data2, data3;
pemberian variable karakter yaitu data1,data2,data3
void main (void) {}
Menunjukkan bahwa perintah di bawah adalah perintah utama
dengan tanpa nilai kembalian (return)
delay_ms()
Memberikan nilai jeda waktu dengan satuan ms(milisecond)
DDRx=0x00
Sebagai inisialisasi bahwa port yang di gunakan (x) sebagai
input
PORTx=0x00
Perintah ini mengikuti inisialisasi port yang di gunakan, jika
mengikuti port yang digunakan input maka akan menandakan keadaan
Tri-state
PORTx=0xff
Perintah ini mengikuti inisialisasi port yang di gunakan, jika
mengikuti port yang digunakan input maka akan menandakan keadaan
Pull-up
DDRx=0xff
Sebagai inisialisasi bahwa port yang di gunakan (x) sebagai
input
PORTx=0x00
Perintah ini mengikuti inisialisasi port yang di gunakan, jika
mengikuti port yang digunakan output diberi nilai 1
PORTx=0xff

2
Praktikum CodeVisionAVR

Perintah ini mengikuti inisialisasi port yang di gunakan, jika


mengikuti port yang digunakan output diberi nilai 0
IF () {};
perintah yang digunakan untuk kondisi persyaratan, jika syarat
yang diberikan terpenuhi maka perintah yang ada di bawah akan di
kerjakan

1.3. CARA KERJA SEVEN SEGMEN


Proses pembentukan angka 0 – 9 pada seven semen
Tipe seven segmen yang digunakan adalah seven segmen tipe common
anode, artinya hanya memerlukan pemicu ground untuk bisa berfungsi,
untuk menampilkan angka tersebut dibutuhkan konfigurasi tertentu
dengan asumsi bahwa untuk dapat menyalakan led pada seven segmen
adalah dengan memberi nilai 0 (grond), untuk memudahkan penentuan
angka dapat dilihat pada table di bawah

P7 P6 P5 P4 P3 P2 P1 P0 HASIL
ANGKA DESIMAL
dot g F e d c b a (HEX)
0 1 1 0 0 0 0 0 0 12 0 C0
1 1 1 1 1 1 0 0 1 16 9 F9
2 1 0 1 0 0 1 0 0 10 4 A4 a

3 1 1 1 0 0 0 0 0 15 0 E0
4 1 0 0 1 1 0 0 1 9 9 99 f b
5 1 0 0 1 0 0 1 0 9 2 92
6 1 0 0 0 0 0 1 0 8 2 82 g
7 1 1 1 1 1 0 0 0 16 8 F8 e c
8 1 0 0 0 0 0 0 0 8 0 80
9 1 0 0 1 0 0 0 0 9 0 90 d dot
A 1 0 0 0 1 0 0 0 8 8 88
B 1 0 0 0 0 0 0 0 8 0 80
C 1 1 0 0 0 1 1 0 12 6 C6
D 1 1 0 0 0 0 0 0 12 0 C0
E 1 0 0 0 0 1 1 0 8 6 86
F 1 0 0 0 1 1 1 0 8 14 8E
- 1 0 1 1 1 1 1 1 11 15 BF
8 4 2 1 8 4 2 1

- P7 – P0 adalah pin yang berada pada microcontroller tepatnya pada PORTC


- a – g adalah penandaan pada seven segmen (disamping tabel)
- Desimal adalah konversi secara 4 bit pada tebel (dot g f e) dan (d c b a)
- Hex adalah konversi dari decimal kedalam bentuk bit yang nantinya akan
digunakan pada program

3
Praktikum CodeVisionAVR

1.4. PERCOBAAN
1.4.1. Percobaan 1
 Judul : Menampilkan seven segment nyala mati (kedap-kedip)
 Listing Program

#include <mega8535.h>
#include <delay.h>
void main(void)
{
PORTC=0X00;
DDRC=0XFF;
DDRA=0X00;
PORTA=0XFF;

while (1)
{
PORTC=0XFF;
delay_ms(500);
PORTC=0X00;
delay_ms(500);
}; }

 Flowchart

START

PC = Output

While (1)

PC = mati
delay_ms(1000)
PC = nyala
delay_ms(1000)

 Kesimpulan
Memrogaram IC ATMEGA untuk menentukan pengaturan delay
pada output.

4
Praktikum CodeVisionAVR

1.4.2. Percobaan 2
 Judul : Menampilkan angka 0 – 9

 Listing Program

#include <mega8535.h>
#include <delay.h>
void main(void)
{
PORTC=0X00;
DDRC=0XFF;

while (1)
{
//Place your code here
PORTC=0XC0; //kode untuk menyalakan angka 0 di segment
delay_ms(1000);
PORTC=0XF9; //kode untuk menyalakan angka 1 di segment
delay_ms(1000);
PORTC=0XA4; //kode untuk menyalakan angka 2 di segment
delay_ms(1000);
PORTC=0XB0; //kode untuk menyalakan angka 3 di segment
delay_ms(1000);
PORTC=0X99; //kode untuk menyalakan angka 4 di segment
delay_ms(1000);
PORTC=0X92; //kode untuk menyalakan angka 5 di segment
delay_ms(1000);
PORTC=0X82; //kode untuk menyalakan angka 6 di segment
delay_ms(1000);
PORTC=0XF8; //kode untuk menyalakan angka 7 di segment
delay_ms(1000);
PORTC=0X80; //kode untuk menyalakan angka 8 di segment
delay_ms(1000);
PORTC=0X90; //kode untuk menyalakan angka 9 di segment
delay_ms(1000);
};

5
Praktikum CodeVisionAVR

 Flowchart

START

PA = Input
PC = Output

While (1)

PC = 0
delay_ms(1000)
PC = 1
delay_ms(1000)
PC = 2
delay_ms(1000)
No
PC = 3
delay_ms(1000)
PC = 4
delay_ms(1000)
PC = 5
delay_ms(1000)
PC = 6
delay_ms(1000)
PC = 7
delay_ms(1000)
PC = 8
delay_ms(1000)
PC = 9
delay_ms(1000)

 Cara kerja Program


Pada program percobaan 2 ini mikrokontroler akan menyimpan data input
berupa angka dari 0-9 dan menampilkannya pada PORTC sebagai output melalui
sebuah seven segment.

 Kesimpulan
Untuk menampilkan angka pada seven segment maka pada membutuhkan
inisialisasi yang berbeda pada PORT output.

6
Praktikum CodeVisionAVR

1.4.3. Percobaan 3
 Judul : Menampilkan tanggal lahir dengan 3 inputan

 Listing Program

#include <mega8535.h> delay_ms(1000); // 0


#include <delay.h> PORTC=0xA4;
unsigned char data1, data2, data3; delay_ms(1000); // 2
PORTC=0xBF;
void main(void) delay_ms(1000); // -
{ PORTC=0xC0;
PORTA=0xFF; delay_ms(1000); // 0
DDRA=0x00; PORTC=0xF9;
PORTC=0x00; delay_ms(1000); // 1
DDRC=0xFF; PORTC=0xBF;
delay_ms(1000); // -
PORTC=0x90;
while (1) delay_ms(1000); // 9
{ PORTC=0xCO;
data1=PINA.0; delay_ms(1000); // 0
data2=PINA.1; PORTC=0x7F;
data3=PINA.2; delay_ms(1000); // TITIK
}
if (data1==0)// Ultah Nanang
{ PORTC=0xF9; if (data3==0)// Ultah Intan
delay_ms(1000); // 1
PORTC=0xF8; { PORTC=0xF9;
delay_ms(1000); // 7 delay_ms(1000); // 1
PORTC=0xBF; PORTC=0x90;
delay_ms(1000); // - delay_ms(1000); // 9
PORTC=0xC0; PORTC=0xBF;
delay_ms(1000); // 0 delay_ms(1000); // -
PORTC=0xF9; PORTC=0xC0;
delay_ms(1000); // 1 delay_ms(1000); // 0
PORTC=0xBF; PORTC=0x99;
delay_ms(1000); // - delay_ms(1000); // 4
PORTC=0x90; PORTC=0xBF;
delay_ms(1000); // 9 delay_ms(1000); // -
PORTC=0xF9; PORTC=0x90;
delay_ms(1000); // 1 delay_ms(1000); // 9
PORTC=0x7F; PORTC=0xC0;
delay_ms(1000); // TITIK delay_ms(1000); // 0
} PORTC=0x7F;
delay_ms(1000); // TITIK
if (data2==0)// Ultah Yahya }
};
{ PORTC=0xC0; }

7
Praktikum CodeVisionAVR

 Flowchart

START

PA = Input
PC = Output

While (1)

Yes
Datain = PA.0

No
PC = 1
delay_ms(1000)
PC = 7
No delay_ms(1000)
Datain = PA.1 PC = -
delay_ms(1000)

Yes
PC = 0
PC = 0 delay_ms(1000)
delay_ms(1000) PC = 1
Datain = PA.2 PC = 2 delay_ms(1000)
No delay_ms(1000) PC = -
PC = - delay_ms(1000)
delay_ms(1000)
Yes

PC = 1 PC = 9
PC = 0
delay_ms(1000) delay_ms(1000)
delay_ms(1000)
PC = 9 PC = 1
PC = 1
delay_ms(1000) delay_ms(1000)
delay_ms(1000)
PC = -
PC = -
END delay_ms(1000)
delay_ms(1000)

PC = 0
PC = 9
delay_ms(1000)
delay_ms(1000)
PC = 4
PC = 0
delay_ms(1000)
delay_ms(1000)
PC = -
delay_ms(1000)

PC = 9
delay_ms(1000)
PC = 0
delay_ms(1000)

8
Praktikum CodeVisionAVR

 Cara Kerja Program


Microcontroller akan menyimpan tiga data mengenai tanggal lahir yang akan
ditampilkan pada PORTC yaitu sebuah seven segmen sebagai outputnya, karena
menggunakan hanya sebuah seven segmen maka tinggal akan ditampilkan secara
bergantian, untuk menentukan tanggal mana yang akan ditampilkan maka ada tiga
inputan yaitu pada PINA.0 ,PINA.1 ,PINA.2.
Pertama kali yang akan di cek adalah PINA.0 jika PINA.0 bernilai true maka
perintah dibawahnya akan di jalankan, dan akan berulang kembali pada pengecekan
awal yaitu PINA.0, jika PINA.0 bernilai false maka akan dilanjutkan pengecekan
pada PINA.1, jika PINA.1 bernilai true maka perintah di bawahnya akan dijalankan,
jika tidak akan dilanjutkan dengan pengecekan pada PINA.2, dan hal yang sama juga
terjadi pada PINA.2

 Kesimpulan
Tiap-tiap pin pada ATMega8535 bisa memiliki fungsi yang berbeda sesuai
dengan program yang diinputkan pada Micro tersebut.