Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

Workshop Mikrokontroler

TUGAS

Dosen Pengampu :
Akhmad Hendriawan S.T., M.T.
Disusun Oleh :
Achmad Ainnur Hakim
2121500038

PROGRAM STUDI D3 TEKNIK ELEKTRONIKA


DEPARTEMEN TEKNIK ELEKTRO
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
SURABAYA
2023
Workshop Mikrokontroler

RUNING LED (NO.1)

#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;
}
}
}

UP/DOWN COUNTER DIFF PCINT (N0.2)

#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;
}
}
}

UP/DOWN COUNTER SAME PCINT (3)

#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;
}
}
}

You might also like