📄 main.c
字号:
#include <reg51.h>
typedef unsigned char BYTE;
sbit P10=P1^0;
sbit P17=P1^7;
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3;
sbit P24=P2^4;
sbit P25=P2^5;
sbit P26=P2^6;
sbit P27=P2^7;
sbit P30=P3^0;
sbit P31=P3^1;
sbit P32=P3^2;
sbit P33=P3^3;
sbit P34=P3^4;
sbit P35=P3^5;
sbit P36=P3^6;
sbit P37=P3^7;
BYTE LED_BIT_1;
BYTE LED_BIT_2;
BYTE LED_BIT_3;
BYTE LED_BIT_4;
BYTE LED_BIT_5;
BYTE LED_BIT_6;
BYTE LED_BIT_7;
BYTE LED_BIT_8;
BYTE WORD_1;
BYTE WORD_2;
BYTE WORD_3;
BYTE WORD_4;
BYTE WORD_5;
BYTE WORD_6;
BYTE KEY_1;
BYTE KEY_2;
BYTE KEY_3;
BYTE KEY_4;
BYTE KEY_5;
BYTE KEY_6;
BYTE CNT_A;
BYTE CNT_B;
BYTE KEY_CNT;
BYTE LINE;
BYTE ROW;
BYTE VAL;
void INT_T0();
void SHIFTL();
void SHIFTR();
void DISP();
void DLY_S();
void DLY_L();
void ALARM_1();
void ALARM_2();
main()
{
START:
CNT_A=0x00;
CNT_B=0x00;
KEY_CNT=0x00;
LINE=0x00;
ROW=0x00;
VAL=0x00;
P10=1;
LED_BIT_1=0x00;
LED_BIT_2=0x00;
LED_BIT_3=0x00;
LED_BIT_4=0x00;
LED_BIT_5=0x00;
LED_BIT_6=0x00;
LED_BIT_7=0x79;
LED_BIT_8=0x73;
KEY_1=0x00;
KEY_2=0x00;
KEY_3=0x00;
KEY_4=0x00;
KEY_5=0x00;
KEY_6=0x00;
WORD_1=6;
WORD_2=5;
WORD_3=4;
WORD_4=3;
WORD_5=2;
WORD_6=1;
TMOD=1;
TH0=(65536-700)/256;
TL0=(65536-700)%256;
IE=0x82;
A0:
while(1)
{
DISP();
P3=0xF0;
if(P30)
{
DLY_S();
if(P30)
{
LINE=0x00; break;
}
}
else if(P31)
{
DLY_S();
if(P31)
{
LINE=0x01; break;
}
}
else if(P32)
{
DLY_S();
if(P32)
{
LINE=0x02; break;
}
}
else if(P33)
{
DLY_S();
if(P33)
{
LINE=0x03; break;
}
}
}//end while
while(1)
{
P3=0x0F;
if(P34)
{
ROW=0x00; break;
}
else if(P35)
{
ROW=0x01; break;
}
else if(P36)
{
ROW=0x02; break;
}
}
VAL=LINE*3+ROW;
if(VAL==0x0A)
{
if(KEY_CNT==0x00)
{
ALARM_1();
goto START;
}
else
{
SHIFTR();
KEY_CNT--;
while(1)
{
DISP();
if(P3==0x0F||P3==0xF0)
goto A0;
}
}
}
else
{
if(VAL==0x0B)
{
if(KEY_CNT==0x06)
{
if(WORD_1==KEY_1&&WORD_2==KEY_2&&
WORD_3==KEY_3&&WORD_4==KEY_4&&
WORD_5==KEY_5&&WORD_6==KEY_6)
{
P10=~P10;
DLY_L();
// LJMP FINI
}
else
{
ALARM_2();
goto START;
}
}
else
{
ALARM_1();
goto START;
}
}
else
{
KEY_CNT++;
if(KEY_CNT==0x07)
{
ALARM_1();
while(1)
{
DISP();
if(P3==0x0F||P3==0xF0)
goto START;
}
}
else
{
SHIFTL();
while(1)
{
DISP();
if(P3==0x0F||P3==0xF0)
goto A0;
}
}
}
}
}
void INT_T0() interrupt 1
{
P17=~P17;
TH0=(65536-700)/256;
TL0=(65536-700)%256;
CNT_A++;
if(CNT_A==30)
{
CNT_A=0;
CNT_B++;
if(CNT_B==20)
{
CNT_A=0;
CNT_B=0;
TR0=0;
}
}
}
void SHIFTL()
{
LED_BIT_6=LED_BIT_5;
LED_BIT_5=LED_BIT_4;
LED_BIT_4=LED_BIT_3;
LED_BIT_3=LED_BIT_2;
LED_BIT_2=LED_BIT_1;
LED_BIT_1=0x40;
KEY_6=KEY_5;
KEY_5=KEY_4;
KEY_4=KEY_3;
KEY_3=KEY_2;
KEY_2=KEY_1;
KEY_1=VAL;
}
void SHIFTR()
{
LED_BIT_1=LED_BIT_2;
LED_BIT_2=LED_BIT_3;
LED_BIT_3=LED_BIT_4;
LED_BIT_4=LED_BIT_5;
LED_BIT_5=LED_BIT_6;
LED_BIT_6=0x00;
KEY_1=KEY_2;
KEY_2=KEY_3;
KEY_3=KEY_4;
KEY_4=KEY_5;
KEY_5=KEY_6;
KEY_6=0x00;
}
void DISP()
{
P27=0;
P0=LED_BIT_8;
DLY_S();
P27=1;
P26=0;
P0=LED_BIT_7;
DLY_S();
P26=1;
P25=0;
P0=LED_BIT_6;
DLY_S();
P25=1;
P24=0;
P0=LED_BIT_5;
DLY_S();
P24=1;
P23=0;
P0=LED_BIT_4;
DLY_S();
P23=1;
P22=0;
P0=LED_BIT_3;
DLY_S();
P22=1;
P21=0;
P0=LED_BIT_2;
DLY_S();
P21=1;
P20=0;
P0=LED_BIT_1;
DLY_S();
P20=1;
}
void DLY_S()
{
BYTE i=10;
do
{
BYTE j=250;
do
{}while(--j);
}while(--i);
}
void DLY_L()
{
BYTE i=100;
do
{
BYTE j=100;
do
{
BYTE k=248;
do
{}while(--k);
}while(--j);
}while(--i);
}
void ALARM_1()
{
TR0=1;
while(TR0);
}
void ALARM_2()
{
TR0=1;
while(TR0);
DLY_L();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -