📄 main.c
字号:
#include <reg51.h>
#include <intrins.h>
typedef unsigned char BYTE;
BYTE DBUF _at_ 0x30;
BYTE TEMP _at_ 0x40;
sbit P30=P3^0;
sbit P31=P3^1;
BYTE code SEGTAB[]={ 0x3F,0x06,0x5B,0x4F,0x66,0x6D,
0x7D,0x07,0x7F,0x6F,0x77,0x7C,
0x58,0x5E,0x79,0x71,0x00,0x40};
BYTE code K1TAB[]={ 0x81,0x41,0x21,0x11,
0x82,0x42,0x22,0x12,
0x84,0x44,0x24,0x14,
0x88,0x48,0x28,0x18};
void display(BYTE in)
{
BYTE num;
DBUF=in;
TEMP=SEGTAB[DBUF];
num=8;
ACC=TEMP;
do
{
#pragma asm
RLC A
#pragma endasm
P30=CY;
P31=0;
P31=1;
}while(--num);
}
void delay()
{
BYTE i=0x01;
do
{
BYTE j=0x88;
do
{
_nop_();
}while(--j);
}while(--i);
}
BYTE key1()
{
BYTE temp;
BYTE num;
BYTE key;
while(1)
{
P1=0xF0;
if(P1==0xF0)
continue;
delay();
P1=0xF0;
temp=P1;
if(temp==0xF0)
continue;
P1=0x0F;
temp=P1&temp;
num=0x10;
key=0;
do
{
if(temp==K1TAB[key])
{
P1=0x0F;
while(P1!=0x0F);
return key;
}
key++;
}while(--num);
}
}
main()
{
while(1)
{
display(key1());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -