該樓層疑似違規已被系統折疊 隐藏此樓檢視此樓
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define data1 P0
#define data2 P2
sbit s1=P3^6;
sbit s2=P3^7;
bit fangxiang;
uint alt=0,net=0,sl=8*10;
bit mode;
uchar code tab[]={
// (0) 0(1) 1(2) 2(3) 3(4) 4(5) 5(6) 6(7) 7(8) 8(9) 9(10) (11)
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x1C,0x22,0x22,0x22,0x22,0x1C,0x00,
0x00,0x12,0x12,0x3E,0x02,0x02,0x00,0x00,
0x00,0x12,0x26,0x26,0x26,0x2A,0x36,0x00,
0x00,0x14,0x22,0x32,0x32,0x2A,0x2C,0x00,
0x00,0x08,0x14,0x24,0x26,0x7E,0x00,0x00,
0x00,0x3C,0x2A,0x2A,0x2A,0x2A,0x24,0x00,
0x00,0x1C,0x2A,0x2A,0x2A,0x2A,0x04,0x00,
0x00,0x30,0x20,0x2E,0x28,0x30,0x20,0x00,
0x00,0x34,0x2A,0x2A,0x2A,0x2A,0x34,0x00,
0x00,0x10,0x2A,0x2A,0x2A,0x2E,0x1C,0x00,
};
void delay(uint z) //延時子函數
{
uchar x;
for(;z>0;z--)
for(x=110;x>0;x--);
}
void xianshi()//顯示
{
uchar aa,i,num=2;
for(i=0;i<16;i++)
{
switch(i){
case 0:
num=1;
break;
case 1:
num=2;
break;
case 2:
num=4;
break;
case 3:
num=8;
break;
case 4:
num=16;
break;
case 5:
num=32;
break;
case 6:
num=64;
break;
case 7:
num=128;
break;
default :
num=0;
break;
}
P2=0xff-num; //列掃描
data1=tab[net+aa]; //取出上8行資料輸出
aa++;
delay(5);//延時
data1=0; //清屏
P1=0x00; //消除餘輝
if(aa>15) aa=0; //字模位址
}
}
void main() //主函數
{
ET1=1; //使能定時器0
EA=1; //開啟總中斷
TR1=1;//開始計數
while(1) //無限循環
{
xianshi(); //顯示
if(s1==0) //檢測按鍵
{
delay(30); //延時消抖
TR1=~TR1; //按下暫停 ,暫按繼續
while(!s1)xianshi();
delay(30);
}
if(s2==0)//檢測按鍵
{
delay(30);//延時消抖
fangxiang=~fangxiang; //方向取反
while(!s2)xianshi();
delay(30);
}
}
}
void timer1() interrupt 3
{
alt++;
if(alt==30) //到一定的時間加以實作左移
{
alt=0;
if(fangxiang