BASIC4MCU | 질문게시판 | AVR하고 있는데 에러 좀 잡아주세요ㅜㅜ 도저히 모르겠어요..
페이지 정보
작성자 lee019427 작성일2019-11-13 21:26 조회3,388회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=10709
본문
에러: File Linerecipe for target 'main.o' failed makefile 76'EXT_INT6' undeclared here (not in a function) main.c 187expected '=', ',', ',', 'asm' or '_attribute_'before 'void' main.c 187'TIM0_OVF' undeclared here (not in a function) main.c 284expected '=', ',', ',', 'asm' or '_attribute_'before 'void' main.c 284'EXT_INT4' undeclared here (not in a function) main.c 772expected '=', ',', ',', 'asm' or '_attribute_'before 'void' main.c 772'TIM1_OVF' undeclared here (not in a function) main.c 1097expected '=', ',', ',', 'asm' or '_attribute_'before 'void' main.c 1097#include <avr/io.h>#include <avr/delay.h>#include <stdlib.h>#include <stdio.h>#define RED_ON PORTA.0=1;#define RED_OFF PORTA.0=0;#define GREEN_ON PORTA.1=1;#define GREEN_OFF PORTA.1=0;#define ENABLE_ON PORTA.2=1;#define ENABLE_OFF PORTA.2=0;#define LATCH_ON PORTA.3=1;#define LATCH_OFF PORTA.3=0;#define CLOCK_ON PORTA.4=1;#define CLOCK_OFF PORTA.4=0;#define A3 PORTC.7;#define A2 PORTC.6;#define A1 PORTC.5;#define A0 PORTC.4;#define FUNCSET 0x28#define ENTMODE 0x06#define ALLCLR 0x01#define DISPON 0x0c#define HOME 0x02#define LINE2 0xC0#define DISPOFF 0x08unsigned long FONT_O1[]={0xBA4C,0xAF10,0xBA1C,0xA204,0xFB18,0x0000,0x3BFA,0x4B6F,0x3F6A,0x1B6A,0x6BFB,0x0757,0x0555,0x0755,0x0155,0x0775 }; //Let's shoot gununsigned long FONT_O2[]={0x0000,0x8EE8,0x8840,0x8840,0x8840,0x8840,0x8847,0x8E48,0x8844,0x8842,0x8841,0x8841,0x8842,0xEE4C,0x0000,0x0000}; ///LET'sunsigned long FONT_O3[]={0x0000,0x6A67,0x8A92,0x8A92,0x8A92,0x8A92,0x4A92,0x2E92,0x2A92,0x2A92,0x2A92,0x2A92,0x2A92,0xC962,0x0000,0x0000}; //SHOTunsigned long FONT_O4[]={0x0000,0x722F,0x8229,0x8229,0x8229,0x8229,0x8229,0xBA29,0x9229,0x9229,0x9229,0x9229,0x71C9,0x0000,0x0000,0x0000}; //GUNunsigned long FONT_O5[]={0x8001,0x5FFA,0x300C,0x2004,0x2C34,0x2C34,0x2004,0x2184,0x2184,0x2004,0x1008,0x2FF4,0x4A52,0x8A51,0x0A50,0x0FF0}; //해골unsigned long FONT_O6[]={0x6257,0x8575,0x8557,0xF754,0xA554,0x6557,0x0000,0x0000,0x6577,0x9555,0x9575,0x9547,0x9546,0x9545,0x6275,0x0000};unsigned long pt[]={0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0100,0x0000,0x0000,0x00000,0x00000,0x0000,0x0000,0x0000,0x0000}; //조준점unsigned long enemy[]={0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0100,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000};unsigned long enemy1[]={0x1000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000};unsigned long rdd[] ={0x0040,0x4000,0x2000,0x1000,0x0800,0x0400,0x0200,0x0100,0x0080,0x0040,0x0020,0x0010,0x0008,0x0004,0x0002,0x0100};unsigned long rdd1[] ={0x0040,0x4000,0x2000,0x1000,0x0800,0x0400,0x0200,0x0100,0x0080,0x0040,0x0020,0x0010,0x0008,0x0004,0x0002,0x0100};unsigned long font ; //폰트 저장unsigned char sel,sel1,N,a,b,c,d,kill,ol_kill,ol_life,cnt;unsigned char life = 5;unsigned char addr1 = 0;unsigned char pos_y=7, pos_x=7;unsigned char pos1_y=7,pos1_x=7;unsigned char pos2_y,pos2_x;unsigned int p,rd,rd1,pp;unsigned char ene1,ene2;unsigned int ad_val1,ad_val2; // AD 변환값.void control(void);void enemy_screen(void);void enemy_screen2(void);void LCD_init(void);void LCD_String(char *) ;void Busy(void);void Command(unsigned char);void Data(unsigned char);void LCD_screen1(void);void main(void){DDRA = 0xFF; //A포트 출력 // dot matrix 제어DDRC = 0xFF; //C포트 출력 // dot matrix 주소DDRF = 0x00; //F포트 입력 ADCDDRB = 0xFF; //B포트 출력 / LCDPORTB &=0xFB;PORTA = 0x00; //폰트 출력 및 인에이블 offEIMSK = 0b01110000; // 인트럽트 ,6 ,5,4, 인에이블 6--시작 스위치 5 -숨기 스위치 4 - 발사 스위치EICRB = 0b00101010; // 인트럽트 4 5 6 하강에지에서 동작// 타이머 선언 타이머0 도트 출력 , 타이머1 적 출현 , 타이머 3 적이 공격.TIMSK = 0b00000101;ETIMSK = 0b00000000;TCCR0 = 0b00000111;TCNT0 = 0xFF;TCCR1A = 0b00000000;TCCR1B = 0b00000101;TCCR1C = 0x00;TCNT1 = 0xD000;TCCR3A = 0b00000000;TCCR3B = 0b00000101;TCCR3C = 0x00;TCNT3H = 0xD0;TCNT3L = 0x00;ADMUX = 0b11000000; //단극성 입력LCD_init();SREG = 0x80;LCD_screen1();while(1){if(sel==0) {life=5;kill=0;}ADMUX = 0b11000000;ADCSRA = 0b11100111;delay_us(250);ad_val1 = ADCW;ADMUX = 0b1100000001;delay_us(250);ad_val2 = ADCW;if(ol_kill != kill) LCD_screen1();if(ol_life !=life) LCD_screen1();ol_kill=kill;ol_life=life;control();enemy_screen();enemy_screen2();if(life==255||life==254){delay_us(10);LCD_screen1();sel=0;sel1=3;}if(kill<10)rd=rand()%16; // random 함수if(kill>=10){ rd =rand()%16;rd1=(rand()+108)%16;}}}interrupt [EXT_INT6] void start_sw6(void){sel = (sel+1)%2;if(sel==0){}}// 상,하,좌,우 컨트롤 (가속도 센서)void control (void){if(sel==1){ad_val2 = ad_val2&0b1111111111;if((ad_val2&0b1111111111) <610 ) //610 0b1001100010{a++;if(a==100){a=0;pt[pos_y]= pt[pos_y]>>1;if(pos_x==15){pt[pos_y]=0x0001;}else pos_x++;delay_ms(2);if((pt[pos_y]&0xFFFF)==0x0000) pt[pos_y]=0x8000;}}else if((ad_val2&0b1111111111)>780) //0b1010111100{b++;if(b==100){b=0;pt[pos_y]=pt[pos_y]<<1;if(pos_x==0)pt[pos_y]=0x8000;else pos_x--;delay_ms(2);if((pt[pos_y]&0xFFFF)== 0x0000) pt[pos_y]=0x0001;}}if(ad_val1 < 635) {c++;if(c==100){c=0;if(pos_y==15){pos_y=15;pt[15]=pt[15];}else{pt[pos_y+1]=pt[pos_y];pt[pos_y]=0;pos_y++;}}}if(ad_val1 > 730) {d++;if(d==100){d=0;if(pos_y==0){pos_y=0;pt[0]=pt[0];}else{pt[pos_y-1]=pt[pos_y];pt[pos_y]=0;pos_y--;}}}}else if(sel==0) pt[pos_y]=0x0100;}interrupt [TIM0_OVF] void timer1(void){unsigned char k;unsigned int tt,ee,j,cc;TCNT0=0xEB;if(sel==1){addr1= (addr1+1)%16;if(sel1==0){font = pt[addr1]|enemy[addr1];if(kill>=10){font = pt[addr1]|enemy[addr1]|enemy1[addr1];if(ene1==0&&ene2==1){font =pt[addr1]|enemy[addr1];}else if(ene1==1&&ene2==0){font =pt[addr1]|enemy1[addr1];}else if(ene1==1&&ene2==1){font = pt[addr1]|enemy[addr1]|enemy1[addr1];ene1=0;ene2=0;cnt=0;}}ee= enemy[addr1];cc= enemy1[addr1];tt= pt[addr1];}if((sel1==1)|(sel1==2)|sel1==3){for(j=0;j<7000;j++){addr1= (addr1+1)%16;if(sel1==1){cnt=0;font= FONT_O3[addr1];}else if(sel1==2) font= FONT_O5[addr1];for(k=0;k<16;k++){if(font&0x8000){if(sel1==1)GREEN_ON;else if(sel1==2)RED_ON;}else {GREEN_OFF;RED_OFF;}CLOCK_ON;delay_us(1);CLOCK_OFF;delay_us(1);font = font<<1;}PORTA= (PORTA&0x0B); //0b0000 1001;PORTC=addr1<<4;ENABLE_ON;LATCH_OFF;LATCH_ON;ENABLE_OFF;rd=rand()%16;}sel1=0;}if(sel1==0){for(k=0;k<16;k++){if(font&0x8000){if(tt&0x8000){GREEN_ON;}else GREEN_OFF;if(ee&0x8000){RED_ON;}if(cc&0x8000){RED_ON;}}else {GREEN_OFF;RED_OFF;}CLOCK_ON;delay_us(1);CLOCK_OFF;delay_us(1);font = font<<1;tt=tt<<1;ee=ee<<1;cc=cc<<1;}PORTA= (PORTA&0x0B); //0b0000 1001;PORTC=addr1<<4;ENABLE_ON;LATCH_OFF;LATCH_ON;ENABLE_OFF;}}else{for(j=0;j<10000;j++){addr1= (addr1+1)%16;if(N==0)font=FONT_O1[addr1];else if(N==1)font = FONT_O2[addr1];else if(N==2)font = FONT_O3[addr1];else font= FONT_O4[addr1];if(sel1==3){font = FONT_O6[addr1];N=((N+1)%2)+1;}for(k=0;k<16;k++){ //총 16개 LED 쉬프트(각행마다)if(font&0x8000){RED_ON;if(N==2){GREEN_ON;RED_OFF;}if(N==0){if(5<addr1 && addr1<11){RED_OFF;GREEN_ON;}}}else {RED_OFF;GREEN_OFF;}CLOCK_ON;CLOCK_OFF;font=font<<1; // 다음값을 위해 왼쪽으로 쉬프트.}PORTA= (PORTA&0x0B); //0b0000 1001;PORTC=addr1<<4;ENABLE_ON;LATCH_OFF;LATCH_ON;ENABLE_OFF;}if(sel==0)N=(N+1)%4;}}// 랜덤 적 출현void enemy_screen(void){if(sel==1){p=rdd[pos1_x] ;if(p&0x4000){p=p&0x4000;enemy[pos1_y]= p;enemy[pos1_y+1]= 0xE000;enemy[pos1_y+2]= 0x4000;enemy[pos1_y+3]= 0xA000;}else if(p&0x2000){p=p&0x2000;enemy[pos1_y]= p;enemy[pos1_y+1]= 0x7000;enemy[pos1_y+2]= 0x2000;enemy[pos1_y+3]= 0x5000;}else if(p&0x1000){p=p&0x1000;enemy[pos1_y]= p;enemy[pos1_y+1]= 0x3800;enemy[pos1_y+2]= 0x1000;enemy[pos1_y+3]= 0x2800;}else if(p&0x0800){p=p&0x0800;enemy[pos1_y]= p;enemy[pos1_y+1]= 0x1C00;enemy[pos1_y+2]= 0x0800;enemy[pos1_y+3]= 0x1400;}else if(p&0x0400){p=p&0x0400;enemy[pos1_y]= p;enemy[pos1_y+1]= 0x0E00;enemy[pos1_y+2]= 0x0400;enemy[pos1_y+3]= 0x0A00;}else if(p&0x0200){p=p&0x0200;enemy[pos1_y]= p;enemy[pos1_y+1]= 0x0700;enemy[pos1_y+2]= 0x0200;enemy[pos1_y+3]= 0x0500;}else if(p&0x0100){p=p&0x0100;enemy[pos1_y]= p;enemy[pos1_y+1]= 0x0380;enemy[pos1_y+2]= 0x0100;enemy[pos1_y+3]= 0x0280;}else if(p&0x0080){p=p&0x0080;enemy[pos1_y]= p;enemy[pos1_y+1]= 0x01C0;enemy[pos1_y+2]= 0x0080;enemy[pos1_y+3]= 0x0140;}else if(p&0x0040){p=p&0x0040;enemy[pos1_y]= p;enemy[pos1_y+1]= 0x00E0;enemy[pos1_y+2]= 0x0040;enemy[pos1_y+3]= 0x00A0;}else if(p&0x0020){p=p&0x0020;enemy[pos1_y]= p;enemy[pos1_y+1]= 0x0070;enemy[pos1_y+2]= 0x0020;enemy[pos1_y+3]= 0x0050;}else if(p&0x0010){p=p&0x0010;enemy[pos1_y]= p;enemy[pos1_y+1]= 0x0038;enemy[pos1_y+2]= 0x0010;enemy[pos1_y+3]= 0x0028;}else if(p&0x0008){p=p&0x0008;enemy[pos1_y]= p;enemy[pos1_y+1]= 0x001C;enemy[pos1_y+2]= 0x0008;enemy[pos1_y+3]= 0x0014;}else if(p&0x0004){p=p&0x0004;enemy[pos1_y]= p;enemy[pos1_y+1]= 0x000E;enemy[pos1_y+2]= 0x0004;enemy[pos1_y+3]= 0x000A;}else if(p&0x0002){p=p&0x0002;enemy[pos1_y]= p;enemy[pos1_y+1]= 0x0007;enemy[pos1_y+2]= 0x0002;enemy[pos1_y+3]= 0x0005;}}}// 랜덤 적 출현void enemy_screen2(void){if(sel==1){pp=rdd1[pos2_x] ;if(pp&0x4000){pp=pp&0x4000;enemy1[pos2_y]= pp;enemy1[pos2_y+1]= 0xE000;enemy1[pos2_y+2]= 0x4000;enemy1[pos2_y+3]= 0xA000;}else if(pp&0x2000){pp=pp&0x2000;enemy1[pos2_y]= pp;enemy1[pos2_y+1]= 0x7000;enemy1[pos2_y+2]= 0x2000;enemy1[pos2_y+3]= 0x5000;}else if(pp&0x1000){pp=pp&0x1000;enemy1[pos2_y]= pp;enemy1[pos2_y+1]= 0x3800;enemy1[pos2_y+2]= 0x1000;enemy1[pos2_y+3]= 0x2800;}else if(pp&0x0800){pp=pp&0x0800;enemy1[pos2_y]= pp;enemy1[pos2_y+1]= 0x1C00;enemy1[pos2_y+2]= 0x0800;enemy1[pos2_y+3]= 0x1400;}else if(pp&0x0400){pp=pp&0x0400;enemy1[pos2_y]= pp;enemy1[pos2_y+1]= 0x0E00;enemy1[pos2_y+2]= 0x0400;enemy1[pos2_y+3]= 0x0A00;}else if(pp&0x0200){pp=pp&0x0200;enemy1[pos2_y]= pp;enemy1[pos2_y+1]= 0x0700;enemy1[pos2_y+2]= 0x0200;enemy1[pos2_y+3]= 0x0500;}else if(pp&0x0100){pp=pp&0x0100;enemy1[pos2_y]= pp;enemy1[pos2_y+1]= 0x0380;enemy1[pos2_y+2]= 0x0100;enemy1[pos2_y+3]= 0x0280;}else if(pp&0x0080){pp=pp&0x0080;enemy1[pos2_y]= pp;enemy1[pos2_y+1]= 0x01C0;enemy1[pos2_y+2]= 0x0080;enemy1[pos2_y+3]= 0x0140;}else if(pp&0x0040){pp=pp&0x0040;enemy1[pos2_y]= pp;enemy1[pos2_y+1]= 0x00E0;enemy1[pos2_y+2]= 0x0040;enemy1[pos2_y+3]= 0x00A0;}else if(pp&0x0020){pp=pp&0x0020;enemy1[pos2_y]= pp;enemy1[pos2_y+1]= 0x0070;enemy1[pos2_y+2]= 0x0020;enemy1[pos2_y+3]= 0x0050;}else if(pp&0x0010){pp=pp&0x0010;enemy1[pos2_y]= pp;enemy1[pos2_y+1]= 0x0038;enemy1[pos2_y+2]= 0x0010;enemy1[pos2_y+3]= 0x0028;}else if(pp&0x0008){pp=pp&0x0008;enemy1[pos2_y]= pp;enemy1[pos2_y+1]= 0x001C;enemy1[pos2_y+2]= 0x0008;enemy1[pos2_y+3]= 0x0014;}else if(pp&0x0004){pp=pp&0x0004;enemy1[pos2_y]= pp;enemy1[pos2_y+1]= 0x000E;enemy1[pos2_y+2]= 0x0004;enemy1[pos2_y+3]= 0x000A;}else if(pp&0x0002){pp=pp&0x0002;enemy1[pos2_y]= pp;enemy1[pos2_y+1]= 0x0007;enemy1[pos2_y+2]= 0x0002;enemy1[pos2_y+3]= 0x0005;}}}interrupt [EXT_INT4] void shoot(void){if(sel==1){if(pos_y==pos1_y){enemy[pos1_y] = (enemy[pos1_y]&0xFFFF);if(pt[pos_y]==enemy[pos1_y]){pos1_x=rd;sel1=1;if(pos1_y==13){pos1_y=0;enemy[0]=enemy[13];enemy[13]=0;enemy[14]=0;enemy[15]=0;}else{enemy[pos1_y+1]=enemy[pos1_y];enemy[pos1_y]=0;pos1_y++;}delay_ms(1);kill++;LCD_screen1();TCNT1 = 0xD000;if(kill<10)cnt=0;ene1=1;}}else if(pos_y==pos1_y+1){enemy[pos1_y+1] = (enemy[pos1_y+1]&0xFFFF);if((pt[pos_y]|enemy[pos1_y+1])==enemy[pos1_y+1]){pos1_x=rd;sel1=1;if(pos1_y==13){pos1_y=0;enemy[0]=enemy[13];enemy[13]=0;enemy[14]=0;enemy[15]=0;}else{enemy[pos1_y+1]=enemy[pos1_y];enemy[pos1_y]=0;pos1_y++;}delay_ms(1);kill++;LCD_screen1();TCNT1 = 0xD000;if(kill<10)cnt=0;ene1=1;}}else if(pos_y==pos1_y+2){enemy[pos1_y+2] = (enemy[pos1_y+2]&0xFFFF);if((pt[pos_y]|enemy[pos1_y+2])==enemy[pos1_y+2]){pos1_x=rd;sel1=1;if(pos1_y==13){pos1_y=0;enemy[0]=enemy[13];enemy[13]=0;enemy[14]=0;enemy[15]=0;}else{enemy[pos1_y+1]=enemy[pos1_y];enemy[pos1_y]=0;pos1_y++;}delay_ms(1);kill++;LCD_screen1();TCNT1 = 0xD000;if(kill<10)cnt=0;ene1=1;}}else if(pos_y==pos1_y+3){enemy[pos1_y+3] = (enemy[pos1_y+3]&0xFFFF);if((pt[pos_y]|enemy[pos1_y+3])==enemy[pos1_y+3]){pos1_x=rd;sel1=1;if(pos1_y==13){pos1_y=0;enemy[0]=enemy[13];enemy[13]=0;enemy[14]=0;enemy[15]=0;}else{enemy[pos1_y+1]=enemy[pos1_y];enemy[pos1_y]=0;pos1_y++;}delay_ms(1);kill++;LCD_screen1();TCNT1 = 0xD000;if(kill<10)cnt=0;ene1=1;}}}if(pos_y==pos2_y){if(pt[pos_y]==enemy1[pos2_y]){pos2_x = rd1;sel1=1;if(pos2_y==13){pos2_y=0;enemy1[0]=enemy1[13];enemy1[13]=0;enemy1[14]=0;enemy1[15]=0;}else{enemy1[pos2_y+1]=enemy1[pos2_y];enemy1[pos2_y]=0;pos2_y++;}delay_ms(1);kill++;LCD_screen1();ene2=1;}}else if(pos_y==pos2_y+1){if ((pt[pos_y]|enemy1[pos2_y+1])==enemy1[pos2_y+1]){pos2_x=rd1;sel1=1;if(pos2_y==13){pos2_y=0;enemy1[0]=enemy1[13];enemy1[13]=0;enemy1[14]=0;enemy1[15]=0;}else{enemy1[pos2_y+1]=enemy1[pos2_y];enemy1[pos2_y]=0;pos2_y++;}delay_ms(1);kill++;LCD_screen1();ene2=1;}}else if(pos_y==pos2_y+2){if((pt[pos_y]|enemy1[pos2_y+2])==enemy1[pos2_y+2]){pos2_x=rd1;sel1=1;if(pos2_y==13){pos2_y=0;enemy1[0]=enemy1[13];enemy1[13]=0;enemy1[14]=0;enemy1[15]=0;}else{enemy1[pos2_y+1]=enemy1[pos2_y];enemy1[pos2_y]=0;pos2_y++;}delay_ms(1);kill++;LCD_screen1();ene2=1;}}else if(pos_y==pos2_y+3){if((pt[pos_y]|enemy1[pos2_y+3])==enemy1[pos2_y+3]){pos2_x=rd1;sel1=1;if(pos2_y==13){pos2_y=0;enemy1[0]=enemy1[13];enemy1[13]=0;enemy1[14]=0;enemy1[15]=0;}else{enemy1[pos2_y+1]=enemy1[pos2_y];enemy1[pos2_y]=0;pos2_y++;}delay_ms(1);kill++;LCD_screen1();ene2=1;}}}interrupt [TIM1_OVF] void hurt(void){if(sel==1){if(kill<10){ //적이 나를 공격할떄까지 약 7.5초cnt++;if(cnt==7){cnt=0;sel1=2;life--;LCD_screen1();pos1_x=rd;pos2_x=rd1;}TCNT1 = 0xD000;}else if((kill>=10)&&(kill<15)){ // 적이 나를 공격할떄까지 약 5.5초cnt++;if(cnt==5){cnt=0;sel1=2;life--;LCD_screen1();pos1_x=rd;pos2_x=rd1;}TCNT1 = 0xD000;}else if((kill>=15)&&(kill<20)){ //적이 나를 공격 할떄까지 약 33.5초cnt++;if(cnt==3){cnt=0;sel1=2;life--;LCD_screen1();pos1_x=rd;pos2_x=rd1;}TCNT1 = 0xD000;}else if((kill>=20)&&(kill<25)){ //적이 나를 공격 할떄까지 약 33.5초cnt++;if(cnt==3){cnt=0;sel1=2;life--;LCD_screen1();pos1_x=rd;pos2_x=rd1;}TCNT1 = 0xD000;}else if((kill>=25)&&(kill<30)){ //적이 나를 공격 할떄까지 약 33.5초cnt++;if(cnt==3){cnt=0;sel1=2;life--;LCD_screen1();pos1_x=rd;pos2_x=rd1;}TCNT1 = 0xD000;}else if((kill>=35)&&(kill<40)){ //적이 나를 공격 할떄까지 약 33.5초cnt++;if(cnt==2){cnt=0;sel1=2;life--;LCD_screen1();pos1_x=rd;pos2_x=rd1;}TCNT1 = 0xD000;}else if((kill>=40)&&(kill<45)){ //적이 나를 공격 할떄까지 약 33.5초cnt++;if(cnt==2){cnt=0;sel1=2;life--;LCD_screen1();pos1_x=rd;pos2_x=rd1;}TCNT1 = 0xD000;}else if((kill>=45)&&(kill<50)){ //적이 나를 공격 할떄까지 약 33.5초cnt++;if(cnt==1){cnt=0;sel1=2;life--;LCD_screen1();pos1_x=rd;pos2_x=rd1;}TCNT1 = 0xD000;}}}void LCD_init(void){DDRB = 0xFF;PORTB &=0xFB;delay_ms(15);Command(0x20);delay_ms(5);Command(0x20);delay_us(100);Command(0x20);Command(FUNCSET);Command(DISPON);Command(ALLCLR);Command(ENTMODE);}void LCD_String(char *str){unsigned char *pStr=0;pStr = str;while(*pStr) Data(*pStr++);}void Command(unsigned char byte){Busy();PORTB = (byte&0xF0);PORTB &=0xFE;PORTB &=0xFD;delay_us(1);PORTB |=0x04;delay_us(1);PORTB &=0xFB;PORTB = ((byte<<4)&0xF0);PORTB &=0xFE;PORTB &=0xFD;delay_us(1);PORTB |=0x04;delay_us(1);PORTB &=0xFB;}void Data(unsigned char byte){Busy();PORTB = (byte&0xF0);PORTB |=0x01;PORTB &=0xFD;delay_us(1);PORTB |=0x04;delay_us(1);PORTB &=0xFB;PORTB = ((byte<<4)&0xF0);PORTB |=0x01;PORTB &=0xFD;delay_us(1);PORTB |=0x04;delay_us(1);PORTB &=0xFB;}void Busy(void){delay_ms(2);}void LCD_screen1(void){char temp1[16],temp2[16];Command(HOME);sprintf(temp1,"KILL : %03u",kill);sprintf(temp2,"LIFE : %03u",life);LCD_String(temp1);Command(LINE2);LCD_String(temp2);Command(LINE2);if(life==255){Command(HOME);LCD_String("game over!!");Command(LINE2);LCD_String(" ");Command(LINE2);}}
댓글 0
조회수 3,388등록된 댓글이 없습니다.