BASIC4MCU | 질문게시판 | 안녕하세요 스위치로 led 제어 관련 질문이 있습니다
페이지 정보
작성자 노형빈 작성일2023-09-25 19:12 조회1,793회 댓글1건본문
#define F_CPU 16000000
#include <avr/io.h>
#include <util/delay.h>
// MODE 상수 정의
#define MODE1 0x01
#define MODE2 0x02
int main() {
// G 포트 설정
DDRG = 0x03; // 입력 모드로 설정 (G 포트의 핀을 입력으로 사용)
// 초기 MODE 설정 (예시로 MODE1로 시작)
uint8_t currentMode = MODE1;
while (1)
{
if (여기에 어떤 값을 넣어야 할지 모르겠습니다) {
// keyin이 1일 때 MODE 변경
if (currentMode == MODE1) {
// 현재 MODE가 MODE1인 경우 MODE2로 변경
currentMode = MODE2;
} else {
// 현재 MODE가 MODE2인 경우 MODE1로 변경
currentMode = MODE1;
}
// 여기에 MODE 변경 시 필요한 작업을 추가하세요
// 디바운싱을 위한 딜레이 (필요시 조절)
_delay_ms(100);
}
// 이곳에 MODE에 따른 동작을 추가하세요
if (currentMode == MODE1) {
while(1) {
PORTG = 0x01;
_delay_ms(1000);
PORTG = 0x02;
_delay_ms(1000);
}
// MODE1일 때의 동작을 여기에 추가
} else if (currentMode == MODE2) {
while(1) {
PORTG = 0x01;
_delay_ms(500);
PORTG = 0x00;
_delay_ms(500);
}
// MODE2일 때의 동작을 여기에 추가
}
}
return 0;
}
제가 생각하는 것은 keyin = (PING & 0x0C) >> 2; 로 잡고
keyin == 1 이 되면 모드가 바뀌게 하고싶습니다.
근데 왜 안되는 걸까요..??
댓글 1
조회수 1,793master님의 댓글
master 작성일
두개의 스위치를 동시에 누른 것을 체크하는 것은 아닐테고요
한개의 스위치만 체크하면 되겠죠?
while (1){
keyin = PING & 3;
if (keyin&1) { // keyin이 1일 때 MODE 변경 // PG0==1이면
if (currentMode == MODE1) {