#include <avr/io.h>
#include <util/delay.h>
#include <avr/eeprom.h>
uint8_t data;
// PB5 Buzzer
// PB4 Tombol paling kanan D10, ganti-ganti mode
// PB6 Tombol agak kanan D9, konfirmasi
// PH5 Tombol agak kiri, eksekusi
// PB7 Lampu LED D13
int main (void) {
DDRB|=(1<<DDB7); // ??? ini ngeset si PB7 LED jadi output
PORTB|= (1<<4); // D10-PB.4 pullup pushbtn --change mode
PORTH|= (1<<5); // D8-PH.5 pullup pushbtn -run
DDRA=0xFF; // Aktifkan semua register A, keknya ini ngeset semua PA untuk LED jadi output
PORTA=~data; // Bacaan register di port A itu dijadikan negasi dari data
data=eeprom_read_byte((uint8_t*)0); // Baca eeprom di address 0
eeprom_write_byte((uint8_t*)0, 1);
data = 1;
PORTA=~data;
while(1){
while (!(PINB&(1<<4))){ // pas button ditekan, data terus bertambah, port a menunjukkan perubahan sesuai nilai ~data, kalau udah 8, balik lagi
if(data++<=2) {
PORTA=~data;
// _delay_ms(700);
}
else{
data=1; // Proses pilih-pilih data dari ***besarnya nilai si data***
PORTA=~data;
}
eeprom_write_byte((uint8_t*)0, data); // write data to eeprom di address 0
PORTB |= (1 << 5);
_delay_ms(100);
PORTB &= ~(1 << 5);
// for (int i=0;i<8;i++) { // pas tekan dia ngasih respon kedip-kedip led di PB7
// PORTB ^=(1<<7);
// _delay_ms(200);
// }
// PORTB |= (1 << 5);
// _delay_ms(100);
// PORTB &= ~(1 << 5);
}
// if (!(PINH&(1<<6))){
// eeprom_write_byte((uint8_t*)0, data); // write data to eeprom di address 0
// for (int i=0;i<8;i++) { // pas tekan dia ngasih respon kedip-kedip led di PB7
// PORTB ^=(1<<7);
// _delay_ms(200);
// }
// }
if (!(PINH & (1<<5))){ // pas si PH5 di pencet, maka:
data=eeprom_read_byte((uint8_t*)0); // nilai data jadi samadengan bacaan eeprom di address 0
PORTA=0xFF; // bikin si PORTA jadi FF, antara mati semua atau nyala semua (seingatku mati semua, karena aktif low)
_delay_ms(800);
PORTA=~data; // Nyalanya si PORTA jadi sesuai besarnya nilai data, tapi di negasi, karena aktif low
// Tinggal tambahin, kalau kau pencet, terus data nya di yang beberapa macam ini, kasih lah bunyi-bunyi macam-macam
if(data == 1){
PORTB |= (1 << 5);
_delay_ms(500);
PORTB &= ~(1 << 5);
_delay_ms(500);
PORTB |= (1 << 5);
_delay_ms(500);
PORTB &= ~(1 << 5);
_delay_ms(500);
}
if(data == 2){
PORTB |= (1 << 5);
_delay_ms(200);
PORTB &= ~(1 << 5);
_delay_ms(200);
PORTB |= (1 << 5);
_delay_ms(200);
PORTB &= ~(1 << 5);
_delay_ms(200);
PORTB |= (1 << 5);
_delay_ms(200);
PORTB &= ~(1 << 5);
_delay_ms(200);
PORTB |= (1 << 5);
_delay_ms(200);
PORTB &= ~(1 << 5);
_delay_ms(200);
PORTB |= (1 << 5);
_delay_ms(200);
PORTB &= ~(1 << 5);
_delay_ms(200);
}
if(data == 3){
PORTB |= (1 << 5);
_delay_ms(1000);
PORTB &= ~(1 << 5);
_delay_ms(200);
PORTB |= (1 << 5);
_delay_ms(1000);
PORTB &= ~(1 << 5);
_delay_ms(200);
PORTB |= (1 << 5);
_delay_ms(200);
PORTB &= ~(1 << 5);
_delay_ms(200);
}
}
}
}