Professional Documents
Culture Documents
Program Running Led Dan Up Down Counter
Program Running Led Dan Up Down Counter
TUGAS
Dosen Pengampu :
Akhmad Hendriawan S.T., M.T.
Disusun Oleh :
Achmad Ainnur Hakim
2121500038
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
uint8_t flag,io,buff;
uint8_t i = 0;
int a = 0;
ISR(INT3_vect){
flag = 1;
}
ISR(INT4_vect){
flag = 2;
}
int main(void){
DDRA |= 0XFF;
DDRE &=~(1<<0);
DDRJ &=~(1<<0);
PORTD |= (1<<3);// int 3 arduino 0
PORTE |= (1<<4);// int 4
EIMSK |= (1<<INT3)|(1<<INT4);
EICRA |=_BV(ISC31)|_BV(ISC41); // enable interrupt
sei();
while(1){
switch(flag){
case 0:
PORTA = 0xAA; // kondisi awal 1010 1010
sei();
break;
case 1:
a=i;
PORTA = (1<<i);
_delay_ms(500);
i++;
if(i>8)i=0;
sei();
break;
case 2:
i=a;
PORTA = (1<<a);
_delay_ms(500);
Workshop Mikrokontroler
a--;
if(a<0)a=8;
sei();
break;
}
}
}
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
uint8_t flag,io,buff;
uint8_t i = 0x00;
uint8_t a = 0x00;
ISR(PCINT1_vect){
flag = 1;
}
ISR(PCINT0_vect){
flag = 2;
}
int main(void){
DDRA |= 0XFF;
DDRE &=~(1<<0);
DDRJ &=~(1<<0);
PORTE |= (1<<0);// pcint 8 arduino 0
PORTB |= (1<<2);// pcint 2
PCMSK1 |= (1<<PCINT8);
PCMSK0 |=(1<<PCINT2); // enable interrupt
PCICR |= _BV(PCIE1)|_BV(PCIE0);
sei();
while(1){
switch(flag){
case 0:
PORTA = 0xAA; // kondisi awal 1010 1010
sei();
break;
case 1:
i++;
a=i;
PORTA = i;
Workshop Mikrokontroler
_delay_ms(500);
sei();
break;
case 2:
a--;
i=a;
PORTA = a;
_delay_ms(500);
sei();
break;
}
}
}
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
uint8_t flag,io,buff;
uint8_t i = 0x00;
uint8_t a = 0x00;
ISR(PCINT1_vect){
buff = 0 | PINE;
io = 0 | PINJ;
if(buff == 0 ){
flag = 1;
}
if(io == 0){
flag = 2;
}
int main(void){
DDRA |= 0XFF;
DDRE &=~(1<<0);
DDRJ &=~(1<<0);
PORTE |= (1<<0);// pcint 8 arduino 0
PORTJ |= (1<<0);// pcint 9 arduino 15
PCMSK1 |= (1<<PCINT8)|(1<<PCINT9); // enable interrupt
PCICR |= _BV(PCIE1);
sei();
Workshop Mikrokontroler
while(1){
switch(flag){
case 0:
PORTA = 0xAA; // kondisi awal 1010 1010
sei();
break;
case 1:
i++;
a=i;
PORTA = i;
_delay_ms(500);
sei();
break;
case 2:
a--;
i=a;
PORTA = a;
_delay_ms(500);
sei();
break;
}
}
}