SlideShare una empresa de Scribd logo
1 de 30
Membuat Stopwatch Menggunakan Mikrokontroler ATMega16 by
Muhammad Kennedy Ginting
A. Deskripsi Umum
Bicara tentang stopwatch, benda ini adalah benda yang lumayan terkenal
dibidang olahraga pada umumnya. Kali ini saya ingin berbagi bagaimana
membuat stopwatch sederhana. Lebih tepatnya bisa di jadikan widget buatan
kita sendiri atau bisa Anda jadikan sebagai bahan untuk belajar serta refrensi.
Saya akan menggunakan LCD 16x2 dengan 3 switch button (Start, Stop,
Reset) dengan mikrokontroller Atmega16. Compiler yang digunakan yakni
Codevision AVR.
B. Spesifikasi Teknis dan Karakteristik
Aplikasi ini merupakan sebuah stopwatch sederhana yang dapat menghitung
sampai satuan waktu terkecil yaitu 1/100 detik atau 10 ms. Untuk
membangkitkan timer 10 ms saya menggunakan fitur timer0 mikrokontroller.
C. Daftar Komponen
1. Sistem Minimum Atmega16
 ATmega16
 IC 7805
 Crystal 12MHz
 Kapasitor 22pF (2), 100nF (4), 100uF(2)
 2 Resistor 1KΩ
 4 Switch Button
 1x40 Female Header
 1x40 Male Header
 1N4002
2. LCD 16x2
3. Potensiometer 1KΩ
4. Battery 9V
5. Downloader AVR
D. Prinsip Kerja dan Rangkaian
Pada aplikasi ini terdapat 3 buah tombol (push button) yang terdiri dari
tombol START, STOP dan RESET. Tombol START digunakan untuk
memulai stopwatch, STOP digunakan untuk memberhentikan stowatch dan
tombol RESET untuk me-reset (menset ulang kembali nilai stopwatch).
Untuk counter (pencacah/penghitung) berbeda dengan timer, perbedaan yang
mendasar adalah pada sumber clocknya. Jika timer, sumber clocknya berasal
dari internal mikrokontroler dalam hal ini berasal dari kristal.
Sedangkan untuk counter sumber clocknya berasal dari luar mikrokontroler
(eksternal). Sebagai contoh counter, jika kita ingin menghitung banyaknya
barang yang lewat pada konveyor, maka sumber clocknya berasal dari sensor
yang mendeteksi barang saat melewatinya.
Pada Atmega16 terdapat 3 buah timer, yaitu Timer0 (8 bit), Timer1 (16 bit)
dan Timer2 (8 bit). Untuk perbedaan dan cara kerja masing-masing timer,
teman-teman dapat membacanya pada datasheet. Disini saya akan coba
membahas Timer0 dan Timer1 saja. Untuk lebih jelasnya silakan download
datasheet ATmega8535 disini.
Perhitungan untuk Timero dan Timer1 adalah sebagai berikut:
Ttimer0 = Tosc*(256-TCNT0)*N → (8 bit = 256)
Ttimer1 = Tosc*(65536-TCNT1)*N → (16 bit = 65536)
Tosc = 1/Fosc → pada aplikasi ini saya menggunakan kristal 12 MHz,
sehingga:
Tosc = 1/12Mhz = 0,0000000833 detik
Dimana:
Ttimer0 = lamanya periode Timer0
Ttimer1 = lamanya periode Timer1
TCNT0 = Register Timer0
TCNT1 = Register Timer1
N = Skala clock (mempunyai nilai 1, 8, 64, 256 dan 1024)
Tosc = periode clock
Fosc = frekuensi clock kristal
Timer
Sekarang saya akan membuat aplikasi timer yang ditampilkan pada LCD,
cara kerjanya pada LCD akan menampilkan nilai awal yaitu 0 kemudian
setelah 1 detik (menggunakan timer) nilai tersebut akan naik menjadi 1,
kemudian 2 dan seterusnya, jika sudah sampai 100 maka akan diset kembali
menjadi 0.
Berikut adalah skematiknya:
Gambar 1. Skematik Untuk Timer1 dan Timer0
Menggunakan Timer1:
Ttimer1 = Tosc*(65536-TCNT1)*N
Pada aplikasi diatas diinginkan lamanya timer adalah 1 detik (Ttimer1 = 1
detik) dan jika saya menggunakan kristal 12 MHz dan menggunakan skala
clock N = 1024, maka didapat:
1 = 0,0000000833*(65536-TCNT1)*1024
TCNT1= 53818 = D23A (dalam hexa)
Dari perhitungan diatas didapat nilai 53818 atau dalam hexa D23A, nilai
tersebut harus diisikan pada register TCNT1 agar Timer 1 bernilai 1 detik.
Berikut adalah gambar untuk mensetting pada CodeVision CodeWizard
AVR:
Gambar 2. Setting Pada Timer1
Pada settingan diatas digunanakan nilai clock value yaitu 11.719 kHz, nilai
tersebut didapat dari Fosc/N atau 12 Mhz/1024. Berikut adalah listing
program lengkapnya:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project : TImer1
Version : v.1
Date : 07/08/2014
Author : Muhammad Kennedy Ginting
Company : Apartment 57
Comments:
Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 12,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
unsigned char temp[6];
int data;
#include <mega16.h>
#include <stdlib.h>
// Alphanumeric LCD functions
#include <alcd.h>
// Timer1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
// Reinitialize Timer1 value
TCNT1H=0xD23A >> 8;
TCNT1L=0xD23A & 0xff;
// Place your code here
data++;
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 11,719 kHz
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: On
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x05;
TCNT1H=0xD2;
TCNT1L=0x3A;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x04;
// USART initialization
// USART disabled
UCSRB=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 0
// RD - PORTC Bit 1
// EN - PORTC Bit 2
// D4 - PORTC Bit 4
// D5 - PORTC Bit 5
// D6 - PORTC Bit 6
// D7 - PORTC Bit 7
// Characters/line: 16
lcd_init(16);
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
if (data==100)
{
lcd_clear();
data=0;
}
lcd_gotoxy(0,0);
lcd_putsf("Uji Coba Timer1");
itoa(data,temp); //menampilkan di LCD
lcd_gotoxy(0,1);
lcd_puts(temp);
}
}
Menggunakan Timer0:
Ttimer0 = Tosc*(256-TCNT0)*N
Dengan menggunakan Timer0, untuk aplikasi yang sama seperti diatas,
sebenarnya timer0 ini tidak dapat menghasilkan periode timer selama 1 detik
dikarenakan keterbatasan jumlah bit yaitu hanya 8 bit (256) saja. Tetapi kita
masih dapat memanupulasi program agar dapat menghasilkan timer selama 1
detik, caranya dengan membuat timer selama 10 ms kemudian dilakukan
pengulangan sebanyak 100 kali, maka akan dihasilkan timer selama 1 detik.
10 ms * 100= 1 detik
Pada aplikasi ini diinginkan lamanya timer adalah 10 ms (Ttimer0=10
ms=0.01 s) dan jika saya menggunakan kristal 12 MHz dan menggunakan
skala clock N = 1024, maka didapat:
0.01 = 0,0000000833*(256-TCNT0)*1024
TCNT0= 138 = 8A (dalam hexa)
Dari perhitungan diatas didapat nilai 138 atau dalam hexa 8A, nilai tersebut
harus diisikan pada register TCNT0 agar Timer 0 bernilai 10 mili detik.
Berikut adalah gambar untuk mensetting pada CodeVision CodeWizard
AVR:
Gambar 3. Setting Pada Timer0
Pada settingan diatas digunanakan nilai clock value yaitu 11.719 kHz, nilai
tersebut didapat dari Fosc/N atau 12 Mhz/1024. Berikut adalah listing
program lengkapnya:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project : Timer0
Version : v.1
Date : 07/08/2014
Author : Muhammad Kennedy Ginting
Company : Apartment 57
Comments:
Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 12,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
unsigned char temp[6], loop=0;
int data;
#include <mega16.h>
#include <stdlib.h>
// Alphanumeric LCD functions
#include <alcd.h>
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0x8A;
// Place your code here
loop++;
if (loop>=100)
{
data++;
loop=0;
}
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 11,719 kHz
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x05;
TCNT0=0x8A;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;
// USART initialization
// USART disabled
UCSRB=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 0
// RD - PORTC Bit 1
// EN - PORTC Bit 2
// D4 - PORTC Bit 4
// D5 - PORTC Bit 5
// D6 - PORTC Bit 6
// D7 - PORTC Bit 7
// Characters/line: 16
lcd_init(16);
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
if (data==100)
{
lcd_clear();
data=0;
}
lcd_gotoxy(0,0);
lcd_putsf("Uji Coba Timer0");
itoa(data,temp); //menampilkan di LCD
lcd_gotoxy(0,1);
lcd_puts(temp);
}
}
Counter
Untuk aplikasi counter lebih mudah dibandingkan dengan timer, karena kita
tidak harus lagi menghitung untuk mendapatkan nilai dari register TCNT,
tetapi secara otomatis register TCNT yang akan mencacah jika ada input yang
masuk.
Berikut adalah aplikasi counter untuk menghitung dan ditampilkan pada
LCD, input yang digunakan berasal dari pushbutton. Berikut adalah
schematicnya:
Gambar 4. Skematik Untuk Counter0 dan Counter1
Counter0
Input untuk counter0 berasal dari pin T0 atau PB0. Counter0 hanya mampu
mencacah sampai dengan nilai 256 dikarenakan counter 8 bit. Berikut adalah
setting pada CodeVision CodeWizard AVR:
Gamabar 5. Setting Pada Counter0
Berikut adalah listing program lengkap:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project : Counter0
Version : v.1
Date : 07/08/2014
Author : Muhammad Kennedy Ginting
Company : Apartment 57
Comments:
Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 12,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
unsigned char temp[6];
int data;
#include <mega16.h>
#include <stdlib.h>
// Alphanumeric LCD functions
#include <alcd.h>
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: T0 pin Falling Edge
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x06;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// USART disabled
UCSRB=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 0
// RD - PORTC Bit 1
// EN - PORTC Bit 2
// D4 - PORTC Bit 4
// D5 - PORTC Bit 5
// D6 - PORTC Bit 6
// D7 - PORTC Bit 7
// Characters/line: 16
lcd_init(16);
while (1)
{
// Place your code here
data=TCNT0;//hasil counter (TCNT0) dipindah ke data
if (data>=256)
{
lcd_clear();
}
lcd_gotoxy(0,0);
lcd_putsf("Uji Coba Counter0");
itoa(data,temp); //menampilkan di LCD
lcd_gotoxy(0,1);
lcd_puts(temp);
}
}
Counter1
Counter1 tidak jauh berbeda dengan counter0, hanya saja maksimum
pencacahan counter1 sampai 65536 dikarenakan counter 16 bit, dan input
untuk counter1 berasal dari pin T1 atau PB1. Untuk settingan dan program
pada CodeVision AVR hampir sama dengan counter0, jadi tidak akan saya
jelaskan lagi disini.
Langsung saja ke skematik rangkaian stopwatch.
Gambar 6. Rangkaian Untuk Stopwatch
Berikut adalah listimg program lengkapnya:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project : Stopwatch
Version : v.1
Date : 06/08/2014
Author : Muhammad Kennedy
Company : Apartment 57
Comments:
Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 12,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
unsigned char count, temp[16], indeks=0, detik=0, menit=0, jam=0;
#include <mega16.h>
#include <stdio.h>
#include <stdlib.h>
#include <delay.h>
// Alphanumeric LCD functions
#include <alcd.h>
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TCNT0=0x8A;
count++;
// Place your code here
}
void hitung_waktu()
{
if (count>=100)
{
lcd_clear();
detik++;
count=0;
}
if (detik>=60)
{
menit++;
detik=0;
}
if (menit>=60)
{
jam++;
menit=0;
}
}
void detek_tombol()
{
if (PINA.0==0 && (indeks==0 || indeks==2))//start timer
{
indeks=1;
TIMSK=0x01;//memulai timer
lcd_clear();
}
if (PINA.1==0 && indeks==1)//stop timer
{
indeks=2;
TIMSK=0x00;//menstop timer
lcd_clear();
}
if (PINA.2==0 && indeks==2)//reset timer
{
indeks=0;//semua data direset
count=0;
detik=0;
menit=0;
jam=0;
lcd_clear();
}
}
void tampil_lcd()
{
lcd_gotoxy(0,0);
sprintf(temp,"Timer %d:%d:%d:%d",jam,menit,detik,count);
lcd_puts(temp);//tampilkan waktu di LCD baris pertama
if (indeks==0)
{
lcd_gotoxy(0,1);
lcd_putsf("START");
}
if (indeks==1)
{
lcd_gotoxy(0,1);
lcd_putsf("STOP");
}
if (indeks==2)
{
lcd_gotoxy(0,1);
lcd_putsf("START RESET");
}
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTA=0x0f;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 11,719 kHz
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x05;
TCNT0=0x8A;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// USART disabled
UCSRB=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 0
// RD - PORTC Bit 1
// EN - PORTC Bit 2
// D4 - PORTC Bit 4
// D5 - PORTC Bit 5
// D6 - PORTC Bit 6
// D7 - PORTC Bit 7
// Characters/line: 16
lcd_init(16);
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
detek_tombol();
hitung_waktu();
tampil_lcd();
}
}
*Sistem Minimum Atmega16
*Skematik LCD 16x2
Selamat Mencoba 
GOOD LUCK !!!
Thank’s to Elektro Kontrol
http://elektro-kontrol.blogspot.com

Más contenido relacionado

La actualidad más candente

Pengolahan Sinyal Digital - Slide week 2 - sistem & sinyal waktu diskrit
Pengolahan Sinyal Digital - Slide week 2 - sistem & sinyal waktu diskritPengolahan Sinyal Digital - Slide week 2 - sistem & sinyal waktu diskrit
Pengolahan Sinyal Digital - Slide week 2 - sistem & sinyal waktu diskritBeny Nugraha
 
Logika kombinasi dalam kemasan ic 2
Logika kombinasi dalam kemasan ic 2Logika kombinasi dalam kemasan ic 2
Logika kombinasi dalam kemasan ic 2Tenia Wahyuningrum
 
Pertemuan 6 & 7 ars. gerbang logika
Pertemuan 6 & 7 ars. gerbang logikaPertemuan 6 & 7 ars. gerbang logika
Pertemuan 6 & 7 ars. gerbang logikaBuhori Muslim
 
Cara kerja rangkaian up counter dan down counter
Cara kerja rangkaian up counter dan down counterCara kerja rangkaian up counter dan down counter
Cara kerja rangkaian up counter dan down counterPT.goLom na
 
Kontrol pid dengan matlab
Kontrol pid dengan matlabKontrol pid dengan matlab
Kontrol pid dengan matlabPamor Gunoto
 
Teori bahasa formal dan Otomata
Teori bahasa formal dan OtomataTeori bahasa formal dan Otomata
Teori bahasa formal dan OtomataRisal Fahmi
 
Analisis respon transien orde2
Analisis respon transien orde2Analisis respon transien orde2
Analisis respon transien orde2Aryce Wulandari
 
Transformasi Laplace
Transformasi LaplaceTransformasi Laplace
Transformasi Laplaceyusufbf
 
Data Logging Tegangan melalui Komunikasi Serial
Data Logging Tegangan melalui Komunikasi SerialData Logging Tegangan melalui Komunikasi Serial
Data Logging Tegangan melalui Komunikasi SerialNur Kholifah Hidayah
 
Sistem Kontrol (Distributed Control System dan Programable Logic Controller)
Sistem Kontrol (Distributed Control System dan Programable Logic Controller)Sistem Kontrol (Distributed Control System dan Programable Logic Controller)
Sistem Kontrol (Distributed Control System dan Programable Logic Controller)University Of Polytechnic Malang
 
analisis sistem kendali 2
analisis sistem kendali 2analisis sistem kendali 2
analisis sistem kendali 2Rumah Belajar
 
Berhitung bilangan kompleks dengan program excel
Berhitung bilangan kompleks dengan program excelBerhitung bilangan kompleks dengan program excel
Berhitung bilangan kompleks dengan program excelZhaqir Husein
 
456044071-Soal-UAS-Pneumatik-docx.docx
456044071-Soal-UAS-Pneumatik-docx.docx456044071-Soal-UAS-Pneumatik-docx.docx
456044071-Soal-UAS-Pneumatik-docx.docxginamoina
 
analisis sistem kendali
analisis sistem kendalianalisis sistem kendali
analisis sistem kendaliRumah Belajar
 
Transmisi asynchronous dan synchronous
Transmisi asynchronous dan synchronousTransmisi asynchronous dan synchronous
Transmisi asynchronous dan synchronousridhaprilia
 

La actualidad más candente (20)

