📄 jianpanjishu.c
字号:
#include <reg52.h>
#define OSC_FREQ (12000000UL)
#define OSC_PER_INST (12)
typedef unsigned int tWord; /*重定义INT*/
#define TIMER0_COUNT (65536-(tWord)(OSC_FREQ/(OSC_PER_INST*1000))) /*这是最接近一秒的初值*/
#define TIMES 150
#define TIMER0_NO 1
code v[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
code scan[6]={0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
unsigned char a[6]={0,0,0,0,0,0};
sbit q3=P3^3;//键盘按键使能
unsigned char keya=0,keyb=0,keyc=0,keyd=0,keye=0,keyf=0,n,i=0,kg=0,n;
static void timer0_isr(void) interrupt TIMER0_NO
{
TR0=0;
TH0=(TIMER0_COUNT/256);
TL0=(TIMER0_COUNT%256);
TR0=1;
q3=0;
P1=0xFF;
P2=0xFF;
n = P2 & 0xFC;
if(keya!=0)
{
keya--;
if(keya==0 && n==0xF8)
{
a[0]++;
if(a[0]==10)
{
a[0]=0;
a[1]++;
if(kg==0)
{
kg=1;
}
if(a[1]==10)
{
a[1]=0;
a[2]++;
if(kg==1)
{
kg=2;
}
if(a[2]==10)
{
a[2]=0;
a[3]++;
if(kg==2)
{
kg=3;
}
if(a[3]==10)
{
a[3]=0;
a[4]++;
if(kg==3)
{
kg=4;
}
if(a[4]==10)
{
a[4]=0;
a[5]++;
if(kg==4)
{
kg=5;
}
if(a[5]==10)
{
a[5]=0;
kg=0;
}
}
}
}
}
}
}
}
else if(n==0xF8)
{
keya=TIMES;
}
if(keyb!=0)
{
keyb--;
if(keyb==0 && n==0xF4)
{
a[1]++;
if(kg==0 && n==0xF4)
{
kg=1;
}
if(a[1]==10)
{
a[1]=0;
a[2]++;
if(kg==1)
{
kg=2;
}
if(a[2]==10)
{
a[2]=0;
a[3]++;
if(kg==2)
{
kg=3;
}
if(a[3]==10)
{
a[3]=0;
a[4]++;
if(kg==3)
{
kg=4;
}
if(a[4]==10)
{
a[4]=0;
a[5]++;
if(kg==4)
{
kg=5;
}
if(a[5]==10)
{
a[5]=0;
kg=0;
}
}
}
}
}
}
}
else if(n==0xF4)
{
keyb=TIMES;
}
if(keyc!=0)
{
keyc--;
if(keyc==0 && n==0xEC)
{
a[2]++;
if(kg==0 && n==0xEC)
{
kg=2;
}
else if(kg==1 && n==0xEC)
{
kg=2;
}
if(a[2]==10)
{
a[2]=0;
a[3]++;
if(kg==2)
{
kg=3;
}
if(a[3]==10)
{
a[3]=0;
a[4]++;
if(kg==3)
{
kg=4;
}
if(a[4]==10)
{
a[4]=0;
a[5]++;
if(kg==4)
{
kg=5;
}
if(a[5]==10)
{
a[5]=0;
kg=0;
}
}
}
}
}
}
else if(n==0xEC)
{
keyc=TIMES;
}
if(keyd!=0)
{
keyd--;
if(keyd==0 && n==0xDC)
{
a[3]++;
if(kg==0 && n==0xDC)
{
kg=3;
}
else if(kg==1 && n==0xDC)
{
kg=3;
}
else if(kg==2 && n==0xDC)
{
kg=3;
}
if(a[3]==10)
{
a[3]=0;
a[4]++;
if(kg==3)
{
kg=4;
}
if(a[4]==10)
{
a[4]=0;
a[5]++;
if(kg==4)
{
kg=5;
}
if(a[5]==10)
{
a[5]=0;
kg=0;
}
}
}
}
}
else if(n==0xDC)
{
keyd=TIMES;
}
if(keye!=0)
{
keye--;
if(keye==0 && n==0xBC)
{
a[4]++;
if(kg==0 && n==0xBC)
{
kg=4;
}
else if(kg==1 && n==0xBC)
{
kg=4;
}
else if(kg==2 && n==0xBC)
{
kg=4;
}
else if(kg==3 && n==0xBC)
{
kg=4;
}
if(a[4]==10)
{
a[4]=0;
a[5]++;
if(kg==4)
{
kg=5;
}
if(a[5]==10)
{
a[5]=0;
kg=0;
}
}
}
}
else if(n==0xBC)
{
keye=0xBC;
}
if(keyf!=0)
{
keyf--;
if(keyf==0 && n==0x7C)
{
a[5]++;
if(kg==0 && n==0x7C)
{
kg=5;
}
else if(kg==1 && n==0x7C)
{
kg=5;
}
else if(kg==2 && n==0x7C)
{
kg=5;
}
else if(kg==3 && n==0x7C)
{
kg=5;
}
else if (kg==4 && n==0x7C)
{
kg=5;
}
if(a[5]==10)
{
a[5]=0;
kg=0;
}
}
}
else if(n==0x7C)
{
keyf=TIMES;
}
P2=0xFF;
P0=0xFF;
switch (kg)
{
case 0:
P2=scan[i];
P0=v[a[i]];
i++;
if(i==1)
{
i=0;
}
break;
case 1:
P2=scan[i];
P0=v[a[i]];
i++;
if(i==2)
{
i=0;
}
break;
case 2:
P2=scan[i];
P0=v[a[i]];
i++;
if(i==3)
{
i=0;
}
break;
case 3:
P2=scan[i];
P0=v[a[i]];
i++;
if(i==4)
{
i=0;
}
break;
case 4:
P2=scan[i];
P0=v[a[i]];
i++;
if(i==5)
{
i=0;
}
break;
case 5:
P2=scan[i];
P0=v[a[i]];
i++;
if(i==6)
{
i=0;
}
break;
default :
break;
}
}
static void timer0_initialize(void)
{
EA=0;
TR0=0;
TMOD &=0xF0;
TMOD |=0x01;
TH0=(TIMER0_COUNT/256);
TL0=(TIMER0_COUNT%256);
TF0=0;
ET0=1;
PT0=1;
TR0=1;
EA=1;
}
void main (void)
{
timer0_initialize();
while(1)
{
PCON |=0x01;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -