koding
DESCRIPTION
codingTRANSCRIPT
#include <mega8535.h> //fungsi pengarah yang mengatakan kepada kompiler untuk meletakan kode dari header file
#include <delay.h> //fungsi tunda
#include <stdio.h> //library pada bahasa C yang digunakan untuk operasi input-output
#include <alcd.h> //library untuk lcd
char kata0[16],kata1[16],kata2[16],kata3[16]; //char = tipe data 8 bit
unsigned int loop,val_timer,tim0,tim1,tim2; //unsigned int = tipe data 16 bit , tim = inisial time
unsigned int val_tim0,val_tim1,val_tim2; //unsigned int = tipe data 16 bit
unsigned int co0,co1,co2; //unsigned int = tipe data 16 bit , co = inisial counter
void display(void){ //inisiasi untul program yang muncul pada display
sprintf(kata0,"waktu= %5i",val_timer); //untuk menampilkan sesuatu pada layar
sprintf(kata1,"A=%3i tA=%5i",co0,val_tim0); //untuk menampilkan sesuatu pada layar
sprintf(kata2,"B=%3i tB=%5i",co1,val_tim1); //untuk menampilkan sesuatu pada layar
sprintf(kata3,"C=%3i tC=%5i",co2,val_tim2); //untuk menampilkan sesuatu pada layar
lcd_gotoxy(0,0); //untuk mensetting posisi karakter pertama
lcd_puts(kata0); //untuk memunculkan kata yang telah diinisialkan
lcd_gotoxy(0,1); //untuk mensetting posisi karakter kedua
lcd_puts(kata1); //untuk memunculkan kata yang telah diinisialkan
lcd_gotoxy(0,2); //untuk mensetting posisi karakter ketiga
lcd_puts(kata2); //untuk memunculkan kata yang telah diinisialkan
lcd_gotoxy(0,3); //untuk mensetting posisi karakter keempat
lcd_puts(kata3); //untuk memunculkan kata yang telah diinisialkan
}
CODING INTERRUPT
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here
val_tim0=tim0; //inisialisasi waktu
tim0=0; //timer dalam kondisi awal low
co0++; //counter bertambah
}
// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
// Place your code here
val_tim1=tim1; //inisialisasi waktu
tim1=0; //timer dalam kondisi awal low
co1++; //counter bertambah
}
// External Interrupt 2 service routine
interrupt [EXT_INT2] void ext_int2_isr(void)
{
// Place your code here
val_tim2=tim2; //inisialisasi waktu
tim2=0; //timer dalam kondisi awal low
co2++; //counter bertambah
}
CODING TIMER
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here
loop++;
if(loop==20000){
loop=0;
val_timer++;
tim0++;
tim1++;
tim2++;
}
}
// Declare your global variables here
void main(void)
{
PORTB|=1<<2; //nilai pin kedua bernilai high
PORTD|=1<<2 | 1<<3; //nilai pin kedua dan ketiga bernilai high
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 4000,000 kHz
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x01; //setting skala clock = 1
TCNT0=0x00; //setting nilai awal timer
OCR0=0x00; //output compare register tidak difungsikan
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Falling Edge (aktif jika mendapat transisi dari high ke low)
// INT1: On
// INT1 Mode: Falling Edge (aktif jika mendapat transisi dari high ke low)
// INT2: On
// INT2 Mode: Falling Edge (aktif jika mendapat transisi dari high ke low)
GICR|=0xE0; //general input control register
MCUCR=0x0A; //MCU Control and Status Register
MCUCSR=0x00; //MCU Control and Status Register
GIFR=0xE0; //General Interrupt Flag Register
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01; // untuk mengendalikan interrup mana yang akan diaktifkan
// Alphanumeric LCD initialization
// Connections 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")
lcd_clear();
lcd_gotoxy(0,0);
while (1)
{
// Place your code here
display();
}
}