BASIC4MCU | 질문게시판 | winAVR 소스 질문
페이지 정보
작성자 master 작성일2019-12-24 16:37 조회3,879회 댓글0건본문
Q)
고수님 해석좀 부탁드립니다,,,쉽게 어려운말 많이 쓰시지말고,,해석좀 부탁드려용,ㅠ
이 소스를 넣으면 동작이 어떻게 되는지도 좀 알려주세요 avr 실험 기구가 없어서요,,ㅠ
소스 바꾸지마시고 그대로 해석좀 부탁드려요,,,응용해서 할만큼 실력이 없어요 책보고 공부해야되는데,..ㅠ
#include<avr/io.h>
#include<avr/interrupt.h>
#include<util/delay.h>
unsigned char Time_STOP = 0;
SIGNAL(SIG_INTERRUPT0);
int main(){
unsigned char LED_Data = 0x01;
DDRD = 0xFE;
DDRE = 0xFF;
EICRA = 0x0F;
EICRB = 0x00;
EIMSK = 0x01;
EIFR = 0x01;
sei();
while(1){
PORTE = LED_Data;
if(Time_STOP == 0) {
if(LED_Data == 0x80) LED_Data = 0x01;
else LED_Data <<= 1;
}
else
{
if(LED_Data == 0x01) LED_Data = 0x80;
else LED_Data >>= 1;
}
_delay_ms(100);
}
return 0;
}
SIGNAL(SIG_INTERRUPT0){
cli();
if(Time_STOP == 0)
Time_STOP = 1;
else
Time_STOP = 0;
sei();
//
A)
http://cafe.naver.com/circuitsmanual/1748 - 2진 16진
http://cafe.naver.com/circuitsmanual/684 - C 연산자
http://cafe.naver.com/circuitsmanual/354 - 포트입출력
http://cafe.naver.com/circuitsmanual/4618 - 포트입출력
http://cafe.naver.com/circuitsmanual/7095 - 조건식
http://cafe.naver.com/circuitsmanual/10425 - 비트마스크
http://cafe.naver.com/circuitsmanual/1739 - 비트연산
이 정도는 기본적으로 알아야 할 내용입니다.
원래가 어려운 전공이라서 쉽게 주석 달 수 없습니다.
모르는 것 나올 때마다 주석 달아 달라고 할건가요?
위 내용 보면 거의 해소 될겁니다.
윗 글 보고도 이해 안가면
아래 카페에 모르는 문장 하나씩만 질문 하시기 바랍니다.
먼저 글에서 원 소스를 고친 부분 몇가지 알려 드리죠
volatile char Time_STOP = 0; // 시프트 방향에 사용 되는 변수
인터럽트에서 사용 되는 전역 변수는 AVRstudio는 volatile 처리 해야 합니다.
volatile 안할 시에는 인터럽트에서 값을 바꿔도 적용 되지 않는 일이 발생 합니다.
int는 unsigned int와 동일 합니다.
char는 unsigned char와 동일 합니다.
메인() 아래에 있는 함수를 메인() 위로 올리면 함수 원형을 선언 하지 않아도 됩니다.
EICRB=0x00; 는 외부 인터럽트0 과 무관 하므로 사용 하지 않아도 되며
리셋 후 EICRB 값은 0이므로 코드에서 또 한번 적을 필요 없습니다.
16진 0x00은 10진으로도 0이고 2진으로도 0b0입니다.
16진 0x01은 10진으로도 1이고 2진으로도 0b1입니다.
그거 말고는 별로 바꾼건 없는 것 같군요
AVRStudio에서 시뮬레이션이 되므로 디버깅 모드로 보드 없이 시뮬레이션을 해 볼 수 있습니다.
이해 하기 어려운 전공이므로
가급적 값이 싼 128 모듈을 하나 구입 하세요
128A 로 만든 모듈은 14000원 하는 것 같더군요
댓글 0
조회수 3,879등록된 댓글이 없습니다.