?? main.c
字號:
play16(1,0,2,xing);
play16(1,2,2,qi);
vertical(3,63,127);
vertical(3,63,126);
vertical(3,63,122);
vertical(3,63,121);
for(i=0;i<7;i++)
{
dot(121+i,3);
dot(121+i,63);
}
for(i=0;i<12;i++)
{
dot(123,8+5*i);
}
for(i=0;i<7;i++)
{
if(i<4)
{
play16(0,i<<1,3,yanyu+(i<<5));
}
if(i>=4)
{
play16(1,(i-4)<<1,3,yanyu+(i<<5));
}
}
init_ds1302();
init_time();
flag5=0;
do
{
if(P3&0x04)
first=1;
init_ds1302();
gettime(&realtime);
play8(0,2,0,(shu0+(datastring[0]<<4)));
play8(0,3,0,(shu0+(datastring[1]<<4)));
play8(0,6,0,(shu0+(datastring[2]<<4)));
play8(0,7,0,(shu0+(datastring[3]<<4)));
play8(1,2,0,(shu0+(datastring[4]<<4)));
play8(1,3,0,(shu0+(datastring[5]<<4)));
play8(0,0,1,(shu0+(datastring[6]<<4)));
play8(0,1,1,(shu0+(datastring[7]<<4)));
play8(0,4,1,(shu0+(datastring[8]<<4)));
play8(0,5,1,(shu0+(datastring[9]<<4)));
play8(1,0,1,(shu0+(datastring[10]<<4)));
play8(1,1,1,(shu0+(datastring[11]<<4)));
play16(1,4,2,(yi+((datastring[12]-2)<<5)));
gettemperature();
if(flagg)
{
play8(0,0,2,fu);
play8(1,6,3,fu);
}
else
{
clear8(6,4,0);
play8(1,6,3,zheng);
}
play8(0,4+flagg,2,dian);
play8(0,5+flagg,2,C);
play8(0,0+flagg,2,(shu0+(temp[0]<<4)));
play8(0,1+flagg,2,(shu0+(temp[1]<<4)));
play8(0,2+flagg,2,xiao);
play8(0,3+flagg,2,(shu0+(temp[2]<<4)));
play();
dot(124,3);
if((k==0x02)&&((P3&0x04)==0x04))
{
count1++;
if(count1==7)
count1=0;
switch (count1)
{
case 0:
{
play16(1,0,2,xing);
play16(1,2,2,qi);
k=0;break;
}
case 1:
{
play16_fb(0,4,0);
k=0; break;
}
case 2:
{
play16(0,4,0,nian);
play16_fb(1,0,0);
k=0;break;
}
case 3:
{
play16(1,0,0,yue);
play16_fb(1,4,0);
k=0;break;
}
case 4:
{
play16(1,4,0,ri);
play16_fb(0,2,1);
k=0;break;
}
case 5:
{
play16(0,2,1,shi);
play16_fb(0,6,1);
k=0;break;
}
case 6:
{
play16(0,6,1,fen);
play16_fb(1,0,2);
play16_fb(1,2,2);
k=0;break;
}
default:k=0;break;
}
}
if((k==0x03)&&((P3&0x04)==0x04))
{
switch(count1)
{
case 1:
{
setjia(ds1302_year);k=0;break;
}
case 2:
{
setjia(ds1302_month);k=0;break;
}
case 3:
{
setjia(ds1302_day);k=0;break;
}
case 4:
{
setjia(ds1302_hour);k=0;break;
}
case 5:
{
setjia(ds1302_minute);k=0;break;
}
case 6:
{
setjia(ds1302_week);k=0;break;
}
}
}
if((k==0x01)&&((P3&0x04)==0x04))
{
switch(count1)
{
case 1:
{
setjian(ds1302_year);k=0;break;
}
case 2:
{
setjian(ds1302_month);k=0;break;
}
case 3:
{
setjian(ds1302_day);k=0;break;
}
case 4:
{
setjian(ds1302_hour);k=0;break;
}
case 5:
{
setjian(ds1302_minute);k=0;break;
}
case 6:
{
setjian(ds1302_week);k=0;break;
}
}
}
} while(!flag5);
}
/*貪吃蛇子程序*/
void tanchishe(void)
{
uchar xdata length[102]={0,8,1,8}; //存放蛇身的數組;
uchar food[2]={12,8};
uchar i,x,y;
bit flag2,flag3,flag4;
TMOD=1; //定時器工作方式
IT0=1; //邊延有效
IT1=1;
EA=1; //開CPU中斷
ET0=1; //開定時器中斷
EX0=1; //開外部中斷
EX1=1;
TL0=0x00;
TH0=0x00; //定時器初值
TR0=1; //啟動定時器
dengji=2;
p=20;
direction=1;
flag5=0;
choose12864(2);
clear12864();
vertical(1,61,30);
vertical(1,61,127);
for(i=0;i<98;i++)
{
dot(30+i,1);
dot(30+i,62);
}
play16(0,0,0,tan);
play16(0,0,1,chi);
play16(0,0,2,she);
change(length,(length+1));
change((length+2),(length+3));
change(food,food+1);
for(;;)
{
do
{
first=1;
while(flag5|!flag1);
x=*(length);
y=*(length+1);
switch(direction) //右
{
case 1:
{
for(i=0;i<dengji-1;i++)
{
*(length+(i<<1))=*(length+(i<<1)+2);
*(length+(i<<1)+1)=*(length+(i<<1)+3);
}
(*(length+(dengji<<1)-2))++;
flag=0;
break;
}
case 2: //下
{
for(i=0;i<dengji-1;i++)
{
*(length+(i<<1))=*(length+(i<<1)+2);
*(length+(i<<1)+1)=*(length+(i<<1)+3);
}
(*(length+(dengji<<1)-1))++;
flag=1;
break;
}
case 3: //左
{
for(i=0;i<dengji-1;i++)
{
*(length+(i<<1))=*(length+(i<<1)+2);
*(length+(i<<1)+1)=*(length+(i<<1)+3);
}
(*(length+(dengji<<1)-2))--;
flag=0;
break;
}
case 4:
{ //上
for(i=0;i<dengji-1;i++)
{
*(length+(i<<1))=*(length+(i<<1)+2);
*(length+(i<<1)+1)=*(length+(i<<1)+3);
}
(*(length+(dengji<<1)-1))--;
flag=1;
break;
}
}
flag4=((*(length+(dengji<<1)-2))==food[0])&&((*(length+(dengji<<1)-1))==food[1]);
if(flag4) //
{
for(i=dengji;i>0;i--)
{
*(length+(i<<1))=*(length+(i<<1)-2);
*(length+(i<<1)+1)=*(length+(i<<1)-1);
}
*length=x;
*(length+1)=y;
dengji++;
do
{
flag3=0;
food[0]=TL0%24;
food[1]=TL0%15;
for(i=0;i<dengji-1;i++) //食物是否在蛇身身上
{
if((*(length+(i<<1)))==food[0]&&((*(length+(i<<1)+1))==food[1]))
{
flag3=1;
break;
}
}
}while(flag3);
change(food,food+1);
}
flag2=1; //蛇頭沒有遇到蛇身
for(i=0;i<dengji-1;i++)
{
if(*(length+(i<<1))==*(length+(dengji<<1)-2)&&(*(length+(i<<1)+1)==*(length+(dengji<<1)-1)))
{
flag2=0;
break;
}
}
flag2=flag2&&*(length+(dengji<<1)-2)>=0&&*(length+(dengji<<1)-2)<24;//蛇頭是否出邊界
flag2=flag2&&*(length+(dengji<<1)-1)>=0&&*(length+(dengji<<1)-1)<15;
if(flag2)
{
clear(&x,&y);
{
change(length+(dengji<<1)-2,length+(dengji<<1)-1);
}
if(flag4)
{
change(&x,&y);
}
flag1=0;
play8(0,0,3,shu0+((dengji/10)<<4));
play8(0,1,3,shu0+(((dengji)%10)<<4));
}
}
while(flag2);
delay1ms(450);
delay1ms(450);
choose12864(2);
clear12864();
play16(0,4,1,over);
play16(0,6,1,over+32);
play16(1,0,1,over+64);
play16(1,2,1,over+96);
delay1ms(450);
delay1ms(450);
break;
}
}
//////////////////////////////
main(void)
{
uchar i;
uchar count=0;
P2=0xff;
EA=1; //開CPU中斷
//ET0=1; //開定時器中斷
EX0=1; //開外部中斷
EX1=1;
choose12864(2);
init12864();
clear12864();
////////////////////
play16(0,4,0,tan);
play16(0,6,0,chi);
play16(1,0,0,she);
///////////////////
play16(0,4,1,els);
play16(0,6,1,els+32);
for(i=0;i<3;i++)
{
play16(1,i<<1,1,(els+64+(i<<5)));
}
//////////////////
play16(0,4,2,wnl);
play16(0,6,2,wnl+32);
play16(1,0,2,wnl+64);
//////////////////
for(;;)
{
if((k==0x03)&&((P3&0x04)==0x04))
{
count++;
k=0;
if(count==4)
count=1;
switch(count)
{
case 1:
{
play16(0,4,2,wnl);
play16(0,6,2,wnl+32);
play16(1,0,2,wnl+64);
play16_fb(0,4,0);
play16_fb(0,6,0);
play16_fb(1,0,0);
};break;
case 2: {
play16(0,4,0,tan);
play16(0,6,0,chi);
play16(1,0,0,she);
play16_fb(0,4,1);
play16_fb(0,6,1);
for(i=0;i<3;i++)
{
play16_fb(1,i<<1,1);
}
};break;
case 3:
{
play16(0,4,1,els);
play16(0,6,1,els+32);
for(i=0;i<3;i++)
{
play16(1,i<<1,1,(els+64+(i<<5)));
}
play16_fb(0,4,2);
play16_fb(0,6,2);
play16_fb(1,0,2);
};break;
default:break;
}
}
if(P3&0x04)
first=1;
if(flag5)
{
switch(count)
{
case 1:flag5=0;tanchishe();count=0;flag5=0;k=0;break;
case 2:flag5=0;fangkuai();count=0;flag5=0; k=0;break;
case 3:flag5=0;wannianli();count=0;flag5=0;k=0;break;
default:count=0;k=3;flag5=0;break;
}
choose12864(2);
init12864();
clear12864();
////////////////////
play16(0,4,0,tan);
play16(0,6,0,chi);
play16(1,0,0,she);
///////////////////
play16(0,4,1,els);
play16(0,6,1,els+32);
for(i=0;i<3;i++)
{
play16(1,i<<1,1,(els+64+(i<<5)));
}
//////////////////
play16(0,4,2,wnl);
play16(0,6,2,wnl+32);
play16(1,0,2,wnl+64);
//////////////////
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -