BASIC4MCU | 질문게시판 | ATMEGA128 interrupt 질문드립니다..
페이지 정보
작성자 JOOs 작성일2021-04-16 15:16 조회15,061회 댓글2건본문
사진 첨부하였습니다
LED포트는 A포트, 인터럽트는 포트C의 4번쨰~7번째를 INT4~INT7로 쓴다고 했을때 4번포트를 누르면 켜지고, 5번포트는 꺼지게끔 만들었는데 여기서 6번포트는 짝수나 홀수번째 LED만 켜지게하고,
7번 포트는 0.3초간격으로 led가 켜졌다 껏다 할수있게끔 만들고싶은데... 어떻게하면되나요..?
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
#include <util/delay.h>
#include <avr/interrupt.h>
volatile unsigned char sw = 0;
ISR(INT4_vect)
{
PORTA = 0xFF;
}
ISR(INT5_vect)
{
PORTA = 0x00;
}
ISR(INT6_vect)
{
PORTA = 0xFF;
}
ISR(INT7_vect)
{
PORTA = 0xFF;
}
int main(void)
{
DDRA = 0xFF;
EIMSK = 0x30; //0b00110000
EICRB =0x02; //0b00000010
SREG = 0x80; //0b10000000 //state register
while(1){
; // 무한루프 ,인터럽트 오면 정지 후 위에 ISR부터 수행
}
return 0;
}
댓글 2
조회수 15,061master님의 댓글
master 작성일포트C의 4번쨰~7번째를 INT4~INT7로 쓴다고 했을때 <-- 128은 포트E가 INT4~INT7 입니다.
master님의 댓글
master 작성일
LED포트는 A포트, 인터럽트는 포트C의 4번쨰~7번째를 INT4~INT7로 쓴다고 했을때 4번포트를 누르면 켜지고, 5번포트는 꺼지게끔 만들었는데 여기서 6번포트는 짝수나 홀수번째 LED만 켜지게하고,
7번 포트는 0.3초간격으로 led가 켜졌다 껏다 할수있게끔 만들고싶은데... 어떻게하면되나요..?
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
//
volatile char mode=1;
//
ISR(INT4_vect){ PORTA=0xFF; mode=0; }
ISR(INT5_vect){ PORTA=0x00; mode=1; }
ISR(INT6_vect){ PORTA=0xFF; mode=2; }
ISR(INT7_vect){ PORTA=0xFF; mode=3; }
//
int main(void){
DDRA=0xFF;
EIMSK=0xF0; EICRB=0xAA; SREG=0x80;
while(1){
if(mode==0){ PORTA=0xFF; }
if(mode==1){ PORTA=0x00; }
if(mode==2){ PORTA=0xAA; }
if(mode==3){ PORTA=0xFF; _delay_ms(300); PORTA=0; _delay_ms(300); }
}
return 0;
}