BASIC4MCU | 질문게시판 | atmega128에서 interrupt기능을 이용한 LED켜기
페이지 정보
작성자 혀스석 작성일2020-06-15 15:25 조회6,830회 댓글2건본문
LED 8개를 Port C에 연결하고, switch 8개를 Port D에 연결하라. 먼저 PORTC의 최하위 비트에 연결된 LED를
한 개 켜라. INT0에 연결된 switch를 누르면 LED가 왼쪽으로 한 번 shift 하고, INT1에 연결된 switch를 누르면
LED가 오른쪽으로 한 번 shift 하는 프로그램을 작성하라.
Hint : volatile unsigned char a = 1;
이렇게 주어졌는데 어떻게 작성해야 할까요?
댓글 2
조회수 6,830master님의 댓글
master 작성일
숙제를 대신 해드리진 않습니다.
본인이 할 수 있는데까지 최선을 다해서 작성한 코드를 첨부하세요
혀스석님의 댓글
혀스석
일단 INT0을 누를때마다 왼쪽으로 shift 되는 코드를 작성해 보았는데 INT1을 누를 때 오른쪽으로 가는 코드를 잘 모르겠습니다.
#include <avr/io.h>
#include <avr/interrupt.h>
volatile unsigned char a;
int main(void) {
DDRC = 0xff;
DDRD = 0;
PORTC = 0xff;
EICRA = (1 << ISC01) | (1<<ISC11) ;
EIMSK = (1 << INT0) | (1<<INT1) ;
a = 1;
PORTC = ~a;
sei();
while ( 1 ) ;
}
ISR(INT0_vect) {
a = a << 1;
if ( a== 0 )
a = 1;
PORTC = ~a;
}
ISR(INT1_vect) {