📄 00.txt
字号:
#define P_IOA_Data (volatile unsigned int *)0x7000
#define P_IOA_Dir (volatile unsigned int *)0x7002
#define P_IOA_Attrib (volatile unsigned int *)0x7003
#define P_IOB_Data (volatile unsigned int *)0x7005
#define P_IOB_Dir (volatile unsigned int *)0x7007
#define P_IOB_Attrib (volatile unsigned int *)0x7008
#define P_Watchdog_Clear (volatile unsigned int *)0x7012
#define P_INT_Mask (volatile unsigned int *)0x7010
#define P_INT_Clear (volatile unsigned int *)0x7011
void led();
void delay(void);
unsigned int count=0;
unsigned int wai,qian,bai,ge,shi;
unsigned int g_Data[10] = {0x003f,0x0006,0x005b,0x004f,0x0066,0x006d,0x007d,0x0007,0x007f,0x006f};
unsigned int b[16]={0x0011,0x0021,0x0041,0x0081,0x0012,0x0022,0x0042,0x0082,0x0014,0x0024,0x0044,0x0084,0x0018,0x0028,0x0048,0x0088};
unsigned int key[5];
int keyscan();
int main(void)
{
__asm("int off");
*P_IOA_Dir=0xf000; //A口高8位为键盘扫描 高4位为输出,低4位为输入,
*P_IOA_Attrib=0xf0ff; //A口低八位为输入;
*P_IOA_Data=0x0000;
*P_IOB_Dir=0xffff;
*P_IOB_Attrib=0xffff; //B口高八位为段码输出 低八位为位码输出;
*P_IOB_Data=0x0000;
*P_INT_Mask=0x0008;
__asm("int IRQ");
while(1)
{
led();
*P_Watchdog_Clear=0x0001;
}
}
void led()
{
unsigned int a,b,c,d,e;
{
switch(count)
{
case 0:
*P_IOB_Data=0x00000;
break;
case 1:
ge=g_Data[key[1]];
d=ge|0x0200;
*P_IOB_Data=d;
delay();
break;
case 2:
shi=g_Data[key[1]];
c=shi|0x0400;
*P_IOB_Data=c;
delay();
ge=g_Data[key[2]];
d=ge|0x0200;
*P_IOB_Data=d;
delay();
break;
case 3:
bai=g_Data[key[1]];
b=bai|0x0800;
*P_IOB_Data=b;
delay();
shi=g_Data[key[2]];;
c=shi|0x0400;
*P_IOB_Data=c;
delay();
ge=g_Data[key[3]];;
d=ge|0x0200;
*P_IOB_Data=d;
delay();
break;
case 4:
qian=g_Data[key[1]];;
a=qian|0x1000;
*P_IOB_Data=a;
delay();
bai=g_Data[key[2]];;
b=bai|0x0800;
*P_IOB_Data=b;
delay();
shi=g_Data[key[3]];;
c=shi|0x0400;
*P_IOB_Data=c;
delay();
ge=g_Data[key[4]];;
d=ge|0x0200;
*P_IOB_Data=d;
delay();
break;
case 5: wai=g_Data[key[1]];;
e=wai|0x2000;
*P_IOB_Data=e;
delay();
qian=g_Data[key[2]];;
a=qian|0x1000;
*P_IOB_Data=a;
delay();
bai=g_Data[key[3]];;
b=bai|0x0800;
*P_IOB_Data=b;
delay();
shi=g_Data[key[4]];
c=shi|0x0400;
*P_IOB_Data=c;
delay();
ge=g_Data[key[5]];
d=ge|0x0200;
*P_IOB_Data=d;
delay();
break;
}
}
}
void delay(void)
{
unsigned int i;
for(i=0;i<500;i++)
{
* P_Watchdog_Clear=0x0001;
}
}
void IRQ5(void)__attribute__((ISR));
void IRQ5(void)
{
int i,j,m,n;
for(i=0;i<16;i++)
{ n=b[i]<<8;
*P_IOA_Data=n&0xf000;
m=*P_IOA_Data&0xff00;
if(m==n)
break;
}
if(i<10)
{
count++;
key[count]=i;
}
if(i==10)
{
count=0;
}
if(count>5)
count=0;
*P_INT_Clear=0x0008;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -