외부인터럽트 실험 C언어 변형문제 질문
후예
질문 제목 : 외부인터럽트 실험 C언어 변형문제 질문질문 요약 :KEY MATRIX의 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F의 키를 누르면 0눌렸을때 세그먼트에 0이, 1눌렸을때 1이, ~~~ F를 눌렸을때 F가 세그먼트에 디스플레이 되는 프로그램으로 변형시켜야합니다.
질문 내용 :
이 프로그램을 설명하자면, KEY MATRIX의 0,4,8,C 키를 누르면Q0에0의 키를 눌렸을때 0이 세그먼트에 나오고, 4를 눌렸을때, 4가나오고,8눌렸을때 8이 C눌렸을때 C가 세그먼트에 나오는 프로그램입니다.
문제는 여기서 변형을 시켜야하는데, KEY MATRIX의 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F의 키를 누르면 위의 방식처럼 0눌렸을때 세그먼트에 0이, 1눌렸을때 1이, ~~~ F를 눌렸을때 F가 세그먼트에 디스플레이 되는 프로그램으로 변형시켜야합니다. 어떻게 변형시켜야하는지 잘 모르겠네요. 고수분들 도와주세요.
#include io16f877.h //I/O가 정의 되어있는 헤더 파일
unsigned char digit0,key; // 임시 저장 전역 변수
// 0 - F 숫자의 디스플레이 포맷
const unsigned char SEG[16] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
// 세그먼트 디스플레이
void SEGMENT (void)
{
PORTD = SEG[digit0]; // 세그먼트 출력
PORTC = 0xfe; // 디지트 출력
}
// 인터럽트 처리 루틴
#pragma vector = 0x04 // 인터럽트 벡터 선언
// RB4-RB7 변화 인터럽트
__interrupt void RB_INT(void)
{
unsigned char bounce;
key = PORTB ; // 키 입력(상위 4비트만 유효)
// 바운스 제거
do{
bounce = PORTB;
}while((bounce & 0xf0) != 0xf0);
// 인터럽트 플래그 클리어
RBIF = 0;
}
// 메인
void main(void)
{
TRISD = 0x00; // D 포트 출력
TRISC = 0x00; // C 포트 출력
TRISB = 0xf0; // RB4-RB7 입력
INTCON = 0x88; // RB4-RB7핀 변화 인터럽트 인에이블
digit0 = 0x00; // 출력 디지트 초기 설정
do{
SEGMENT(); // 세그먼트 출력
PORTB = 0xfe; // 첫 번째 열 검출 허가
asm (SLEEP); // 슬립 모드(인터럽트 대기)
// 입력된 키 해석
if (!(key & 0x10)) digit0 = 0x00; // 0키
else if (!(key & 0x20)) digit0 = 0x4; // 4키
else if (!(key & 0x40)) digit0 = 0x8; // 8키
else if (!(key & 0x8)) digit0 = 0x0C; // C키
}while(1);
}
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692343 | scnaf에 자꾸 선언을 참조하라는데;; (8) | 도래 | 2025-04-22 |
2692282 | 도스상에서 생성된 exe파일에 press~ 뜨게 하기 (4) | 회사원 | 2025-04-21 |
2692256 | scanf("%*c"); ㅠㅠ 고수님들 | 거북이 | 2025-04-21 |
2692230 | 하노이탑 질문입니다. (1) | 미쁘다 | 2025-04-21 |
2692210 | 정보 올림피아드 문제인데.. 풀이 과정이 궁금합니다.(재귀함수) (5) | 물티슈 | 2025-04-20 |
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |
2691697 | if 문에서 구조체 배열에 저장되있던 문자열 검사하는 법 ? (2) | 민트맛사탕 | 2025-04-16 |
2691678 | C언어 함수 질문이요~!!! | 연보라 | 2025-04-15 |
2691650 | 반복문 | 돋가이 | 2025-04-15 |
2691618 | 링크드리스트 개념 질문이예요 (3) | 맨마루 | 2025-04-15 |