BASIC4MCU | 질문게시판 | codevision atmega128 endif 오류
페이지 정보
작성자 안탕준 작성일2022-12-01 15:56 조회308회 댓글0건본문
#include <mega128.h>
#include <stdio.h>
#include <delay.h>
#include <stdlib.h>
#include <alcd.h>
unsigned char key; //스위치
unsigned char shif1=15; //화살표이동 좌우 //똥1
unsigned char shif2=0; //세로
unsigned char shif3=15; //똥2
unsigned char shif4=0;
unsigned char shif5=15; //똥3
unsigned char shif6=0;
unsigned char led=0x07; //led 에너지 게이지
unsigned char life=3; //생명
unsigned char add=0; //똥2 추가
unsigned char add1=0; //똥3 추가
unsigned char ture=0; //초기시작
unsigned char time[16]; //타이머 기능
unsigned char se=0; //초
unsigned char mi=0; //분
unsigned char del=500; //속도 증가 감소.
typedef unsigned char byte;
byte font0[8]={0x11,0x11,0x0a,0x11,0x04,0x0e,0x1f,0x1f};//똥 1
byte font1[8]={0x11,0x11,0x0a,0x11,0x04,0x0e,0x1f,0x1f};//똥 2
byte font2[8]={0x11,0x11,0x0a,0x11,0x04,0x0e,0x1f,0x1f};//똥 3
byte font3[8]={0x06,0x06,0x04,0x0F,0x14,0x04,0x0a,0x12};//사람
void define_char(byte *pc,byte char_code)
{
byte i,a;
a=(char_code<<3)|0x40;
for(i=0;i<8;i++)lcd_write_byte(a++,*pc++);
}
interrupt [EXT_INT0] void ext_int0_isr(void)
{
key=1;
}
interrupt [EXT_INT1] void ext_int1_isr(void)
{
key=2;
}
interrupt [EXT_INT2] void ext_int2_isr(void)
{
key=3;
}
void main(void)
{
DDRA=0x07;
// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=0 Bit1=0 Bit0=0
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Falling Edge
// INT1: On
// INT1 Mode: Falling Edge
// INT2: On
// INT2:Mode: Falling Edge
EICRA=0x2A;
EICRB=0x00;
EIMSK=0x07;
EIFR=0x07;
lcd_init(16);
PORTA=led; //초기값 led
lcd_gotoxy(0,0); //캐릭터 초기화
lcd_putchar(3); //캐릭터 초기화
lcd_clear();
define_char(font0,0); //똥
define_char(font1,1); //똥2
define_char(font2,2); //똥3
define_char(font3,3); // 사람
shif6=rand()%((1-0)+1)+0;
shif4=rand()%((1-0)+1)+0;
shif2=rand()%((1-0)+1)+0;
#asm("sei")
//shif1=15 좌우
while(1)
{
lcd_gotoxy(2,0);
lcd_putsf("start game?");
lcd_gotoxy(0,1);
lcd_putsf("push the botton"); //맨 처음 초기상태
if(key==1) //key 1을 누르면 게임이 시작
{ ture=1;
while (ture) //shif2 라인.
{
se++;
if(se==60)
{se=0;mi++;}
PORTA=led;
if(shif1==0) //똥1 이동이 왼쪽으로 끝까지
{ //갔을 때 초기화
shif2=rand()%((1-0)+1)+0;
shif1=15;
}
if(shif3==0) //똥2 이동이 왼쪽으로 끝까지
{
shif4=rand()%((1-0)+1)+0;
shif3=15;
}
if(shif5==0) //똥3 이동이 왼쪽으로 끝까지
{
shif6=rand()%((1-0)+1)+0;
shif5=15;
}
if(key==2) //스위치 두번쨰를 눌럿을때.
{
lcd_gotoxy(0,0); //1번 라인 이동
lcd_putchar(3);
if(shif1==1&&shif2==0) //캐릭터와 똥1이 충돌 일으킬 경우 shif1 1,shif2=0 일떄 충돌.
{
led=led>>1; //led 감소
PORTA=led;
life--; //생명 감소
}
if(shif3==1&&shif4==0) //똥2 와 캐릭터 충돌
{ //shif1 좌우
led=led>>1; //led 감소 //shif2 위아래.
PORTA=led;
life--; //생명 감소
}
if(shif5==1&&shif6==0) //똥 3 과 캐릭터 충돌
{
led=led>>1; //led 감소
PORTA=led;
life--; //생명 감소
}
}
if(key==3) //스위치 3번째것을 눌렀을 때.
{
lcd_gotoxy(0,1); //2번째 라인 이동
lcd_putchar(3); //사람
if(shif1==1&&shif2==1) //똥1과 캐릭터가 충돌했을경우.
//shif1 1,shif2=1
{
led=led>>1; //led 감소
PORTA=led;
life--; //생명 감소
}
if(shif3==1&&shif4==1) //똥2과 캐릭터가 충돌했을경우.
{
led=led>>1; //led 감소
PORTA=led;
life--; //생명 감소
}
if(shif5==1&&shif6==1) //똥3과 캐릭터가 충돌했을경우.
{
led=led>>1; //led 감소
PORTA=led;
life--; //생명 감소
}
}
if(life==0) //생명이 0일때.
{
lcd_gotoxy(0,0);
lcd_putsf(" Game Over !!"); //게임 끝 표시
lcd_gotoxy(0,1);
lcd_putsf(" One more time? ");
led=0x07; //led 초기화
delay_ms(3000);
lcd_clear();
life=3; //생명 초기화
lcd_gotoxy(3,0);
lcd_putsf("play time");
lcd_gotoxy(3,1);
sprintf(time," %i : %i ",mi,se); //타이머로 플레이 시간을 나타냄
lcd_puts(time);
delay_ms(3000);
mi=0;se=0;
ture=0; //while 문 빠저나와서 맨처음 초기상태로 돌아감
}
shif1--; //왼쪽으로 한칸씩 이동.
lcd_gotoxy(shif1,shif2); //x=15,y=0;
lcd_putchar(0); //똥1
if(shif1==10) add=1; //똥2를 나타내기 위한 변수
if(add==1)
{
lcd_gotoxy(shif3,shif4); //x=15,y=0;
lcd_putchar(1); //똥2
shif3--;
if(shif3==9) //똥 2번째가 왼쪽 9번째일때 추가
{
add1=1;
}
if(add1==1)
{
lcd_gotoxy(shif5,shif6); //x=15,y=0;
lcd_putchar(2); //똥3
shif5--;
if(shif3==0)add=0; //똥2가 좌표 0일떄
if(shif5==0)add1=0; //똥3가 좌표 0일떄
}
delay_ms(del); //3ms 마다 한칸씩 이동
lcd_clear();
del=del-2; //시간이 갈수록 빨라짐
if(del<70) // 70보다 작을 때 다시 500ms로 초기화
{del=500;}
}
}
}
}
}
이와 같은 코드이며 아무리 찾아봐도 '}' 안 닫은 부분이 없는 거 같은데 endif오류가 계속 됩니다
댓글 0
조회수 308등록된 댓글이 없습니다.