anggota :
1. Fitria (7108040013)
2. Relanggih (7108040020) (author)
1.1 Pendahuluan
Pada praktikum pertama ini akan melakukan percobaan modul 1(1).

Gambar 1.Ilustrasi alat penghitung barang
Pada praktikum kali ini akan di coba membuat alat untuk penghitung barang.Dimana pada pada pabrik biasanya menggunakan conveyor.Namun pada praktikum ini tentu saja tidak menggunakan conveyor asli,melainkan hanya menggunakan sebuah simulasi.
1.2 Tujuan
- Dapat me-review kembali teknik pemrograman khusunya dengan menggunakan bahasa C.
- Dapat menggunakan register – register untuk mengakses port sebagai digital I/O.
- Dapat menggunakan simulator untuk memahami proses terjadi.
1.3 Teori
Pada praktikum ini konfigurasi dari modul adalah sebagai berikut :
push button – ATmega 8535 – LED
1.4 Alat
1. Personal Computer dan Software AVR
2. Modul pemrograman AVR + Downloader
3. DC Power Supply 9 volt
1.5 Langkah percobaan
Dalam praktikum ini akan menggunakan software codevision AVR,maka hal penting yang dilakukan adalah :
- membaca chip
gambar 2
samapai muncul seperti pada gambar 2 di atas.Berati ATmega 8535 telah terbaca dan dapat digunakan.Hal ini merupakan hal yang penting dilakukan di awal di setiap kali melakukan pemrograman
a.percobaan 1
program :
#include <mega8535.h>
#include <delay.h>
#define LED PORTD
// nilai logika ketika saklar di tekan
#define Ditekan 1
#define Tidak_Ditekan 0
// Declare your global variables here
unsigned char counter;
//Function prototype
void Counter_Show();
void Counter_Update();
//void Delay(unsigned int periode);
unsigned char Baca_PB();
void main()
{
// Declare your local variables here
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0xff;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;
ACSR=0x80;
SFIOR=0x00;
//counter=0;
while (1)
{
// Place your code here
{
PORTD = counter; //tampilkan nilai counter ke LED
if (PINC.0==0){ //bila push button diaktifkan
counter++;} //tambah counter dengan 1
}
}
}
b. percobaan 2
#include <mega8535.h>
#include <delay.h>
#define LED PORTD
#define Ditekan 1
#define Tidak_Ditekan 0
// Declare your global variables here
unsigned char counter;
void main(void)
{
// Declare your local variables here
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0xff;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;
ACSR=0x80;
SFIOR=0x00;
counter=0;
while (1)
{
// Place your code here
LED=counter; // tampilkan nilai counter ke LED
if(PINC.0==0) // jika push button di tekan
{
delay_ms(500); // waktu delay 500ms
if (PINC.0==0) // cek push button lagi
{
while (PINC.0==0); // jika push button masih ditekan
counter++; // tambah counter dengan 1
}
}
};
}
c. percobaan 3
#include <mega8535.h>
#include <delay.h>
#define LED PORTD
// nilai logika ketika saklar di tekan
#define Ditekan 1
#define Tidak_Ditekan 0
// Declare your global variables here
unsigned char counter;
//Function prototype
void Counter_Show();
void Counter_Update();
//void Delay(unsigned int periode);
unsigned char Baca_PB();
void main()
{
// Declare your local variables here
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0xff;
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;
ACSR=0x80;
SFIOR=0x00;
//counter=0;
while (1)
{
// Place your code here
Counter_Show();
if (Baca_PB()==Ditekan)
{Counter_Update();}
};
}
void Counter_Show()
{
LED = counter;
}
/* -------------------------------------- *
Counter_Update()
Menambahkan nilai counter dengan 1
-* -------------------------------------- */
void Counter_Update()
{
counter++;
}
unsigned char Baca_PB()
{
unsigned char push=Tidak_Ditekan; //nilai default tidak ditekan
if (PINC.0==0){ //bila push_button diaktifkan
delay_ms(500); //tunda 500 ms
if (PINC.0==0){ //cek push_button kembali
while (PINC.0==0); //tunggu sampai dilepas
push=Ditekan; //push_button ditekan dengan benar
}
}
return(push); //kembalikan hasilnya
}
masukkan setiap program di atas secara berurutan.Lalu Built all(shift + F9)
sehingga terlihat seperti gambar 3
gambar 3
1.6 Analisa
Pada percobaan pertama
while (1)
{
// Place your code here
{
PORTD = counter; //tampilkan nilai counter ke LED
if (PINC.0==0){ //bila push button diaktifkan
counter++;} //tambah counter dengan 1
}
}
}
dapat dilihat bahwa di sini masih digunkan program sederhana.Di mana pada program ini efek bouncing masih bisa terjadi.Hal tersebut di karenakan tidak diberikannya suatu delay pada program tersebut.
pada percobaan kedua
while (1)
{
// Place your code here
LED=counter; // tampilkan nilai counter ke LED
if(PINC.0==0) // jika push button di tekan
{
delay_ms(500); // waktu delay 500ms
if (PINC.0==0) // cek push button lagi
{
while (PINC.0==0); // jika push button masih ditekan
counter++; // tambah counter dengan 1
}
}
};
}
pada percobaan kedua ini telah di berikan delay.Sehingga efek bouncing dapat di hilangkan.Maka selama push button yang di gunakan di tekan selama < 500 ms maka tidak akan ada perubahan pada LED.Sedangkan jika push button ditekan > 500ms maka LED akan menyala/counter + 1.
pada percobaan 3 pada dasarnya sama dengan percobaan 2,hanya bedanya pada percobaan 3 ini telah di buat sub fungsi.
1.7 Kesimpulan
- Pada penggunaan counter jika memang data inputan masuk secara terus menerus sebaiknya menggunakan delay supaya tidak terjadi efek bouncing.
- Efek bouncing sendiri pasti akan terjadi pada suatu counter bila aplikasi seperti di atas karena kecepatan menghitung dari ATmega 8535 itu sendiri.
- Program di atas hanya berlaku pada benda padat dan tidak dapat di aplikasikan pada benda yang berongga.
modul by hary (at) eepis-its (dot) edu
author by Relanggih08