Analisa respon sistem
Analisa respon sistemAnalisa respon sistem
Analisa respon sistem
 
Pengolahan Sinyal Digital - Slide week 2 - sistem & sinyal waktu diskrit
Pengolahan Sinyal Digital - Slide week 2 - sistem & sinyal waktu diskritPengolahan Sinyal Digital - Slide week 2 - sistem & sinyal waktu diskrit
Pengolahan Sinyal Digital - Slide week 2 - sistem & sinyal waktu diskrit
 
Logika kombinasi dalam kemasan ic 2
Logika kombinasi dalam kemasan ic 2Logika kombinasi dalam kemasan ic 2
Logika kombinasi dalam kemasan ic 2
 
Pertemuan 6 & 7 ars. gerbang logika
Pertemuan 6 & 7 ars. gerbang logikaPertemuan 6 & 7 ars. gerbang logika
Pertemuan 6 & 7 ars. gerbang logika
 
Cara kerja rangkaian up counter dan down counter
Cara kerja rangkaian up counter dan down counterCara kerja rangkaian up counter dan down counter
Cara kerja rangkaian up counter dan down counter
 
Diagram blok
Diagram blokDiagram blok
Diagram blok
 
routh hurwitz
routh hurwitzrouth hurwitz
routh hurwitz
 
Kontrol pid dengan matlab
Kontrol pid dengan matlabKontrol pid dengan matlab
Kontrol pid dengan matlab
 
Teori bahasa formal dan Otomata
Teori bahasa formal dan OtomataTeori bahasa formal dan Otomata
Teori bahasa formal dan Otomata
 
Analisis respon transien orde2
Analisis respon transien orde2Analisis respon transien orde2
Analisis respon transien orde2
 
Transformasi Laplace
Transformasi LaplaceTransformasi Laplace
Transformasi Laplace
 
Data Logging Tegangan melalui Komunikasi Serial
Data Logging Tegangan melalui Komunikasi SerialData Logging Tegangan melalui Komunikasi Serial
Data Logging Tegangan melalui Komunikasi Serial
 
Soal soal adc 2
Soal soal adc 2Soal soal adc 2
Soal soal adc 2
 
Bab 5 komputer sederhana sap-1
Bab 5   komputer sederhana sap-1Bab 5   komputer sederhana sap-1
Bab 5 komputer sederhana sap-1
 
Sistem Kontrol (Distributed Control System dan Programable Logic Controller)
Sistem Kontrol (Distributed Control System dan Programable Logic Controller)Sistem Kontrol (Distributed Control System dan Programable Logic Controller)
Sistem Kontrol (Distributed Control System dan Programable Logic Controller)
 
analisis sistem kendali 2
analisis sistem kendali 2analisis sistem kendali 2
analisis sistem kendali 2
 
Berhitung bilangan kompleks dengan program excel
Berhitung bilangan kompleks dengan program excelBerhitung bilangan kompleks dengan program excel
Berhitung bilangan kompleks dengan program excel
 
456044071-Soal-UAS-Pneumatik-docx.docx
456044071-Soal-UAS-Pneumatik-docx.docx456044071-Soal-UAS-Pneumatik-docx.docx
456044071-Soal-UAS-Pneumatik-docx.docx
 
analisis sistem kendali
analisis sistem kendalianalisis sistem kendali
analisis sistem kendali
 
Transmisi asynchronous dan synchronous
Transmisi asynchronous dan synchronousTransmisi asynchronous dan synchronous
Transmisi asynchronous dan synchronous
 

Destacado

Tutorial membuat project termometer dan jam digital menggunakan codevision av...
Tutorial membuat project termometer dan jam digital menggunakan codevision av...Tutorial membuat project termometer dan jam digital menggunakan codevision av...
Tutorial membuat project termometer dan jam digital menggunakan codevision av...Muhammad Kennedy Ginting
 
Menampilkan Karakter pada Lcd dengan Mikrokontroler ATMEGA16
Menampilkan Karakter pada  Lcd dengan Mikrokontroler ATMEGA16Menampilkan Karakter pada  Lcd dengan Mikrokontroler ATMEGA16
Menampilkan Karakter pada Lcd dengan Mikrokontroler ATMEGA16University of Lampung
 
Datasheet RTC DS1307 untuk waktu yang tepat pada mikrokontroler
Datasheet RTC DS1307 untuk waktu yang tepat pada mikrokontrolerDatasheet RTC DS1307 untuk waktu yang tepat pada mikrokontroler
Datasheet RTC DS1307 untuk waktu yang tepat pada mikrokontrolerMuhammad Kennedy Ginting
 
97674720 buku-mikrokontroler-atmega8535-dengan-codevisionavr
97674720 buku-mikrokontroler-atmega8535-dengan-codevisionavr97674720 buku-mikrokontroler-atmega8535-dengan-codevisionavr
97674720 buku-mikrokontroler-atmega8535-dengan-codevisionavrPrayogy Pangestu
 
Membuat voltmeter digital menggunakan icl7107 plz dengan tampilan 7 segment b...
Membuat voltmeter digital menggunakan icl7107 plz dengan tampilan 7 segment b...Membuat voltmeter digital menggunakan icl7107 plz dengan tampilan 7 segment b...
Membuat voltmeter digital menggunakan icl7107 plz dengan tampilan 7 segment b...Muhammad Kennedy Ginting
 

Destacado (6)

Tutorial membuat project termometer dan jam digital menggunakan codevision av...
Tutorial membuat project termometer dan jam digital menggunakan codevision av...Tutorial membuat project termometer dan jam digital menggunakan codevision av...
Tutorial membuat project termometer dan jam digital menggunakan codevision av...
 
Makalah Mikrokontroler ATmega16
Makalah Mikrokontroler ATmega16Makalah Mikrokontroler ATmega16
Makalah Mikrokontroler ATmega16
 
Menampilkan Karakter pada Lcd dengan Mikrokontroler ATMEGA16
Menampilkan Karakter pada  Lcd dengan Mikrokontroler ATMEGA16Menampilkan Karakter pada  Lcd dengan Mikrokontroler ATMEGA16
Menampilkan Karakter pada Lcd dengan Mikrokontroler ATMEGA16
 
Datasheet RTC DS1307 untuk waktu yang tepat pada mikrokontroler
Datasheet RTC DS1307 untuk waktu yang tepat pada mikrokontrolerDatasheet RTC DS1307 untuk waktu yang tepat pada mikrokontroler
Datasheet RTC DS1307 untuk waktu yang tepat pada mikrokontroler
 
97674720 buku-mikrokontroler-atmega8535-dengan-codevisionavr
97674720 buku-mikrokontroler-atmega8535-dengan-codevisionavr97674720 buku-mikrokontroler-atmega8535-dengan-codevisionavr
97674720 buku-mikrokontroler-atmega8535-dengan-codevisionavr
 
Membuat voltmeter digital menggunakan icl7107 plz dengan tampilan 7 segment b...
Membuat voltmeter digital menggunakan icl7107 plz dengan tampilan 7 segment b...Membuat voltmeter digital menggunakan icl7107 plz dengan tampilan 7 segment b...
Membuat voltmeter digital menggunakan icl7107 plz dengan tampilan 7 segment b...
 

Similar a Membuat Stopwatch Menggunakan Mikrokontroler ATMega16

Cara membuat simulasi lcd running text dengan menggunakan proteus
Cara membuat simulasi lcd running text dengan menggunakan proteusCara membuat simulasi lcd running text dengan menggunakan proteus
Cara membuat simulasi lcd running text dengan menggunakan proteusFilla Fidyana
 
Jam digital 7 segment [Arduino]
Jam digital 7 segment [Arduino]Jam digital 7 segment [Arduino]
Jam digital 7 segment [Arduino]Angga Joe Amstrong
 
PERANCANGAN PUTAR BALIK MOTOR DC WALKING ROBOT MENGGUNAKAN MIKROKONTROLLER ...
PERANCANGAN PUTAR BALIK MOTOR DC  WALKING ROBOT MENGGUNAKAN  MIKROKONTROLLER ...PERANCANGAN PUTAR BALIK MOTOR DC  WALKING ROBOT MENGGUNAKAN  MIKROKONTROLLER ...
PERANCANGAN PUTAR BALIK MOTOR DC WALKING ROBOT MENGGUNAKAN MIKROKONTROLLER ...muhamadaulia3
 
