목차
알고리즘
작품개요
플로어차트
작품사진
소스
작품개요
플로어차트
작품사진
소스
본문내용
에 줄에 벽이 없을 때
led_red_ball[dot_pos+1] = led_red_ball[dot_pos];//공 아래로
led_red_ball[dot_pos] = 0x0000;//전 상태 공(적색 LED) 꺼짐
dot_pos++; //다음 줄
ball_delay = 0;//공 속도 제어변수 0
}else led_red_ball[dot_pos] = led_red_ball[dot_pos];
}
} else if(di_x >= 600){//위로 기울일 때
if(dot_pos==0) led_red_ball[dot_pos] = led_red_ball[dot_pos];//라인 첫 줄
else{
led_blk = (~led_red_ball[dot_pos]) & led_green_map[dot_pos-1];
//윗 줄에 벽이 있는지 검사
if(led_blk == led_green_map[dot_pos-1]){ //윗 줄에 벽이 없을 때
led_red_ball[dot_pos-1] = led_red_ball[dot_pos];//공 위로
led_red_ball[dot_pos] = 0x0000;//전 상태 공(적색 LED) 꺼짐
dot_pos--;//윗 줄
ball_delay = 0;//공 속도 제어변수 0
}else led_red_ball[dot_pos] = led_red_ball[dot_pos];
}
} else led_red_ball[dot_pos] = led_red_ball[dot_pos];
if(di_y <= 400){//왼쪽으로 기울일 때
if(led_red_ball[dot_pos] == 0x8000) led_red_ball[dot_pos] = led_red_ball[dot_pos];
//라인 맨 왼쪽
else {
led_blk = (~led_red_ball[dot_pos]) & (led_green_map[dot_pos]>>1);
//왼쪽에 벽이 있는지 검사
if(led_blk ==(led_green_map[dot_pos]>>1)) {//왼쪽에 벽이 없을 때
led_red_ball[dot_pos] = led_red_ball[dot_pos]<<1;//공 왼쪽으로
ball_delay = 0;//공 속도 제어변수 0
}else led_red_ball[dot_pos] = led_red_ball[dot_pos];
}
} else if(di_y >= 600){//오른쪽으로 기울일 때
if(led_red_ball[dot_pos] == 0x0001) led_red_ball[dot_pos] = led_red_ball[dot_pos];
//라인 맨 오른쪽
else {
led_blk = (~led_red_ball[dot_pos]) & (led_green_map[dot_pos]<<1);
//오른쪽에 벽이 있는지 검사
if(led_blk ==(led_green_map[dot_pos]<<1)) {//오른쪽에 벽이 없을 때
led_red_ball[dot_pos] = led_red_ball[dot_pos]>>1;//공 dhfmsWHr으로
ball_delay = 0;//공 속도 제어변수 0
}else led_red_ball[dot_pos] = led_red_ball[dot_pos];
}
} else led_red_ball[dot_pos] = led_red_ball[dot_pos];
} led_red_ball[dot_pos] = led_red_ball[dot_pos];
}
//--------------미로 게임 종료 설정-------------------------------------------------------
void game_over(void)
{
if(next_stage == stage){//한 스테이지에 머무를 때
if(cnt2 >= 20000) {//20초 경과
led_red[data_count] = led_red_die[data_count];//게임오버 출력 설정
led_green[data_count] = led_green_die[data_count]; //게임오버 출력 설정
if(di_x <= 300) {//아래로 기울일 때
cnt4++;//변환값 튀는 것 방지 위한 카운트 증가
if(cnt4 >= 2000){//변환값 300 이하에서 2초 후
mode = 0;//디지털 시계 모드 설정
cnt2 = 0;//스테이지 시간 클리어
cnt4 = 0;
} else {
mode = mode;
cnt2 = cnt2;
cnt4 = cnt4;
}
} else {
cnt2 = cnt2;
mode = mode;
}
} else {
cnt2++;
mode = mode;
}
} else {
next_stage = stage;//이전 스테이지 입력
cnt2 = 0; //스테이지 시간 클리어
mode = mode;
}
}
void cbi(char bit_n)
{
PORTB = PORTB & (~mask[bit_n]);//포트B 비트 클리어
}
void sbi(char bit_n)
{
PORTB = PORTB | mask[bit_n];//포트B 비트 셋
}
void sbi(char);
//----------- 타이머/카운트0 인터럽트 -------------------------------------------------
interrupt [TIM0_OVF] void time0(void)
{
TCCR0 = 0x04; //CLK/64 prescale
TCNT0 = 0x06; //1msec
//1/16us x 64 x (256 - 6) = 1,000us
if(sw1 == 0){ //sw1 = 0 일 때 시계 동작
if(cnt >= 1000){//1초일 때
cnt = 0;
sec = sec + 1;//sec증가
} else cnt++;
}
if(di_x > 400){ //위로 기울일 때
cursor_count++;
if(cursor_count>100) {//준비화면 설정
cursor_count=0;
if(cursor>=64) cursor=cursor;//준비화면 설정
else cursor++;
}
} else cursor = 0;
display();//도트매트릭스 구현 display 함수 호출
}
.
led_red_ball[dot_pos+1] = led_red_ball[dot_pos];//공 아래로
led_red_ball[dot_pos] = 0x0000;//전 상태 공(적색 LED) 꺼짐
dot_pos++; //다음 줄
ball_delay = 0;//공 속도 제어변수 0
}else led_red_ball[dot_pos] = led_red_ball[dot_pos];
}
} else if(di_x >= 600){//위로 기울일 때
if(dot_pos==0) led_red_ball[dot_pos] = led_red_ball[dot_pos];//라인 첫 줄
else{
led_blk = (~led_red_ball[dot_pos]) & led_green_map[dot_pos-1];
//윗 줄에 벽이 있는지 검사
if(led_blk == led_green_map[dot_pos-1]){ //윗 줄에 벽이 없을 때
led_red_ball[dot_pos-1] = led_red_ball[dot_pos];//공 위로
led_red_ball[dot_pos] = 0x0000;//전 상태 공(적색 LED) 꺼짐
dot_pos--;//윗 줄
ball_delay = 0;//공 속도 제어변수 0
}else led_red_ball[dot_pos] = led_red_ball[dot_pos];
}
} else led_red_ball[dot_pos] = led_red_ball[dot_pos];
if(di_y <= 400){//왼쪽으로 기울일 때
if(led_red_ball[dot_pos] == 0x8000) led_red_ball[dot_pos] = led_red_ball[dot_pos];
//라인 맨 왼쪽
else {
led_blk = (~led_red_ball[dot_pos]) & (led_green_map[dot_pos]>>1);
//왼쪽에 벽이 있는지 검사
if(led_blk ==(led_green_map[dot_pos]>>1)) {//왼쪽에 벽이 없을 때
led_red_ball[dot_pos] = led_red_ball[dot_pos]<<1;//공 왼쪽으로
ball_delay = 0;//공 속도 제어변수 0
}else led_red_ball[dot_pos] = led_red_ball[dot_pos];
}
} else if(di_y >= 600){//오른쪽으로 기울일 때
if(led_red_ball[dot_pos] == 0x0001) led_red_ball[dot_pos] = led_red_ball[dot_pos];
//라인 맨 오른쪽
else {
led_blk = (~led_red_ball[dot_pos]) & (led_green_map[dot_pos]<<1);
//오른쪽에 벽이 있는지 검사
if(led_blk ==(led_green_map[dot_pos]<<1)) {//오른쪽에 벽이 없을 때
led_red_ball[dot_pos] = led_red_ball[dot_pos]>>1;//공 dhfmsWHr으로
ball_delay = 0;//공 속도 제어변수 0
}else led_red_ball[dot_pos] = led_red_ball[dot_pos];
}
} else led_red_ball[dot_pos] = led_red_ball[dot_pos];
} led_red_ball[dot_pos] = led_red_ball[dot_pos];
}
//--------------미로 게임 종료 설정-------------------------------------------------------
void game_over(void)
{
if(next_stage == stage){//한 스테이지에 머무를 때
if(cnt2 >= 20000) {//20초 경과
led_red[data_count] = led_red_die[data_count];//게임오버 출력 설정
led_green[data_count] = led_green_die[data_count]; //게임오버 출력 설정
if(di_x <= 300) {//아래로 기울일 때
cnt4++;//변환값 튀는 것 방지 위한 카운트 증가
if(cnt4 >= 2000){//변환값 300 이하에서 2초 후
mode = 0;//디지털 시계 모드 설정
cnt2 = 0;//스테이지 시간 클리어
cnt4 = 0;
} else {
mode = mode;
cnt2 = cnt2;
cnt4 = cnt4;
}
} else {
cnt2 = cnt2;
mode = mode;
}
} else {
cnt2++;
mode = mode;
}
} else {
next_stage = stage;//이전 스테이지 입력
cnt2 = 0; //스테이지 시간 클리어
mode = mode;
}
}
void cbi(char bit_n)
{
PORTB = PORTB & (~mask[bit_n]);//포트B 비트 클리어
}
void sbi(char bit_n)
{
PORTB = PORTB | mask[bit_n];//포트B 비트 셋
}
void sbi(char);
//----------- 타이머/카운트0 인터럽트 -------------------------------------------------
interrupt [TIM0_OVF] void time0(void)
{
TCCR0 = 0x04; //CLK/64 prescale
TCNT0 = 0x06; //1msec
//1/16us x 64 x (256 - 6) = 1,000us
if(sw1 == 0){ //sw1 = 0 일 때 시계 동작
if(cnt >= 1000){//1초일 때
cnt = 0;
sec = sec + 1;//sec증가
} else cnt++;
}
if(di_x > 400){ //위로 기울일 때
cursor_count++;
if(cursor_count>100) {//준비화면 설정
cursor_count=0;
if(cursor>=64) cursor=cursor;//준비화면 설정
else cursor++;
}
} else cursor = 0;
display();//도트매트릭스 구현 display 함수 호출
}
.
추천자료
[졸업작품]디지털습도계 HS1100 , LCD [ATMEGA88515]
[AVR][졸업작품]디지털가습기 , HS1100 , LCD [ATMEGA8515]
ATmega128 과 PXA255를 이용한 자동온실관리 시스템
ATmega128 을 이용한 교차로 신호등 구현
atmega128을 이용한 디지털시계 구동 소스와 보고서
AVR(Atmega128)의 AD컨버터를 이용한 라인트레이서(대회용)
[전자공학,졸업작품,졸작]atmega128 (AVR), 적외선(포토)센서를 이용한 자동문
전기전자,졸업작품,졸작 atmega, 적외선센서 이용한 자동문
(atmega128) 도트매트릭스를 이용한 팽이게임
소개글