// // Row pins (outputs)
// #define ROW0 0
// #define ROW1 1
// // Column pins (inputs with external pull-down)
// #define COL0 2
// #define COL1 3
// // LED pin
// #define LED 7
// void setup() {
// pinMode(ROW0, OUTPUT);
// pinMode(ROW1, OUTPUT);
// pinMode(COL0, INPUT);
// pinMode(COL1, INPUT);
// pinMode(LED, OUTPUT);
// // Keep rows LOW initially
// digitalWrite(ROW0, LOW);
// digitalWrite(ROW1, LOW);
// }
// void loop() {
// bool keyPressed = false;
// // -------- Scan Row 0 --------
// digitalWrite(ROW0, HIGH);
// digitalWrite(ROW1, LOW);
// if (digitalRead(COL0) == HIGH || digitalRead(COL1) == HIGH) {
// keyPressed = true;
// }
// digitalWrite(ROW0, LOW);
// // -------- Scan Row 1 --------
// digitalWrite(ROW1, HIGH);
// if (digitalRead(COL0) == HIGH || digitalRead(COL1) == HIGH) {
// keyPressed = true;
// }
// digitalWrite(ROW1, LOW);
// // -------- LED Control --------
// if (keyPressed) {
// digitalWrite(LED, HIGH);
// delay(50); // debounce
// } else {
// digitalWrite(LED, LOW);
// }
// }
#include <stdint.h>
/* ---------------- PORTA (Keypad) ---------------- */
#define PINA (*(volatile uint8_t*)0x23)
#define DDRA (*(volatile uint8_t*)0x24)
#define PORTA (*(volatile uint8_t*)0x25)
#define PINB (*(volatile uint8_t*)0x20)
#define DDRB (*(volatile uint8_t*)0x21)
#define PORTB (*(volatile uint8_t*)0x22)
/* ---------------- PORTH (LED) ---------------- */
#define DDRH (*(volatile uint8_t*)0x101)
#define PORTH (*(volatile uint8_t*)0x102)
#define DDRF (*(volatile uint8_t*)0x30)
#define PORTF (*(volatile uint8_t*)0x31)
volatile long i,j;
int main(){
DDRF |= 0X0F;
DDRB = 0X00;
DDRA |= 0X02;
while(1){
PORTF = 0x00;
for(i=0; i<2; i++){
PORTA |= (1<<i);
PORTF = PINB;
}
}
}