PS2 Mouse Interfacing dengan pemrograman bahasa C
PS2 Mouse Interfacing dengan pemrograman bahasa CPS2 Mouse Interfacing dengan pemrograman bahasa C
PS2 Mouse Interfacing dengan pemrograman bahasa CJosephine Prasetya
 
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009newM I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009newDeddy Susilo
 
Rancang Walking Robot Dengan Mikrokontroler Atmega16
Rancang Walking Robot Dengan Mikrokontroler Atmega16Rancang Walking Robot Dengan Mikrokontroler Atmega16
Rancang Walking Robot Dengan Mikrokontroler Atmega16thoriqdzulfikar
 
Walking robot bergerak maju berhenti menggunakan atmega16
Walking robot bergerak maju berhenti menggunakan atmega16Walking robot bergerak maju berhenti menggunakan atmega16
Walking robot bergerak maju berhenti menggunakan atmega16Teguh Wiratama
 
Pengetahuan Dasar penggunaan Timer dan Counter Microcontroller AVR
Pengetahuan Dasar penggunaan Timer dan Counter Microcontroller AVR Pengetahuan Dasar penggunaan Timer dan Counter Microcontroller AVR
Pengetahuan Dasar penggunaan Timer dan Counter Microcontroller AVR KEN KEN
 
72681707 jam-digital-at-mega-16
72681707 jam-digital-at-mega-1672681707 jam-digital-at-mega-16
72681707 jam-digital-at-mega-16Satria Speed
 
PERANCANGAN CONVEYOR MENGGUNAKAN MIKROKONTROLLER ATMEGA 16
PERANCANGAN CONVEYOR  MENGGUNAKAN  MIKROKONTROLLER ATMEGA 16PERANCANGAN CONVEYOR  MENGGUNAKAN  MIKROKONTROLLER ATMEGA 16
PERANCANGAN CONVEYOR MENGGUNAKAN MIKROKONTROLLER ATMEGA 16muhamadaulia3
 
Mikrokontroler io tombol dan led
Mikrokontroler io tombol dan ledMikrokontroler io tombol dan led
Mikrokontroler io tombol dan ledJodit Sulistyo
 
10 naskah publikasi ersan budi kusuma
10 naskah publikasi ersan budi kusuma10 naskah publikasi ersan budi kusuma
10 naskah publikasi ersan budi kusumaAryanti99
 
Makalah mikroprosesor
Makalah mikroprosesorMakalah mikroprosesor
Makalah mikroprosesorAip Goper
 

Similar a Membuat Stopwatch Menggunakan Mikrokontroler ATMega16 (20)

Sismik
Sismik Sismik
Sismik
 
Cara membuat simulasi lcd running text dengan menggunakan proteus
Cara membuat simulasi lcd running text dengan menggunakan proteusCara membuat simulasi lcd running text dengan menggunakan proteus
Cara membuat simulasi lcd running text dengan menggunakan proteus
 
Microcontroller-8051.ppt
Microcontroller-8051.pptMicrocontroller-8051.ppt
Microcontroller-8051.ppt
 
Jam digital 7 segment [Arduino]
Jam digital 7 segment [Arduino]Jam digital 7 segment [Arduino]
Jam digital 7 segment [Arduino]
 
Arduino Basic
Arduino BasicArduino Basic
Arduino Basic
 
PERANCANGAN PUTAR BALIK MOTOR DC WALKING ROBOT MENGGUNAKAN MIKROKONTROLLER ...
PERANCANGAN PUTAR BALIK MOTOR DC  WALKING ROBOT MENGGUNAKAN  MIKROKONTROLLER ...PERANCANGAN PUTAR BALIK MOTOR DC  WALKING ROBOT MENGGUNAKAN  MIKROKONTROLLER ...
PERANCANGAN PUTAR BALIK MOTOR DC WALKING ROBOT MENGGUNAKAN MIKROKONTROLLER ...
 
PS2 Mouse Interfacing dengan pemrograman bahasa C
PS2 Mouse Interfacing dengan pemrograman bahasa CPS2 Mouse Interfacing dengan pemrograman bahasa C
PS2 Mouse Interfacing dengan pemrograman bahasa C
 
SIMPLE SYSTEM OPERATING WITH ECLPSE
SIMPLE SYSTEM OPERATING WITH ECLPSESIMPLE SYSTEM OPERATING WITH ECLPSE
SIMPLE SYSTEM OPERATING WITH ECLPSE
 
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009newM I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
 
Rancang Walking Robot Dengan Mikrokontroler Atmega16
Rancang Walking Robot Dengan Mikrokontroler Atmega16Rancang Walking Robot Dengan Mikrokontroler Atmega16
Rancang Walking Robot Dengan Mikrokontroler Atmega16
 
Walking robot bergerak maju berhenti menggunakan atmega16
Walking robot bergerak maju berhenti menggunakan atmega16Walking robot bergerak maju berhenti menggunakan atmega16
Walking robot bergerak maju berhenti menggunakan atmega16
 
06 jurnal anita
06 jurnal anita06 jurnal anita
06 jurnal anita
 
Pengetahuan Dasar penggunaan Timer dan Counter Microcontroller AVR
Pengetahuan Dasar penggunaan Timer dan Counter Microcontroller AVR Pengetahuan Dasar penggunaan Timer dan Counter Microcontroller AVR
Pengetahuan Dasar penggunaan Timer dan Counter Microcontroller AVR
 
72681707 jam-digital-at-mega-16
72681707 jam-digital-at-mega-1672681707 jam-digital-at-mega-16
72681707 jam-digital-at-mega-16
 
PERANCANGAN CONVEYOR MENGGUNAKAN MIKROKONTROLLER ATMEGA 16
PERANCANGAN CONVEYOR  MENGGUNAKAN  MIKROKONTROLLER ATMEGA 16PERANCANGAN CONVEYOR  MENGGUNAKAN  MIKROKONTROLLER ATMEGA 16
PERANCANGAN CONVEYOR MENGGUNAKAN MIKROKONTROLLER ATMEGA 16
 
Sensor suhu LM 35
Sensor suhu LM 35Sensor suhu LM 35
Sensor suhu LM 35
 
Mikrokontroler io tombol dan led
Mikrokontroler io tombol dan ledMikrokontroler io tombol dan led
Mikrokontroler io tombol dan led
 
10 naskah publikasi ersan budi kusuma
10 naskah publikasi ersan budi kusuma10 naskah publikasi ersan budi kusuma
10 naskah publikasi ersan budi kusuma
 
Makalah mikroprosesor
Makalah mikroprosesorMakalah mikroprosesor
Makalah mikroprosesor
 
PROYEK1
PROYEK1PROYEK1
PROYEK1
 

Más de Muhammad Kennedy Ginting

Tugas probstat paper analisa regresi dan korelasi by muhammad kennedy (120402...
Tugas probstat paper analisa regresi dan korelasi by muhammad kennedy (120402...Tugas probstat paper analisa regresi dan korelasi by muhammad kennedy (120402...
Tugas probstat paper analisa regresi dan korelasi by muhammad kennedy (120402...Muhammad Kennedy Ginting
 
Tugas dasar teknik digital (flip flop rs dan d)
Tugas dasar teknik digital (flip   flop rs dan d)Tugas dasar teknik digital (flip   flop rs dan d)
Tugas dasar teknik digital (flip flop rs dan d)Muhammad Kennedy Ginting
 
Modul pembelajaran rangkaian listrik by muhammad kennedy ginting
Modul pembelajaran rangkaian listrik by muhammad kennedy gintingModul pembelajaran rangkaian listrik by muhammad kennedy ginting
Modul pembelajaran rangkaian listrik by muhammad kennedy gintingMuhammad Kennedy Ginting
 
Laporan Laboratorium Dasar Pemrograman dengan Bahasa C by Muhammad Kennedy Gi...
Laporan Laboratorium Dasar Pemrograman dengan Bahasa C by Muhammad Kennedy Gi...Laporan Laboratorium Dasar Pemrograman dengan Bahasa C by Muhammad Kennedy Gi...
Laporan Laboratorium Dasar Pemrograman dengan Bahasa C by Muhammad Kennedy Gi...Muhammad Kennedy Ginting
 
Tutorial Penggunaan CodeVision AVR dengan Bahasa C
Tutorial Penggunaan CodeVision AVR dengan Bahasa CTutorial Penggunaan CodeVision AVR dengan Bahasa C
Tutorial Penggunaan CodeVision AVR dengan Bahasa CMuhammad Kennedy Ginting
 
Perintah - Perintah Yang Ada Pada LCD 2x16 by Muhammad Kennedy
Perintah - Perintah Yang Ada Pada LCD 2x16 by Muhammad KennedyPerintah - Perintah Yang Ada Pada LCD 2x16 by Muhammad Kennedy
Perintah - Perintah Yang Ada Pada LCD 2x16 by Muhammad KennedyMuhammad Kennedy Ginting
 
Jenis - Jenis Perubahan Hutan (Pengetahuan Lingkungan) by Muhammad Kennedy
Jenis - Jenis Perubahan Hutan (Pengetahuan Lingkungan) by Muhammad KennedyJenis - Jenis Perubahan Hutan (Pengetahuan Lingkungan) by Muhammad Kennedy
Jenis - Jenis Perubahan Hutan (Pengetahuan Lingkungan) by Muhammad KennedyMuhammad Kennedy Ginting
 
Modul praktikum instruksi dasar (automasi 1)
Modul praktikum instruksi dasar (automasi 1)Modul praktikum instruksi dasar (automasi 1)
Modul praktikum instruksi dasar (automasi 1)Muhammad Kennedy Ginting
 
Regulasi Tegangan by Muhammad Kennedy Ginting
Regulasi Tegangan by Muhammad Kennedy GintingRegulasi Tegangan by Muhammad Kennedy Ginting
Regulasi Tegangan by Muhammad Kennedy GintingMuhammad Kennedy Ginting
 
Contoh modul rangkaian listrik dan percobaannya dalam laboratorium
Contoh modul rangkaian listrik dan percobaannya dalam laboratoriumContoh modul rangkaian listrik dan percobaannya dalam laboratorium
Contoh modul rangkaian listrik dan percobaannya dalam laboratoriumMuhammad Kennedy Ginting
 
Contoh makalah line follower analog sederhana
Contoh makalah line follower analog sederhanaContoh makalah line follower analog sederhana
Contoh makalah line follower analog sederhanaMuhammad Kennedy Ginting
 
Analisa mengenai dampak lingkungan (AMDAL)
Analisa mengenai dampak lingkungan (AMDAL)Analisa mengenai dampak lingkungan (AMDAL)
Analisa mengenai dampak lingkungan (AMDAL)Muhammad Kennedy Ginting
 
Tugas bahasa inggris tentang cultural heritage (warisan budaya) by Muhammad K...
Tugas bahasa inggris tentang cultural heritage (warisan budaya) by Muhammad K...Tugas bahasa inggris tentang cultural heritage (warisan budaya) by Muhammad K...
Tugas bahasa inggris tentang cultural heritage (warisan budaya) by Muhammad K...Muhammad Kennedy Ginting
 
Modul ATmega8535 by muhammad kennedy ginting (Universitas Sumatera Utara)
Modul ATmega8535 by muhammad kennedy ginting (Universitas Sumatera Utara)Modul ATmega8535 by muhammad kennedy ginting (Universitas Sumatera Utara)
Modul ATmega8535 by muhammad kennedy ginting (Universitas Sumatera Utara)Muhammad Kennedy Ginting
 

Más de Muhammad Kennedy Ginting (16)

Tugas probstat paper analisa regresi dan korelasi by muhammad kennedy (120402...
Tugas probstat paper analisa regresi dan korelasi by muhammad kennedy (120402...Tugas probstat paper analisa regresi dan korelasi by muhammad kennedy (120402...
Tugas probstat paper analisa regresi dan korelasi by muhammad kennedy (120402...
 
Tugas dasar teknik digital (flip flop rs dan d)
Tugas dasar teknik digital (flip   flop rs dan d)Tugas dasar teknik digital (flip   flop rs dan d)
Tugas dasar teknik digital (flip flop rs dan d)
 
Presentasi interpolasi polinomial
Presentasi interpolasi polinomialPresentasi interpolasi polinomial
Presentasi interpolasi polinomial
 
Rangkaian kutub empat by muhammad kennedy
Rangkaian kutub empat by muhammad kennedyRangkaian kutub empat by muhammad kennedy
Rangkaian kutub empat by muhammad kennedy
 
Modul pembelajaran rangkaian listrik by muhammad kennedy ginting
Modul pembelajaran rangkaian listrik by muhammad kennedy gintingModul pembelajaran rangkaian listrik by muhammad kennedy ginting
Modul pembelajaran rangkaian listrik by muhammad kennedy ginting
 
Laporan Laboratorium Dasar Pemrograman dengan Bahasa C by Muhammad Kennedy Gi...
Laporan Laboratorium Dasar Pemrograman dengan Bahasa C by Muhammad Kennedy Gi...Laporan Laboratorium Dasar Pemrograman dengan Bahasa C by Muhammad Kennedy Gi...
Laporan Laboratorium Dasar Pemrograman dengan Bahasa C by Muhammad Kennedy Gi...
 
Tutorial Penggunaan CodeVision AVR dengan Bahasa C
Tutorial Penggunaan CodeVision AVR dengan Bahasa CTutorial Penggunaan CodeVision AVR dengan Bahasa C
Tutorial Penggunaan CodeVision AVR dengan Bahasa C
 
Perintah - Perintah Yang Ada Pada LCD 2x16 by Muhammad Kennedy
Perintah - Perintah Yang Ada Pada LCD 2x16 by Muhammad KennedyPerintah - Perintah Yang Ada Pada LCD 2x16 by Muhammad Kennedy
Perintah - Perintah Yang Ada Pada LCD 2x16 by Muhammad Kennedy
 
Jenis - Jenis Perubahan Hutan (Pengetahuan Lingkungan) by Muhammad Kennedy
Jenis - Jenis Perubahan Hutan (Pengetahuan Lingkungan) by Muhammad KennedyJenis - Jenis Perubahan Hutan (Pengetahuan Lingkungan) by Muhammad Kennedy
Jenis - Jenis Perubahan Hutan (Pengetahuan Lingkungan) by Muhammad Kennedy
 
Modul praktikum instruksi dasar (automasi 1)
Modul praktikum instruksi dasar (automasi 1)Modul praktikum instruksi dasar (automasi 1)
Modul praktikum instruksi dasar (automasi 1)
 
Regulasi Tegangan by Muhammad Kennedy Ginting
Regulasi Tegangan by Muhammad Kennedy GintingRegulasi Tegangan by Muhammad Kennedy Ginting
Regulasi Tegangan by Muhammad Kennedy Ginting
 
Contoh modul rangkaian listrik dan percobaannya dalam laboratorium
Contoh modul rangkaian listrik dan percobaannya dalam laboratoriumContoh modul rangkaian listrik dan percobaannya dalam laboratorium
Contoh modul rangkaian listrik dan percobaannya dalam laboratorium
 
Contoh makalah line follower analog sederhana
Contoh makalah line follower analog sederhanaContoh makalah line follower analog sederhana
Contoh makalah line follower analog sederhana
 
Analisa mengenai dampak lingkungan (AMDAL)
Analisa mengenai dampak lingkungan (AMDAL)Analisa mengenai dampak lingkungan (AMDAL)
Analisa mengenai dampak lingkungan (AMDAL)
 
Tugas bahasa inggris tentang cultural heritage (warisan budaya) by Muhammad K...
Tugas bahasa inggris tentang cultural heritage (warisan budaya) by Muhammad K...Tugas bahasa inggris tentang cultural heritage (warisan budaya) by Muhammad K...
Tugas bahasa inggris tentang cultural heritage (warisan budaya) by Muhammad K...
 
Modul ATmega8535 by muhammad kennedy ginting (Universitas Sumatera Utara)
Modul ATmega8535 by muhammad kennedy ginting (Universitas Sumatera Utara)Modul ATmega8535 by muhammad kennedy ginting (Universitas Sumatera Utara)
Modul ATmega8535 by muhammad kennedy ginting (Universitas Sumatera Utara)
 

Último

Transfer Massa dan Panas Teknik Kimia Industri
Transfer Massa dan Panas Teknik Kimia IndustriTransfer Massa dan Panas Teknik Kimia Industri
Transfer Massa dan Panas Teknik Kimia Industririzwahyung
 
MEKANIKA TEKNIK TEKNIK PERTAMBANGAN FAK. TEKNIK
MEKANIKA TEKNIK TEKNIK PERTAMBANGAN FAK. TEKNIKMEKANIKA TEKNIK TEKNIK PERTAMBANGAN FAK. TEKNIK
MEKANIKA TEKNIK TEKNIK PERTAMBANGAN FAK. TEKNIKFerdinandus9
 
Himpunan Fuzzy Academic Engineering Data
Himpunan Fuzzy Academic Engineering DataHimpunan Fuzzy Academic Engineering Data
Himpunan Fuzzy Academic Engineering DataDAVIDSTEVENSONSIMBOL
 
PPT Manajemen Konstruksi Unsur Unsur Proyek 1.pptx
PPT Manajemen Konstruksi Unsur Unsur Proyek 1.pptxPPT Manajemen Konstruksi Unsur Unsur Proyek 1.pptx
PPT Manajemen Konstruksi Unsur Unsur Proyek 1.pptxHamidNurMukhlis
 
Kelompok 5 PPt Penerapan Teori Fuzzy.pdf
Kelompok 5 PPt Penerapan Teori Fuzzy.pdfKelompok 5 PPt Penerapan Teori Fuzzy.pdf
Kelompok 5 PPt Penerapan Teori Fuzzy.pdfVardyFahrizal
 
struktur statis tak tentu dengan persamaan-tiga-momen-apdf.pptx
struktur statis tak tentu dengan persamaan-tiga-momen-apdf.pptxstruktur statis tak tentu dengan persamaan-tiga-momen-apdf.pptx
struktur statis tak tentu dengan persamaan-tiga-momen-apdf.pptxAgusTriyono78
 
QCC MANAJEMEN TOOL MAINTENANCE (MAINTENANCE TEAM).pptx
QCC MANAJEMEN TOOL MAINTENANCE (MAINTENANCE TEAM).pptxQCC MANAJEMEN TOOL MAINTENANCE (MAINTENANCE TEAM).pptx
QCC MANAJEMEN TOOL MAINTENANCE (MAINTENANCE TEAM).pptxdjam11
 
MATERI PRESENTASI KEPALA TEKNIK TAMBANG KEPMEN 555
MATERI PRESENTASI KEPALA TEKNIK TAMBANG KEPMEN 555MATERI PRESENTASI KEPALA TEKNIK TAMBANG KEPMEN 555
MATERI PRESENTASI KEPALA TEKNIK TAMBANG KEPMEN 555zannialzur
 
Ahli Muda Teknik Bangunan GEdung Jenjang 7 - Samet Kurnianto.pptx
Ahli Muda Teknik Bangunan GEdung Jenjang 7 - Samet Kurnianto.pptxAhli Muda Teknik Bangunan GEdung Jenjang 7 - Samet Kurnianto.pptx
Ahli Muda Teknik Bangunan GEdung Jenjang 7 - Samet Kurnianto.pptxarifyudianto3
 
PPT PENILAIAN PERKERASAN JALAN Metode PCI.pptx
PPT PENILAIAN PERKERASAN JALAN Metode PCI.pptxPPT PENILAIAN PERKERASAN JALAN Metode PCI.pptx
PPT PENILAIAN PERKERASAN JALAN Metode PCI.pptxYehezkielAkwila3
 
Analisis Struktur Statis Tak Tentu dengan Force Method.pdf
Analisis Struktur Statis Tak Tentu dengan Force Method.pdfAnalisis Struktur Statis Tak Tentu dengan Force Method.pdf
Analisis Struktur Statis Tak Tentu dengan Force Method.pdfAgusTriyono78
 
PPT PPT Pelaksana lapangan Pekerasan Jalan Beton lvl 6.pptx
PPT PPT Pelaksana lapangan Pekerasan Jalan Beton lvl 6.pptxPPT PPT Pelaksana lapangan Pekerasan Jalan Beton lvl 6.pptx
PPT PPT Pelaksana lapangan Pekerasan Jalan Beton lvl 6.pptxdpcaskonasoki
 
Sesi_02_Rangkaian_Hubungan_Seri_Paralel.pptx
Sesi_02_Rangkaian_Hubungan_Seri_Paralel.pptxSesi_02_Rangkaian_Hubungan_Seri_Paralel.pptx
Sesi_02_Rangkaian_Hubungan_Seri_Paralel.pptx185TsabitSujud
 
Normalisasi Database dan pengertian database
Normalisasi Database dan pengertian databaseNormalisasi Database dan pengertian database
Normalisasi Database dan pengertian databasethinkplusx1
 

Último (14)

Transfer Massa dan Panas Teknik Kimia Industri
Transfer Massa dan Panas Teknik Kimia IndustriTransfer Massa dan Panas Teknik Kimia Industri
Transfer Massa dan Panas Teknik Kimia Industri
 
MEKANIKA TEKNIK TEKNIK PERTAMBANGAN FAK. TEKNIK
MEKANIKA TEKNIK TEKNIK PERTAMBANGAN FAK. TEKNIKMEKANIKA TEKNIK TEKNIK PERTAMBANGAN FAK. TEKNIK
MEKANIKA TEKNIK TEKNIK PERTAMBANGAN FAK. TEKNIK
 
Himpunan Fuzzy Academic Engineering Data
Himpunan Fuzzy Academic Engineering DataHimpunan Fuzzy Academic Engineering Data
Himpunan Fuzzy Academic Engineering Data
 
PPT Manajemen Konstruksi Unsur Unsur Proyek 1.pptx
PPT Manajemen Konstruksi Unsur Unsur Proyek 1.pptxPPT Manajemen Konstruksi Unsur Unsur Proyek 1.pptx
PPT Manajemen Konstruksi Unsur Unsur Proyek 1.pptx
 
Kelompok 5 PPt Penerapan Teori Fuzzy.pdf
Kelompok 5 PPt Penerapan Teori Fuzzy.pdfKelompok 5 PPt Penerapan Teori Fuzzy.pdf
Kelompok 5 PPt Penerapan Teori Fuzzy.pdf
 
struktur statis tak tentu dengan persamaan-tiga-momen-apdf.pptx
struktur statis tak tentu dengan persamaan-tiga-momen-apdf.pptxstruktur statis tak tentu dengan persamaan-tiga-momen-apdf.pptx
struktur statis tak tentu dengan persamaan-tiga-momen-apdf.pptx
 
QCC MANAJEMEN TOOL MAINTENANCE (MAINTENANCE TEAM).pptx
QCC MANAJEMEN TOOL MAINTENANCE (MAINTENANCE TEAM).pptxQCC MANAJEMEN TOOL MAINTENANCE (MAINTENANCE TEAM).pptx
QCC MANAJEMEN TOOL MAINTENANCE (MAINTENANCE TEAM).pptx
 
MATERI PRESENTASI KEPALA TEKNIK TAMBANG KEPMEN 555
MATERI PRESENTASI KEPALA TEKNIK TAMBANG KEPMEN 555MATERI PRESENTASI KEPALA TEKNIK TAMBANG KEPMEN 555
MATERI PRESENTASI KEPALA TEKNIK TAMBANG KEPMEN 555
 
Ahli Muda Teknik Bangunan GEdung Jenjang 7 - Samet Kurnianto.pptx
Ahli Muda Teknik Bangunan GEdung Jenjang 7 - Samet Kurnianto.pptxAhli Muda Teknik Bangunan GEdung Jenjang 7 - Samet Kurnianto.pptx
Ahli Muda Teknik Bangunan GEdung Jenjang 7 - Samet Kurnianto.pptx
 
PPT PENILAIAN PERKERASAN JALAN Metode PCI.pptx
PPT PENILAIAN PERKERASAN JALAN Metode PCI.pptxPPT PENILAIAN PERKERASAN JALAN Metode PCI.pptx
PPT PENILAIAN PERKERASAN JALAN Metode PCI.pptx
 
Analisis Struktur Statis Tak Tentu dengan Force Method.pdf
Analisis Struktur Statis Tak Tentu dengan Force Method.pdfAnalisis Struktur Statis Tak Tentu dengan Force Method.pdf
Analisis Struktur Statis Tak Tentu dengan Force Method.pdf
 
PPT PPT Pelaksana lapangan Pekerasan Jalan Beton lvl 6.pptx
PPT PPT Pelaksana lapangan Pekerasan Jalan Beton lvl 6.pptxPPT PPT Pelaksana lapangan Pekerasan Jalan Beton lvl 6.pptx
PPT PPT Pelaksana lapangan Pekerasan Jalan Beton lvl 6.pptx
 
Sesi_02_Rangkaian_Hubungan_Seri_Paralel.pptx
Sesi_02_Rangkaian_Hubungan_Seri_Paralel.pptxSesi_02_Rangkaian_Hubungan_Seri_Paralel.pptx
Sesi_02_Rangkaian_Hubungan_Seri_Paralel.pptx
 
Normalisasi Database dan pengertian database
Normalisasi Database dan pengertian databaseNormalisasi Database dan pengertian database
Normalisasi Database dan pengertian database
 

Membuat Stopwatch Menggunakan Mikrokontroler ATMega16

  • 1. Membuat Stopwatch Menggunakan Mikrokontroler ATMega16 by Muhammad Kennedy Ginting A. Deskripsi Umum Bicara tentang stopwatch, benda ini adalah benda yang lumayan terkenal dibidang olahraga pada umumnya. Kali ini saya ingin berbagi bagaimana membuat stopwatch sederhana. Lebih tepatnya bisa di jadikan widget buatan kita sendiri atau bisa Anda jadikan sebagai bahan untuk belajar serta refrensi. Saya akan menggunakan LCD 16x2 dengan 3 switch button (Start, Stop, Reset) dengan mikrokontroller Atmega16. Compiler yang digunakan yakni Codevision AVR. B. Spesifikasi Teknis dan Karakteristik Aplikasi ini merupakan sebuah stopwatch sederhana yang dapat menghitung sampai satuan waktu terkecil yaitu 1/100 detik atau 10 ms. Untuk membangkitkan timer 10 ms saya menggunakan fitur timer0 mikrokontroller. C. Daftar Komponen 1. Sistem Minimum Atmega16  ATmega16  IC 7805  Crystal 12MHz  Kapasitor 22pF (2), 100nF (4), 100uF(2)  2 Resistor 1KΩ  4 Switch Button  1x40 Female Header  1x40 Male Header  1N4002 2. LCD 16x2 3. Potensiometer 1KΩ 4. Battery 9V 5. Downloader AVR D. Prinsip Kerja dan Rangkaian Pada aplikasi ini terdapat 3 buah tombol (push button) yang terdiri dari tombol START, STOP dan RESET. Tombol START digunakan untuk memulai stopwatch, STOP digunakan untuk memberhentikan stowatch dan tombol RESET untuk me-reset (menset ulang kembali nilai stopwatch). Untuk counter (pencacah/penghitung) berbeda dengan timer, perbedaan yang mendasar adalah pada sumber clocknya. Jika timer, sumber clocknya berasal dari internal mikrokontroler dalam hal ini berasal dari kristal.
  • 2. Sedangkan untuk counter sumber clocknya berasal dari luar mikrokontroler (eksternal). Sebagai contoh counter, jika kita ingin menghitung banyaknya barang yang lewat pada konveyor, maka sumber clocknya berasal dari sensor yang mendeteksi barang saat melewatinya. Pada Atmega16 terdapat 3 buah timer, yaitu Timer0 (8 bit), Timer1 (16 bit) dan Timer2 (8 bit). Untuk perbedaan dan cara kerja masing-masing timer, teman-teman dapat membacanya pada datasheet. Disini saya akan coba membahas Timer0 dan Timer1 saja. Untuk lebih jelasnya silakan download datasheet ATmega8535 disini. Perhitungan untuk Timero dan Timer1 adalah sebagai berikut: Ttimer0 = Tosc*(256-TCNT0)*N → (8 bit = 256) Ttimer1 = Tosc*(65536-TCNT1)*N → (16 bit = 65536) Tosc = 1/Fosc → pada aplikasi ini saya menggunakan kristal 12 MHz, sehingga: Tosc = 1/12Mhz = 0,0000000833 detik Dimana: Ttimer0 = lamanya periode Timer0 Ttimer1 = lamanya periode Timer1 TCNT0 = Register Timer0 TCNT1 = Register Timer1 N = Skala clock (mempunyai nilai 1, 8, 64, 256 dan 1024) Tosc = periode clock Fosc = frekuensi clock kristal Timer Sekarang saya akan membuat aplikasi timer yang ditampilkan pada LCD, cara kerjanya pada LCD akan menampilkan nilai awal yaitu 0 kemudian setelah 1 detik (menggunakan timer) nilai tersebut akan naik menjadi 1, kemudian 2 dan seterusnya, jika sudah sampai 100 maka akan diset kembali menjadi 0. Berikut adalah skematiknya:
  • 3. Gambar 1. Skematik Untuk Timer1 dan Timer0 Menggunakan Timer1: Ttimer1 = Tosc*(65536-TCNT1)*N Pada aplikasi diatas diinginkan lamanya timer adalah 1 detik (Ttimer1 = 1 detik) dan jika saya menggunakan kristal 12 MHz dan menggunakan skala clock N = 1024, maka didapat: 1 = 0,0000000833*(65536-TCNT1)*1024 TCNT1= 53818 = D23A (dalam hexa) Dari perhitungan diatas didapat nilai 53818 atau dalam hexa D23A, nilai tersebut harus diisikan pada register TCNT1 agar Timer 1 bernilai 1 detik. Berikut adalah gambar untuk mensetting pada CodeVision CodeWizard AVR: Gambar 2. Setting Pada Timer1
  • 4. Pada settingan diatas digunanakan nilai clock value yaitu 11.719 kHz, nilai tersebut didapat dari Fosc/N atau 12 Mhz/1024. Berikut adalah listing program lengkapnya: /***************************************************** This program was produced by the CodeWizardAVR V2.05.3 Standard Automatic Program Generator © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : TImer1 Version : v.1 Date : 07/08/2014 Author : Muhammad Kennedy Ginting Company : Apartment 57 Comments: Chip type : ATmega16 Program type : Application AVR Core Clock frequency: 12,000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 256 *****************************************************/ unsigned char temp[6]; int data; #include <mega16.h> #include <stdlib.h> // Alphanumeric LCD functions #include <alcd.h> // Timer1 overflow interrupt service routine
  • 5. interrupt [TIM1_OVF] void timer1_ovf_isr(void) { // Reinitialize Timer1 value TCNT1H=0xD23A >> 8; TCNT1L=0xD23A & 0xff; // Place your code here data++; } // Declare your global variables here void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00; DDRA=0x00; // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0x00; // Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
  • 6. // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0x00; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0 output: Disconnected TCCR0=0x00; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 11,719 kHz // Mode: Normal top=0xFFFF // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: On // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x05;
  • 7. TCNT1H=0xD2; TCNT1L=0x3A; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x04; // USART initialization // USART disabled UCSRB=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off
  • 8. ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC disabled ADCSRA=0x00; // SPI initialization // SPI disabled SPCR=0x00; // TWI initialization // TWI disabled TWCR=0x00; // Alphanumeric LCD initialization // Connections are specified in the // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTC Bit 0 // RD - PORTC Bit 1 // EN - PORTC Bit 2 // D4 - PORTC Bit 4 // D5 - PORTC Bit 5 // D6 - PORTC Bit 6 // D7 - PORTC Bit 7 // Characters/line: 16 lcd_init(16); // Global enable interrupts #asm("sei") while (1) { // Place your code here if (data==100) {
  • 9. lcd_clear(); data=0; } lcd_gotoxy(0,0); lcd_putsf("Uji Coba Timer1"); itoa(data,temp); //menampilkan di LCD lcd_gotoxy(0,1); lcd_puts(temp); } } Menggunakan Timer0: Ttimer0 = Tosc*(256-TCNT0)*N Dengan menggunakan Timer0, untuk aplikasi yang sama seperti diatas, sebenarnya timer0 ini tidak dapat menghasilkan periode timer selama 1 detik dikarenakan keterbatasan jumlah bit yaitu hanya 8 bit (256) saja. Tetapi kita masih dapat memanupulasi program agar dapat menghasilkan timer selama 1 detik, caranya dengan membuat timer selama 10 ms kemudian dilakukan pengulangan sebanyak 100 kali, maka akan dihasilkan timer selama 1 detik. 10 ms * 100= 1 detik Pada aplikasi ini diinginkan lamanya timer adalah 10 ms (Ttimer0=10 ms=0.01 s) dan jika saya menggunakan kristal 12 MHz dan menggunakan skala clock N = 1024, maka didapat: 0.01 = 0,0000000833*(256-TCNT0)*1024 TCNT0= 138 = 8A (dalam hexa) Dari perhitungan diatas didapat nilai 138 atau dalam hexa 8A, nilai tersebut harus diisikan pada register TCNT0 agar Timer 0 bernilai 10 mili detik. Berikut adalah gambar untuk mensetting pada CodeVision CodeWizard AVR:
  • 10. Gambar 3. Setting Pada Timer0 Pada settingan diatas digunanakan nilai clock value yaitu 11.719 kHz, nilai tersebut didapat dari Fosc/N atau 12 Mhz/1024. Berikut adalah listing program lengkapnya: /***************************************************** This program was produced by the CodeWizardAVR V2.05.3 Standard Automatic Program Generator © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Timer0 Version : v.1 Date : 07/08/2014 Author : Muhammad Kennedy Ginting Company : Apartment 57 Comments: Chip type : ATmega16 Program type : Application AVR Core Clock frequency: 12,000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 256
  • 11. *****************************************************/ unsigned char temp[6], loop=0; int data; #include <mega16.h> #include <stdlib.h> // Alphanumeric LCD functions #include <alcd.h> // Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) { // Reinitialize Timer 0 value TCNT0=0x8A; // Place your code here loop++; if (loop>=100) { data++; loop=0; } } // Declare your global variables here void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
  • 12. // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00; DDRA=0x00; // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0x00; // Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0x00; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 11,719 kHz // Mode: Normal top=0xFF // OC0 output: Disconnected TCCR0=0x05; TCNT0=0x8A;
  • 13. OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer1 Stopped // Mode: Normal top=0xFFFF // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization
  • 14. // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x01; // USART initialization // USART disabled UCSRB=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC disabled ADCSRA=0x00; // SPI initialization // SPI disabled SPCR=0x00; // TWI initialization // TWI disabled TWCR=0x00; // Alphanumeric LCD initialization // Connections are specified in the // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTC Bit 0 // RD - PORTC Bit 1
  • 15. // EN - PORTC Bit 2 // D4 - PORTC Bit 4 // D5 - PORTC Bit 5 // D6 - PORTC Bit 6 // D7 - PORTC Bit 7 // Characters/line: 16 lcd_init(16); // Global enable interrupts #asm("sei") while (1) { // Place your code here if (data==100) { lcd_clear(); data=0; } lcd_gotoxy(0,0); lcd_putsf("Uji Coba Timer0"); itoa(data,temp); //menampilkan di LCD lcd_gotoxy(0,1); lcd_puts(temp); } } Counter Untuk aplikasi counter lebih mudah dibandingkan dengan timer, karena kita tidak harus lagi menghitung untuk mendapatkan nilai dari register TCNT, tetapi secara otomatis register TCNT yang akan mencacah jika ada input yang masuk.
  • 16. Berikut adalah aplikasi counter untuk menghitung dan ditampilkan pada LCD, input yang digunakan berasal dari pushbutton. Berikut adalah schematicnya: Gambar 4. Skematik Untuk Counter0 dan Counter1 Counter0 Input untuk counter0 berasal dari pin T0 atau PB0. Counter0 hanya mampu mencacah sampai dengan nilai 256 dikarenakan counter 8 bit. Berikut adalah setting pada CodeVision CodeWizard AVR: Gamabar 5. Setting Pada Counter0 Berikut adalah listing program lengkap: /***************************************************** This program was produced by the CodeWizardAVR V2.05.3 Standard
  • 17. Automatic Program Generator © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Counter0 Version : v.1 Date : 07/08/2014 Author : Muhammad Kennedy Ginting Company : Apartment 57 Comments: Chip type : ATmega16 Program type : Application AVR Core Clock frequency: 12,000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 256 *****************************************************/ unsigned char temp[6]; int data; #include <mega16.h> #include <stdlib.h> // Alphanumeric LCD functions #include <alcd.h> // Declare your global variables here void main(void) { // Declare your local variables here
  • 18. // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00; DDRA=0x00; // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0x00; // Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0x00; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00; // Timer/Counter 0 initialization // Clock source: T0 pin Falling Edge // Mode: Normal top=0xFF
  • 19. // OC0 output: Disconnected TCCR0=0x06; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer1 Stopped // Mode: Normal top=0xFFFF // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00;
  • 20. OCR2=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; // USART initialization // USART disabled UCSRB=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC disabled ADCSRA=0x00; // SPI initialization // SPI disabled SPCR=0x00; // TWI initialization // TWI disabled TWCR=0x00; // Alphanumeric LCD initialization // Connections are specified in the
  • 21. // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTC Bit 0 // RD - PORTC Bit 1 // EN - PORTC Bit 2 // D4 - PORTC Bit 4 // D5 - PORTC Bit 5 // D6 - PORTC Bit 6 // D7 - PORTC Bit 7 // Characters/line: 16 lcd_init(16); while (1) { // Place your code here data=TCNT0;//hasil counter (TCNT0) dipindah ke data if (data>=256) { lcd_clear(); } lcd_gotoxy(0,0); lcd_putsf("Uji Coba Counter0"); itoa(data,temp); //menampilkan di LCD lcd_gotoxy(0,1); lcd_puts(temp); } } Counter1 Counter1 tidak jauh berbeda dengan counter0, hanya saja maksimum pencacahan counter1 sampai 65536 dikarenakan counter 16 bit, dan input untuk counter1 berasal dari pin T1 atau PB1. Untuk settingan dan program pada CodeVision AVR hampir sama dengan counter0, jadi tidak akan saya jelaskan lagi disini. Langsung saja ke skematik rangkaian stopwatch.
  • 22. Gambar 6. Rangkaian Untuk Stopwatch Berikut adalah listimg program lengkapnya: /***************************************************** This program was produced by the CodeWizardAVR V2.05.3 Standard Automatic Program Generator © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Stopwatch Version : v.1 Date : 06/08/2014 Author : Muhammad Kennedy Company : Apartment 57 Comments: Chip type : ATmega16 Program type : Application AVR Core Clock frequency: 12,000000 MHz
  • 23. Memory model : Small External RAM size : 0 Data Stack size : 256 *****************************************************/ unsigned char count, temp[16], indeks=0, detik=0, menit=0, jam=0; #include <mega16.h> #include <stdio.h> #include <stdlib.h> #include <delay.h> // Alphanumeric LCD functions #include <alcd.h> #asm .equ __lcd_port=0x15 ;PORTC #endasm // Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) { // Reinitialize Timer 0 value TCNT0=0x8A; count++; // Place your code here } void hitung_waktu() { if (count>=100) { lcd_clear(); detik++; count=0; } if (detik>=60)
  • 24. { menit++; detik=0; } if (menit>=60) { jam++; menit=0; } } void detek_tombol() { if (PINA.0==0 && (indeks==0 || indeks==2))//start timer { indeks=1; TIMSK=0x01;//memulai timer lcd_clear(); } if (PINA.1==0 && indeks==1)//stop timer { indeks=2; TIMSK=0x00;//menstop timer lcd_clear(); } if (PINA.2==0 && indeks==2)//reset timer { indeks=0;//semua data direset count=0; detik=0; menit=0; jam=0; lcd_clear(); } }
  • 25. void tampil_lcd() { lcd_gotoxy(0,0); sprintf(temp,"Timer %d:%d:%d:%d",jam,menit,detik,count); lcd_puts(temp);//tampilkan waktu di LCD baris pertama if (indeks==0) { lcd_gotoxy(0,1); lcd_putsf("START"); } if (indeks==1) { lcd_gotoxy(0,1); lcd_putsf("STOP"); } if (indeks==2) { lcd_gotoxy(0,1); lcd_putsf("START RESET"); } } // Declare your global variables here void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x0f;
  • 26. DDRA=0x00; // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0x00; // Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0x00; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 11,719 kHz // Mode: Normal top=0xFF // OC0 output: Disconnected TCCR0=0x05; TCNT0=0x8A; OCR0=0x00; // Timer/Counter 1 initialization
  • 27. // Clock source: System Clock // Clock value: Timer1 Stopped // Mode: Normal top=0xFFFF // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off
  • 28. MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; // USART initialization // USART disabled UCSRB=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC disabled ADCSRA=0x00; // SPI initialization // SPI disabled SPCR=0x00; // TWI initialization // TWI disabled TWCR=0x00; // Alphanumeric LCD initialization // Connections are specified in the // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTC Bit 0 // RD - PORTC Bit 1 // EN - PORTC Bit 2 // D4 - PORTC Bit 4 // D5 - PORTC Bit 5
  • 29. // D6 - PORTC Bit 6 // D7 - PORTC Bit 7 // Characters/line: 16 lcd_init(16); // Global enable interrupts #asm("sei") while (1) { // Place your code here detek_tombol(); hitung_waktu(); tampil_lcd(); } } *Sistem Minimum Atmega16
  • 30. *Skematik LCD 16x2 Selamat Mencoba  GOOD LUCK !!! Thank’s to Elektro Kontrol http://elektro-kontrol.blogspot.com