SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

Rangkaian penyearah gelombang penuh dengan kapasitor sebagai filter
Rangkaian penyearah gelombang penuh dengan kapasitor sebagai filterRangkaian penyearah gelombang penuh dengan kapasitor sebagai filter
Rangkaian penyearah gelombang penuh dengan kapasitor sebagai filterAhmad Mukholik
 
Laporan 2 penyearah gelombang penuh dengan beban tahanan murni
Laporan 2 penyearah gelombang penuh dengan beban tahanan murniLaporan 2 penyearah gelombang penuh dengan beban tahanan murni
Laporan 2 penyearah gelombang penuh dengan beban tahanan murniridwan35
 
Resonansi listrik (rlc)
Resonansi listrik (rlc)Resonansi listrik (rlc)
Resonansi listrik (rlc)noussevarenna
 
Hand out sinyal & sistem
Hand out sinyal & sistemHand out sinyal & sistem
Hand out sinyal & sistemSetyo Wibowo'
 
Pengenalan multisim
Pengenalan multisimPengenalan multisim
Pengenalan multisimeko_dp
 
Rangkaian Listrik Resonansi
Rangkaian Listrik ResonansiRangkaian Listrik Resonansi
Rangkaian Listrik ResonansiFauzi Nugroho
 
Laporan Percobaan 3 (Common Emitter)
Laporan Percobaan 3 (Common Emitter)Laporan Percobaan 3 (Common Emitter)
Laporan Percobaan 3 (Common Emitter)Moh Ali Fauzi
 
Model Matematis untuk Rangkaian Elektrik
Model Matematis untuk Rangkaian ElektrikModel Matematis untuk Rangkaian Elektrik
Model Matematis untuk Rangkaian ElektrikRumah Belajar
 
Implementasi persamaan poisson dan persamaan laplace di dalam fisika
Implementasi persamaan poisson dan persamaan laplace di dalam fisikaImplementasi persamaan poisson dan persamaan laplace di dalam fisika
Implementasi persamaan poisson dan persamaan laplace di dalam fisikaElva A Michio Thea
 
Presentation elektronika dasar
Presentation elektronika dasarPresentation elektronika dasar
Presentation elektronika dasarKevin Maulana
 
Vektor &amp; hukum ampere
Vektor &amp; hukum ampereVektor &amp; hukum ampere
Vektor &amp; hukum ampereI Kadek Wirawan
 
10 pengolahan sinyal diskrit
10 pengolahan sinyal diskrit10 pengolahan sinyal diskrit
10 pengolahan sinyal diskritSimon Patabang
 
Makalah elektronika analog
Makalah elektronika analogMakalah elektronika analog
Makalah elektronika analogNur Aoliya
 
Karakteristik dioda
Karakteristik diodaKarakteristik dioda
Karakteristik diodajumranjum
 
Pengolahan Sinyal Digital - Slide week 8 - persamaan beda
Pengolahan Sinyal Digital - Slide week 8  - persamaan bedaPengolahan Sinyal Digital - Slide week 8  - persamaan beda
Pengolahan Sinyal Digital - Slide week 8 - persamaan bedaBeny Nugraha
 
Karakteristik dioda
Karakteristik diodaKarakteristik dioda
Karakteristik diodaArina Haq
 

Tendances (20)

Transistor
TransistorTransistor
Transistor
 
Rangkaian penyearah gelombang penuh dengan kapasitor sebagai filter
Rangkaian penyearah gelombang penuh dengan kapasitor sebagai filterRangkaian penyearah gelombang penuh dengan kapasitor sebagai filter
Rangkaian penyearah gelombang penuh dengan kapasitor sebagai filter
 
Elektronika analog 2
Elektronika analog 2Elektronika analog 2
Elektronika analog 2
 
Laporan 2 penyearah gelombang penuh dengan beban tahanan murni
Laporan 2 penyearah gelombang penuh dengan beban tahanan murniLaporan 2 penyearah gelombang penuh dengan beban tahanan murni
Laporan 2 penyearah gelombang penuh dengan beban tahanan murni
 
Resonansi listrik (rlc)
Resonansi listrik (rlc)Resonansi listrik (rlc)
Resonansi listrik (rlc)
 
Hand out sinyal & sistem
Hand out sinyal & sistemHand out sinyal & sistem
Hand out sinyal & sistem
 
Pengenalan multisim
Pengenalan multisimPengenalan multisim
Pengenalan multisim
 
Rangkaian Listrik Resonansi
Rangkaian Listrik ResonansiRangkaian Listrik Resonansi
Rangkaian Listrik Resonansi
 
Laporan Percobaan 3 (Common Emitter)
Laporan Percobaan 3 (Common Emitter)Laporan Percobaan 3 (Common Emitter)
Laporan Percobaan 3 (Common Emitter)
 
Model Matematis untuk Rangkaian Elektrik
Model Matematis untuk Rangkaian ElektrikModel Matematis untuk Rangkaian Elektrik
Model Matematis untuk Rangkaian Elektrik
 
Implementasi persamaan poisson dan persamaan laplace di dalam fisika
Implementasi persamaan poisson dan persamaan laplace di dalam fisikaImplementasi persamaan poisson dan persamaan laplace di dalam fisika
Implementasi persamaan poisson dan persamaan laplace di dalam fisika
 
Presentation elektronika dasar
Presentation elektronika dasarPresentation elektronika dasar
Presentation elektronika dasar
 
PCM (Pulse Code Modulation)
PCM (Pulse Code Modulation)PCM (Pulse Code Modulation)
PCM (Pulse Code Modulation)
 
Vektor &amp; hukum ampere
Vektor &amp; hukum ampereVektor &amp; hukum ampere
Vektor &amp; hukum ampere
 
10 pengolahan sinyal diskrit
10 pengolahan sinyal diskrit10 pengolahan sinyal diskrit
10 pengolahan sinyal diskrit
 
Makalah elektronika analog
Makalah elektronika analogMakalah elektronika analog
Makalah elektronika analog
 
Karakteristik dioda
Karakteristik diodaKarakteristik dioda
Karakteristik dioda
 
Pengolahan Sinyal Digital - Slide week 8 - persamaan beda
Pengolahan Sinyal Digital - Slide week 8  - persamaan bedaPengolahan Sinyal Digital - Slide week 8  - persamaan beda
Pengolahan Sinyal Digital - Slide week 8 - persamaan beda
 
Karakteristik dioda
Karakteristik diodaKarakteristik dioda
Karakteristik dioda
 
5 gradien
5 gradien5 gradien
5 gradien
 

En vedette

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
 

