BASIC4MCU | 질문게시판 | ATmeag128 소스가 SREG인식을 못합니다
페이지 정보
작성자 ToLi 작성일2020-06-05 12:03 조회5,859회 댓글3건본문
#include <avr/io.h>
#include <avr/interrupt.h>
int main(void)
{
/* Replace with your application code */
// 4자리 7 세그먼트 LED 동적구동
DDRD=0xFF; //D포트 전체 출력설정
DDRG|=0x1F; //G포트 하위 5비트 출력설정
PORTG&=0xE0; // G포트 모든 Digit Disabled
//Key
DDRC|=1<<0;
PORTC&=~(1<<0);
//Key input pin setting
DDRC&=~(1<<4);
PORTC|=1<<4;
DDRC&=~(1<<6);
PORTC|=1<<6;
//TIMER
TCCR0=0x0C;
OCR0=250;
intCount=0;
TIMSK|=1<<1;
SREG|=1<<7;
int Temp=0;
Convert4DigitNumber2SegmentData(Temp);
이런식으로 타이머 인터럽트 사용해서 버튼 누를떄마다 동적구동중인 7세그먼트의 숫자가 1증가시키는 코드인데요(일부분만 가져옴)
SREG를 인식하지 못합니다 unregonized symbol이라고 나와요.
interrupt.h에 SREG를 읽는게 포함된거 아니었나요?
뭐가 문제일까요?
댓글 3
조회수 5,859master님의 댓글
master 작성일
int main(){
intCount=0;
로컬변수 선언은 함수 시작부분에서 하는 습관을 가지세요
//-------------------------
#include <avr/io.h>
#include <avr/interrupt.h>
int main(void){
SREG|=1<<7;
while(1);
}
테스트는 가장 간단한 코드로 하세요
윗쪽에서 문법적인 오류가 있는 경우 해당라인이 아닌 아랫쪽에서 오류가 발생하기도 합니다.
흔한 경우가 세미콜론이 빠져있는 경우이죠
따라서 오류가 발생하면 해당라인 외에 윗쪽라인도 체크해야 합니다.
ToLi님의 댓글
ToLi 작성일@master 다른 오브젝트 생성해서 SREG 해봤는데 인식 자체를 못하더라고요.. 그래서 common.h 사용했는데 인식하고 프로그램 구동합니다. 원래 common.h가 있어야 SREG를 인식하나요?
master님의 댓글
master
컴파일러 버전 차이에 따른 문제가 아닐까 싶습니다.
AVRstudio4에서는 질문의 문제가 발생하지 않습니다.