資源簡介
八路搶答器.7z
代碼片段和文件信息
#include
unsigned?char?ntk;
void?delay() //定時10ms,采用定時器1,工作方式1實現
{
???TH1=0xd8; //設置10ms定時初值
???TL1=0xf0;
???TR1=1; ????//啟動定時器1
???while(!TF1); //判斷10ms定時時間到
???TF1=0;
}
unsigned?char?a[]={0xff0xf90x240xb00x990x920x820xf80x80};
void?main() ????//主函數
{? ?
???unsigned?char?i;
???TMOD=0x10; //設置定時器1工作方式1
???P1=0xff;
???P3=0xff; ????//P1口作為輸入口,置全1
???i=0;
???while(1)
???{
???if(P3!=0xff)????//開始搶答
??????{
????P2=0xfe;
????????while(i==0)? //循環判斷是否有鍵按下
????????{
???????????i=P1; //讀按鍵狀態
??? ???????i=~i; //按鍵狀態取反
????????}
???????delay();? //有鍵按下,延時10ms去抖
???????do?{
??? ???????i=P1; ????//再次讀按鍵狀態
??? ???????i=~i;? ????//按鍵狀態取反
??? ??????}?while(i==0);
???????switch(i) //根據鍵值調用不同的處理函數
????????{
??????????case?0x01:?n=1;P0=a[n];break;
??????????case?0x02:?n=2;P0=a[n];break;
??????????case?0x04:?n=3;P0=a[n];break;
??????????case?0x08:?n=4;P0=a[n];break;
??????????case?0x10:?n=5;P0=a[n];break;
??????????case?0x20:?n=6;P0=a[n];break;
??????????case?0x40:?n=7;P0=a[n];break; ?
??????????case?0x80:?n=8;P0=a[n];break;
??????????default:break;
????????}
??
??????}
???while(1)
????{?
??P2=0xff;
??P0=a[n];
??delay();
??if(P3!=0xff)break;?
}
?P0=0xff;
????}
}
評論
共有 條評論