BASIC4MCU | 질문게시판 | 답변 : 버튼으로 외부인터럽트 동작구현 도움이 필요해요
페이지 정보
작성자 master 작성일2022-11-23 23:08 조회706회 댓글0건본문
#include <mega128.h>
#include <delay.h>
//
typedef unsigned char u_char;
//
flash char seg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//
u_char c,num=0;
u_char flag4=0,flag5=0,run=0;
//
void Seg5_out(void){
PORTG=8; PORTD=seg[num%10]<<4; PORTB=seg[num%10]&0xF0; delay_ms(10);
PORTG=4; PORTD=seg[num/10]<<4; PORTB=seg[num/10]&0xF0; delay_ms(10);
}
//
interrupt [EXT_INT4] void external_int4(void){ flag4=1; }
interrupt [EXT_INT5] void external_int5(void){ flag5=1; }
interrupt [EXT_INT6] void external_int6(void){ run ^=1; }
//
void main(void){
u_char b,c,num=0;
//
PORTC=0xFF; DDRC=0xFF; // LED를 모두 끄기
DDRE=0x02; // 포트 E 입력 설정
DDRB=0xF0; // 포트 B // 세그먼트 초기값 설정 및 인터럽트 설정
DDRD=0xF0; // 포트 D
DDRG=0x0F; // 포트 G 하위 4비트 출력 설정
//
EICRB=0xAA; EIMSK=0x70; SREG=0x80; // 외부 인터럽트 4,5,6 : 하강에지
while(1){
for(c=0;c<50;c++){ Seg5_out(); }
//
if(flag4){ flag4=0; PORTC>>=2; if(PORTC==0)PORTC=0xFF; }
//
if(flag5){ flag4=0; num+=10; if(num>99)num=99; }
//
if(run){
if(num>0)num--;
}
}
}
댓글 0
조회수 706등록된 댓글이 없습니다.