En vedette (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...
 

Similaire à Membuat stopwatch menggunakan mikrokontroler atmega16 by muhammad kennedy ginting

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
 
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
 
Rancang Walking Robot Dengan Mikrokontroler Atmega16
Rancang Walking Robot Dengan Mikrokontroler Atmega16Rancang Walking Robot Dengan Mikrokontroler Atmega16
Rancang Walking Robot Dengan Mikrokontroler Atmega16thoriqdzulfikar
 
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
 

Similaire à Membuat stopwatch menggunakan mikrokontroler atmega16 by muhammad kennedy ginting (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
 
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
 
Rancang Walking Robot Dengan Mikrokontroler Atmega16
Rancang Walking Robot Dengan Mikrokontroler Atmega16Rancang Walking Robot Dengan Mikrokontroler Atmega16
Rancang Walking Robot Dengan Mikrokontroler 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
 

Plus 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
 

Plus 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)
 

Dernier

Laporan Tinjauan Manajemen HSE/Laporan HSE Triwulanpptx
Laporan Tinjauan Manajemen HSE/Laporan HSE TriwulanpptxLaporan Tinjauan Manajemen HSE/Laporan HSE Triwulanpptx
Laporan Tinjauan Manajemen HSE/Laporan HSE Triwulanpptxilanarespatinovitari1
 
LAJU RESPIRASI.teknologi hasil pertanianpdf
LAJU RESPIRASI.teknologi hasil pertanianpdfLAJU RESPIRASI.teknologi hasil pertanianpdf
LAJU RESPIRASI.teknologi hasil pertanianpdfIftitahKartika
 
Lecture 02 - Kondisi Geologi dan Eksplorasi Batubara untuk Tambang Terbuka - ...
Lecture 02 - Kondisi Geologi dan Eksplorasi Batubara untuk Tambang Terbuka - ...Lecture 02 - Kondisi Geologi dan Eksplorasi Batubara untuk Tambang Terbuka - ...
Lecture 02 - Kondisi Geologi dan Eksplorasi Batubara untuk Tambang Terbuka - ...rororasiputra
 
PEMELIHARAAN JEMBATAN pada Ujian Kompete
PEMELIHARAAN JEMBATAN pada Ujian KompetePEMELIHARAAN JEMBATAN pada Ujian Kompete
PEMELIHARAAN JEMBATAN pada Ujian KompeteIwanBasinu1
 
2024.02.26 - Pra-Rakor Tol IKN 3A-2 - R2 V2.pptx
2024.02.26 - Pra-Rakor Tol IKN 3A-2 - R2 V2.pptx2024.02.26 - Pra-Rakor Tol IKN 3A-2 - R2 V2.pptx
2024.02.26 - Pra-Rakor Tol IKN 3A-2 - R2 V2.pptxEnginerMine
 
Presentation Bisnis Teknologi Modern Biru & Ungu_20240429_074226_0000.pptx
Presentation Bisnis Teknologi Modern Biru & Ungu_20240429_074226_0000.pptxPresentation Bisnis Teknologi Modern Biru & Ungu_20240429_074226_0000.pptx
Presentation Bisnis Teknologi Modern Biru & Ungu_20240429_074226_0000.pptxyoodika046
 
SOAL UJIAN SKKhhhhhhjjjjjjjjjjjjjjjj.pptx
SOAL UJIAN SKKhhhhhhjjjjjjjjjjjjjjjj.pptxSOAL UJIAN SKKhhhhhhjjjjjjjjjjjjjjjj.pptx
SOAL UJIAN SKKhhhhhhjjjjjjjjjjjjjjjj.pptxFahrizalTriPrasetyo
 
Pengolahan Kelapa Sawit 1 pabrik pks.pdf
Pengolahan Kelapa Sawit 1 pabrik pks.pdfPengolahan Kelapa Sawit 1 pabrik pks.pdf
Pengolahan Kelapa Sawit 1 pabrik pks.pdffitriAnnisa54
 
B_Kelompok 4_Tugas 2_Arahan Pengelolaan limbah pertambangan Bauksit_PPT.pdf
B_Kelompok 4_Tugas 2_Arahan Pengelolaan limbah pertambangan Bauksit_PPT.pdfB_Kelompok 4_Tugas 2_Arahan Pengelolaan limbah pertambangan Bauksit_PPT.pdf
B_Kelompok 4_Tugas 2_Arahan Pengelolaan limbah pertambangan Bauksit_PPT.pdf114210034
 
sample for Flow Chart Permintaan Spare Part
sample for Flow Chart Permintaan Spare Partsample for Flow Chart Permintaan Spare Part
sample for Flow Chart Permintaan Spare Parthusien3
 
ppt hidrolika_ARI SATRIA NINGSIH_E1A120026.pptx
ppt hidrolika_ARI SATRIA NINGSIH_E1A120026.pptxppt hidrolika_ARI SATRIA NINGSIH_E1A120026.pptx
ppt hidrolika_ARI SATRIA NINGSIH_E1A120026.pptxArisatrianingsih
 
Konsep rangkaian filter aktif berbasis operational amplifier
Konsep rangkaian filter aktif berbasis operational amplifierKonsep rangkaian filter aktif berbasis operational amplifier
Konsep rangkaian filter aktif berbasis operational amplifierbudi194705
 
Presentasi gedung jenjang 6 - Isman Kurniawan.ppt
Presentasi gedung jenjang 6 - Isman Kurniawan.pptPresentasi gedung jenjang 6 - Isman Kurniawan.ppt
Presentasi gedung jenjang 6 - Isman Kurniawan.pptarifyudianto3
 
397187784-Contoh-Kasus-Analisis-Regresi-Linear-Sederhana.pptx
397187784-Contoh-Kasus-Analisis-Regresi-Linear-Sederhana.pptx397187784-Contoh-Kasus-Analisis-Regresi-Linear-Sederhana.pptx
397187784-Contoh-Kasus-Analisis-Regresi-Linear-Sederhana.pptxVinaAmelia23
 
TEKNIS TES TULIS REKRUTMEN PAMSIMAS 2024.pdf
TEKNIS TES TULIS REKRUTMEN PAMSIMAS 2024.pdfTEKNIS TES TULIS REKRUTMEN PAMSIMAS 2024.pdf
TEKNIS TES TULIS REKRUTMEN PAMSIMAS 2024.pdfYogiCahyoPurnomo
 
POWER POINT TEKLING UNTUK SARJANA KEATAS
POWER POINT TEKLING UNTUK SARJANA KEATASPOWER POINT TEKLING UNTUK SARJANA KEATAS
POWER POINT TEKLING UNTUK SARJANA KEATASMuhammadFiqi8
 
BAB_3_Teorema superposisi_thevenin_norton (1).ppt
BAB_3_Teorema superposisi_thevenin_norton (1).pptBAB_3_Teorema superposisi_thevenin_norton (1).ppt
BAB_3_Teorema superposisi_thevenin_norton (1).pptDellaEkaPutri2
 
UTILITAS BANGUNAN BERUPA PENANGKAL PETIR.pptx
UTILITAS BANGUNAN BERUPA PENANGKAL PETIR.pptxUTILITAS BANGUNAN BERUPA PENANGKAL PETIR.pptx
UTILITAS BANGUNAN BERUPA PENANGKAL PETIR.pptxAndimarini2
 
Manajer Lapangan Pelaksanaan Pekerjaan Gedung - Endy Aitya.pptx
Manajer Lapangan Pelaksanaan Pekerjaan Gedung - Endy Aitya.pptxManajer Lapangan Pelaksanaan Pekerjaan Gedung - Endy Aitya.pptx
Manajer Lapangan Pelaksanaan Pekerjaan Gedung - Endy Aitya.pptxarifyudianto3
 

Dernier (20)

Laporan Tinjauan Manajemen HSE/Laporan HSE Triwulanpptx
Laporan Tinjauan Manajemen HSE/Laporan HSE TriwulanpptxLaporan Tinjauan Manajemen HSE/Laporan HSE Triwulanpptx
Laporan Tinjauan Manajemen HSE/Laporan HSE Triwulanpptx
 
Abortion Pills In Doha // QATAR (+966572737505 ) Get Cytotec
Abortion Pills In Doha // QATAR (+966572737505 ) Get CytotecAbortion Pills In Doha // QATAR (+966572737505 ) Get Cytotec
Abortion Pills In Doha // QATAR (+966572737505 ) Get Cytotec
 
LAJU RESPIRASI.teknologi hasil pertanianpdf
LAJU RESPIRASI.teknologi hasil pertanianpdfLAJU RESPIRASI.teknologi hasil pertanianpdf
LAJU RESPIRASI.teknologi hasil pertanianpdf
 
Lecture 02 - Kondisi Geologi dan Eksplorasi Batubara untuk Tambang Terbuka - ...
Lecture 02 - Kondisi Geologi dan Eksplorasi Batubara untuk Tambang Terbuka - ...Lecture 02 - Kondisi Geologi dan Eksplorasi Batubara untuk Tambang Terbuka - ...
Lecture 02 - Kondisi Geologi dan Eksplorasi Batubara untuk Tambang Terbuka - ...
 
PEMELIHARAAN JEMBATAN pada Ujian Kompete
PEMELIHARAAN JEMBATAN pada Ujian KompetePEMELIHARAAN JEMBATAN pada Ujian Kompete
PEMELIHARAAN JEMBATAN pada Ujian Kompete
 
2024.02.26 - Pra-Rakor Tol IKN 3A-2 - R2 V2.pptx
2024.02.26 - Pra-Rakor Tol IKN 3A-2 - R2 V2.pptx2024.02.26 - Pra-Rakor Tol IKN 3A-2 - R2 V2.pptx
2024.02.26 - Pra-Rakor Tol IKN 3A-2 - R2 V2.pptx
 
Presentation Bisnis Teknologi Modern Biru & Ungu_20240429_074226_0000.pptx
Presentation Bisnis Teknologi Modern Biru & Ungu_20240429_074226_0000.pptxPresentation Bisnis Teknologi Modern Biru & Ungu_20240429_074226_0000.pptx
Presentation Bisnis Teknologi Modern Biru & Ungu_20240429_074226_0000.pptx
 
SOAL UJIAN SKKhhhhhhjjjjjjjjjjjjjjjj.pptx
SOAL UJIAN SKKhhhhhhjjjjjjjjjjjjjjjj.pptxSOAL UJIAN SKKhhhhhhjjjjjjjjjjjjjjjj.pptx
SOAL UJIAN SKKhhhhhhjjjjjjjjjjjjjjjj.pptx
 
Pengolahan Kelapa Sawit 1 pabrik pks.pdf
Pengolahan Kelapa Sawit 1 pabrik pks.pdfPengolahan Kelapa Sawit 1 pabrik pks.pdf
Pengolahan Kelapa Sawit 1 pabrik pks.pdf
 
B_Kelompok 4_Tugas 2_Arahan Pengelolaan limbah pertambangan Bauksit_PPT.pdf
B_Kelompok 4_Tugas 2_Arahan Pengelolaan limbah pertambangan Bauksit_PPT.pdfB_Kelompok 4_Tugas 2_Arahan Pengelolaan limbah pertambangan Bauksit_PPT.pdf
B_Kelompok 4_Tugas 2_Arahan Pengelolaan limbah pertambangan Bauksit_PPT.pdf
 
sample for Flow Chart Permintaan Spare Part
sample for Flow Chart Permintaan Spare Partsample for Flow Chart Permintaan Spare Part
sample for Flow Chart Permintaan Spare Part
 
ppt hidrolika_ARI SATRIA NINGSIH_E1A120026.pptx
ppt hidrolika_ARI SATRIA NINGSIH_E1A120026.pptxppt hidrolika_ARI SATRIA NINGSIH_E1A120026.pptx
ppt hidrolika_ARI SATRIA NINGSIH_E1A120026.pptx
 
Konsep rangkaian filter aktif berbasis operational amplifier
Konsep rangkaian filter aktif berbasis operational amplifierKonsep rangkaian filter aktif berbasis operational amplifier
Konsep rangkaian filter aktif berbasis operational amplifier
 
Presentasi gedung jenjang 6 - Isman Kurniawan.ppt
Presentasi gedung jenjang 6 - Isman Kurniawan.pptPresentasi gedung jenjang 6 - Isman Kurniawan.ppt
Presentasi gedung jenjang 6 - Isman Kurniawan.ppt
 
397187784-Contoh-Kasus-Analisis-Regresi-Linear-Sederhana.pptx
397187784-Contoh-Kasus-Analisis-Regresi-Linear-Sederhana.pptx397187784-Contoh-Kasus-Analisis-Regresi-Linear-Sederhana.pptx
397187784-Contoh-Kasus-Analisis-Regresi-Linear-Sederhana.pptx
 
TEKNIS TES TULIS REKRUTMEN PAMSIMAS 2024.pdf
TEKNIS TES TULIS REKRUTMEN PAMSIMAS 2024.pdfTEKNIS TES TULIS REKRUTMEN PAMSIMAS 2024.pdf
TEKNIS TES TULIS REKRUTMEN PAMSIMAS 2024.pdf
 
POWER POINT TEKLING UNTUK SARJANA KEATAS
POWER POINT TEKLING UNTUK SARJANA KEATASPOWER POINT TEKLING UNTUK SARJANA KEATAS
POWER POINT TEKLING UNTUK SARJANA KEATAS
 
BAB_3_Teorema superposisi_thevenin_norton (1).ppt
BAB_3_Teorema superposisi_thevenin_norton (1).pptBAB_3_Teorema superposisi_thevenin_norton (1).ppt
BAB_3_Teorema superposisi_thevenin_norton (1).ppt
 
UTILITAS BANGUNAN BERUPA PENANGKAL PETIR.pptx
UTILITAS BANGUNAN BERUPA PENANGKAL PETIR.pptxUTILITAS BANGUNAN BERUPA PENANGKAL PETIR.pptx
UTILITAS BANGUNAN BERUPA PENANGKAL PETIR.pptx
 
Manajer Lapangan Pelaksanaan Pekerjaan Gedung - Endy Aitya.pptx
Manajer Lapangan Pelaksanaan Pekerjaan Gedung - Endy Aitya.pptxManajer Lapangan Pelaksanaan Pekerjaan Gedung - Endy Aitya.pptx
Manajer Lapangan Pelaksanaan Pekerjaan Gedung - Endy Aitya.pptx
 

Membuat stopwatch menggunakan mikrokontroler atmega16 by muhammad kennedy ginting

  • 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