📄 44clock.c
字号:
#include <reg51.h>
#define unchar unsigned char
unsigned int real_key=0;
unsigned char num[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xa0,0x83,0xa7,0xa1,0x84,
0x8e};
void hold_on( unsigned int delay)
{
while(delay--);
}
unsigned int get_key()
{
int key;
if( P1 == 0xf0 ) return 0;
else
{
key = P1;
hold_on(30000);
P1 = 0x0f;
if( P1 == 0x0f ) return 0;
else
{
hold_on(30000);
key = P1 ^ key;
}
}
switch(key)
{
case 0xee: return 1; break;
case 0xde: return 2; break;
case 0xbe: return 3; break;
case 0x7e: return 4; break;
case 0xed: return 5; break;
case 0xdd: return 6; break;
case 0xbd: return 7; break;
case 0x7d: return 8; break;
case 0xeb: return 9; break;
case 0xdb: return 10; break;
case 0xbb: return 11; break;
case 0x7b: return 12; break;
case 0xe7: return 13; break;
case 0xd7: return 14; break;
case 0xb7: return 15; break;
case 0x77: return 16; break;
default: return 0;
}
}
unsigned int scan_key()
{
unsigned int key;
P1 = 0xf0;
key = get_key();
if( !key )
{
return 0;
}
else
{
hold_on(300);
P1 = 0xf0;
real_key = get_key();
if( key == real_key )
{
return real_key;
}
}
}
void main()
{
unsigned int key;
P2 = 0x0f;
while(1)
{
key = scan_key();
if( key != 0 )
{
P0 = num[key-1];
hold_on(30000);
hold_on(30000);
hold_on(30000);
hold_on(30000);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -