91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

基于紅外線的單片機貪吃蛇,51單片機系列,需要紅外遙控器和接收器,開發板

資源截圖

代碼片段和文件信息

#include?“reg51.h“??????
#include?
#include?

typedef?unsigned?int?u16;
typedef?unsigned?char?u8;

sbit?IRIN=P3^2;
sbit?SRCLK=P3^6;
sbit?RCLK=P3^5;
sbit?SER=P3^4;

u8?IrValue[6];
u8?Time;

u8?see[]={00000000};
u8?t?=?2;?//記錄當前運動方向初始為1向上
u8?she[64]?=?{0};
u8?count;
u8?ledwei[]={0x7f0xbf0xdf0xef0xf70xfb0xfd0xfe};
void?init(){?//頭插初始化鏈表開始蛇的位置在22
IT0=1;//下降沿觸發
EX0=1;//打開中斷0允許
EA=1;?//打開總中斷
IRIN=1;//初始化端口
for(count?=?0;count<64;count++)?she[count]?=?0;
count?=?1;
count++;
count++;
count++;
she[63]?=?77;
she[62]?=?24;
she[61]?=?23;
she[60]?=?22;

}


void?delay(u16?i)
{
while(i--);?
}

void?show(){
u8?i?x?yk=0;
u8?j?tf[20];
for(i?=?63;i?>?43;i--){
tf[63-i]?=?she[i];
}

????for(i=0;i<20;++i)//i用來遍歷數組
????{
????????for(j=i+1;j<20?&&?tf[i]-tf[j];++j);
????????if(!(j-20))//沒有重復元素
????????????tf[k++]=tf[i];//可將date[]看作兩個數組
????}

for(j?=?0;?j? j?=?0;
for(i?=?0;?i? x?=?tf[i]/10;
y?=?tf[i]%10;
j?=?1?< see[x-1]?+=?j;
}
}


void?Hc595SendByte(u8?dat)
{
u8?a;
SRCLK=0;
RCLK=0;
for(a=0;a<8;a++)
{
SER=dat>>7;
dat<<=1;

SRCLK=1;
_nop_();
_nop_();
SRCLK=0;
}

RCLK=1;
_nop_();
_nop_();
RCLK=0;
}
void?DigDisplay()
{
u8?i?=?0;
P0=0x7f;
for?(i?=?0;?i? {
P0?=ledwei[i];
Hc595SendByte(see[i]);
delay(100);
Hc595SendByte(0x00);??//消隱?
}
}

/*
啟動:
1:上?2:左?3:下?4:右
*/
void?run(u8?t){
u8?i;?
for(i?=64-count;i? she[i]?=?she[i+1];
}
switch(t){
case?1:?she[62]?+=?1;?if((she[62]%10)>8)?she[62]?=?(she[62]/10)*10+1;?break;
case?2:?she[62]?-=?10;?if((she[62]/10)<1)?she[62]?=?(she[62]%10)+80;?break;
case?3:?she[62]?-=?1;?if((she[62]%10)<1)?she[62]?=?(she[62]/10)*10+8;?break;
case?4:?she[62]?+=?10;?if((she[62]/10)>8)?she[62]?=?(she[62]%10)+10;?break;
}
if(she[62]==she[63]){
she[63]?=?(((rand()%8)+1)*10)+((rand()%8)+1);
count++;
for(i?=64-count;i? she[i]?=?she[i+1];
}
switch(t){
case?1:?she[62]?+=?1;?if((she[62]%10)>8)?she[62]?=?(she[62]/10)*10+1;?break;
case?2:?she[62]?-=?10;?if((she[62]/10)<1)?she[62]?=?(she[62]%10)+80;?break;
case?3:?she[62]?-=?1;?if((she[62]%10)<1)?she[62]?=?(she[62]/10)*10+8;?break;
case?4:?she[62]?+=?10;?if((she[62]/10)>8)?she[62]?=?(she[62]%10)+10;?break;
}
for(i?=?0;i? show();
DigDisplay();
}
}

}


void?main(){
u16?i?=?0;
init();
show();
while(1){
DigDisplay();
i++;
show();
if(i>40){
if(IrValue[2]==24){
t?=?1;
}else?if(IrValue[2]==8){
t?=?2;
}else?if(IrValue[2]==82){
t?=?3;
}else{
t?=?4;
}
run(t);
i?=?0;
}
}
}

void?ReadIr()?interrupt?0
{
u8?jk;
u16?err;
Time=0;??????????
delay(700);?//7ms
if(IRIN==0)???//確認是否真的接收到正確的信號
{??

err=1000;???????//1000*10us=10ms超過說明接收到錯誤的信號
/*當兩個條件都為真是循環,如果

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????4385??2019-05-26?22:52??shank.c
?????文件??????458240??2019-07-11?19:43??單片機課設報告.doc

評論

共有 條評論