Membuat Digital Counter Up and Down menggunakan Tombol

Digital Counter adalah sebuah pencacah berbasis digital yang dapat melakukan perhitungan counting down maupun counting up. Prinsip kerja digital counter hanyalah melakukan penambahan atau pengurangan nilai sehingga diperoleh nilai berikutnya. Program counting down akan bekerja mengurangi nilai, sedangkan counting up berfungsi menambah nilai satu persatu.

Oke untuk prinsip dasar perhitungan semacam itu mungkin tidak akan terlalu susah. Tapi bagaimana jika menerjemahkannya dalam bentuk program digital counter menggunakan mikrokontroler, misalnya AVR Atmega? Menggunakan sistem komputer tentu saja berbeda dengan hanya melakukan counting secara manual, apalagi jika kita menggunakan pemrograman perangkat keras seperti mikroprosessor dan mikrokontroler, tentu harus bisa menerjemahkan setiap step dengan detail. Misal bagaimana melakukan counting, mentransfer ke display dan harus diperhatikan pada saat terjadi limpahan carry agar nilai yang didapat tetap sesuai dengan perhitungan.

Program Decade Digital Counter Counter Up Down

Program decade counter berikut ini berfungsi melakukan pencacahan naik dari 0 ke 99, akan tetapi, dia bisa berubah menjadi counting down jika tombol pada PINA.0 ditekan. Counting down akan dimulai dari nilai terakhir angka yang tampil. Lalu jika tombol pada PINA.0 dilepas, program akan kembali melakukan counting up berdasar nilai terakhir.

#include <mega16.h>
#include <delay.h>
unsigned char bil[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

char puluh=0;
unsigned char satu=0; //nilai awal =99

void tampil (void)
{
char i,j;
for(i=0;i<10;i++)
{
for(j=0;j<50;j++)
{
PORTD=0x01;
PORTC=bil[puluh] ;
delay_us(200);
PORTD=0x02;
PORTC=bil[satu] ;
delay_us(200);
}} }

void main(void)
{

DDRA=0x00;
DDRC=0xff;
DDRD=0xff;
PORTC=0xc0;
PORTD=0xff;
delay_ms(2);
while(1)
{
tampil();
if(PINA==0)
{

if(satu==0)
{
if(puluh==0)
{
satu=9; puluh=9;
}
else if(puluh>=1)
{
satu=9;
puluh=puluh-1;
}
}
else if(satu>=1)
{
satu=satu-1;
}
}
else
{

if(satu==9)
{
if(puluh==9)
{
satu=0;puluh=0;
}
else if(puluh>=0)
{
satu=0;
puluh=puluh+1;
}
}
else if(satu>=0)
{
satu=satu+1;
}
}
}
}

program decade digital counter mikrokontroler atmega codevision avr

butuh source code codevision + rangkaian ISIS proteus?

baca juga puluhan artikel lain tentang belajar mikrokontroler atmega gratis di anotherorion.com

2 Comments

Add a Comment

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

(Note, links and most HTML attributes are not allowed in comments)

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.