소스는 이러합니다 avr소스로 바꿀수 있을까요? 고수님들 부탁 드립니다.
#include "mega128.h"
unsigned char result=0xFF;
void m_delay(unsigned int m)
{
unsigned int i, j;
for(i=0;i<m;i++)
for(j=0;j<215;j++);
}
void main(void)
{
DDRB=0xFF;
PORTB=0xFF;
DDRF |=0xFD;
ADMUX=0x21;
ADCSRA=0xA7;
ADCSRA |= 0x08;
ADCSRA |= 0x40;
#asm("sei")
while(1)
if(result>0x80)
PORTB=0x00;
else
PORTB=0xFF
}
interrupt[ADC_INT]void adc(void)
{
#asm(cli")
result=ADCL;
result=ADCH;
#asm("sei")
짧은 식자입니다만, 최상위의 헤더만 WINAVR 전용으로 바꾸시면 될 것 같네요.
mega128은
c:\winavr\@#$\include\io.h
던가.. 중간의 경로는 정확히 기억을 못 하겠네요. 여튼, winavr이 당연히 깔려 있을터이니
그 하위 디렉토리 중에서 헤더파일이 있는 곳을 윈도탐색기로 찾으셔서 헤더파일이 모인
폴더를 찾아 보세요.
io.h가 기본적인 AVR 입출력 헤더이구요. 그걸 인클루드 시키면 DDR이나 PORT 사용 가능
할 겁니다. 그 밖에 사용하신 명령은 딜레이 함수네요. IO.H가 있는 폴더 내에 딜레이가 있으
면 그 자리에
#INCLUDE <C드라이브에서부터 DELAY.H파일이 있는 위치까지 전부 입력> <- 절대경로
이런 식으로 적으시면 되구요. 만약 'INCLUDE 폴더'의 하위 폴더에 딜레이 헤더가 있다면
#INCLUDE <헤더가 모인 폴더 위치까지는 프로그램이 자동으로 입력시켜줌. 고로 헤더파일명만 적음 됨.> <- 상대경로
로 적으면 됩니다.
즉슨 이런 의미입니다.
시간지연 함수를 쓰고 싶다면, 직접 시간지연 함수를 짜시던가 그 함수를 쓸 수 있게 지원하는 헤더
파일을 눈치 또는 책에서 보고 헤더파일을 인클루드 명령으로 포함 시키시면 됩니다. 인클루드를 사
용한 후 "헤더파일명" 또는 <헤더파일명>으로 적으세요.
이왕이면 딜레이 해더를 열어서 내부를 살피면 사용하기 더욱 쉬울 겁니다.
아, 제가 착각을 했네요. 딜레이는
VOID M_DELAY{
@#$@!4
}
라고 직접 만들었네요. 그냥 코드비전에서 지원하는 기본 입출력 헤더인 MEGA128.H를
WINAVR이 지원하는 헤더인 IO.H로 교체하면 됩니다.
만약 코드비전이 깔린 컴퓨터에서 AVR STUDIO를 깔았다면 코드비전의 MEGA128.H를 찾아서
경로를 입력하여 인클루드 시키시던가 MEGA128.H를 복사하여 원하는 경로에 놓은 후 그쪽 경
로명을 인클루드 시키시면 됩니다.
#include <avr/io.h> <- 코드비전에서의 MEGA128.H와 같은 역할을 합니다.
#include <avr/delay.h> <- 딜레이 함수를 만약 사용한다면 적으세요.
#include <avr/interrupt.h> <- 인터럽트 사용한다면 붙이세요.
위에 적은 글이 두서가 없는데, 다 무시하고 요렇게 세개를 헤더로 붙이면 끝나겠네요.
괜히 더 복잡하게 적은 것 같은데 이건 기분 탓이겠지요.