BASIC4MCU | 질문게시판 | ATmega128 avr 질문입니다!!!!!
페이지 정보
작성자 melona 작성일2020-10-05 00:30 조회5,190회 댓글1건본문
'SW1을 누를 때마다 7-segment LED에 표시되는 10진수가 1씩 증가하고 SW2를누르면 그 순간부터 1초마다 1씩 감소하고 0이되는 순간 감소가 중단되고 buzzer가 1초씩세 번 울리는 타이머기능의 프로그램을 작성하고, SW1는 타이머의 시간설정기능으로 하며, SW2는 타이머의 동작을 시작하게 하는 기능을 수행한 후에 실험키트에 전원을 공급한직후에는 7-segment LED에 0이 표시되도록 한다. 단, switch의 입력을 외부 인터럽트 방식을 사용한다.' 이런 문제에 대해서 코딩을 짜봤습니다....#include <avr/io.h>#include <avr/interrupt.h>#define FND0 0x88#define FND1 0xBE#define FND2 0xC4#define FND3 0xA4#define FND4 0xB2#define FND5 0xA1#define FND6 0x83#define FND7 0xBC#define FND8 0x80#define FND9 0xB0volatile unsigned long timer0;volatile unsigned int i=0;unsigned char FND[10]={FND0, FND1, FND2, FND3, FND4, FND5, FND6, FND7, FND8, FND9};ISR(TIMER0_OVF_vect){timer0++;//오버플로우마다 1씩 증가if(timer0 % 250 == 0)//250회의 오버플로우 발생 시 마다 = 1초{i = i % 10;//10으로 나눈 나머지가 i에 들어감PORTC = FND[i];i=i+1;}}int main(void){DDRC = 0xFF;//7-Segment 출력 핀으로 설정DDRA = 0xFF; // port A를 출력 port로 설정.PORTA = 0x00; // PORTA에 0xFF값을 출력시킴. 모든 LED를 OFF시킴.TCCR0 |= 1<<CS02 | 1<<CS01;\TIMSK |= 1<<TOIE0;\sei();while(1);return 0;}어느 부분에서 수정해 줘야 나올까요?? 그걸 모르겠습니다....
댓글 1
조회수 5,190master님의 댓글
master 작성일
SW1을 누를 때마다 7-segment LED에 표시되는 10진수가 1씩 증가하고, 9에서 중단
SW2를 누르면 그 순간부터 1초마다 1씩 감소하고 0이되는 순간 감소가 중단되고
buzzer가 1초씩 세 번 울리는 타이머기능의 프로그램을 작성하고,
SW1는 타이머의 시간설정기능으로 하며,
SW2는 타이머의 동작을 시작하게 하는 기능을 수행한 후에
실험키트에 전원을 공급한직후에는 7-segment LED에 0이 표시되도록 한다.
단, switch의 입력을 외부 인터럽트 방식을 사용한다.' 이런 문제에 대해서 코딩을 짜봤습니다....
#include <avr/io.h>
#include <avr/interrupt.h>
//
#define FND0 0x88
#define FND1 0xBE
#define FND2 0xC4
#define FND3 0xA4
#define FND4 0xB2
#define FND5 0xA1
#define FND6 0x83
#define FND7 0xBC
#define FND8 0x80
#define FND9 0xB0
//
volatile unsigned char FND[10]={FND0, FND1, FND2, FND3, FND4, FND5, FND6, FND7, FND8, FND9};
volatile unsigned char i=0,timer0=0;
//
ISR(TIMER0_OVF_vect){
if(++timer0>=250){ timer0=0; //250회의 오버플로우 발생 시 마다=1초
i=i%10; //10으로 나눈 나머지가 i에 들어감
PORTC=FND[i];
i=i+1;
}
}
//
int main(void){
DDRC=0xFF; //7-Segment 출력 핀으로 설정
DDRA=0xFF; // port A를 출력 port로 설정.
PORTA=0x00; // PORTA에 0xFF값을 출력시킴. 모든 LED를 OFF시킴.
TCCR0=1<<CS02|1<<CS01;
TIMSK=1<<TOIE0;
sei();
while(1);
return 0;
}
스위치1과 스위치2는 윗쪽과 아랫쪽의 기능이 다릅니다.
무엇을 하려는지 모르겠군요
외부 인터럽트에 관한 코드는 없습니다.