main.c

来自「《Proteus在MCS-51&ARM7系统中的应用百例》逆向之 Chapter」· C语言 代码 · 共 99 行

C
99
字号
#include <reg51.h>
typedef unsigned char BYTE;

sbit DIN=P3^0;
sbit CLK=P3^1;

BYTE DBUF;
BYTE TEMP;

BYTE code K0TAB[]={ 0xFE,0xFD,0xFB,0xF7,       
					0xEF,0xDF,0xBF,0x7F};

BYTE code SEGTAB[]={0x3F,0x06,0x5B,0x4F,0x66,         
					0x6D,0x7D,0x07,0x7F,0x6F};


void DELAY()
{
	BYTE i=0x02;
	 
	do
	{
		BYTE j=0xF8;
		do
		{}while(--j);
	}while(--i);
}


void DISP(BYTE in)
{
	BYTE num=8;

	DBUF=in;

	TEMP=SEGTAB[DBUF];
	ACC=TEMP;

	do
	{
		#pragma asm
			RLC A
		#pragma endasm

		DIN=CY;
		CLK=0;
		CLK=1;
	}while(--num);	
}


BYTE KEY()
{
	BYTE key_i;
	BYTE key_j;
	BYTE temp;

	while(1)
	{
		do
		{
			do
			{
				P1=0xFF;
			}while(P1==0xFF);
			DELAY();

			temp=P1;
		}while(temp==0xFF);
				 		
		key_i=8;
		key_j=0;
	
		do
		{
			if(temp==K0TAB[key_j])
			{
				do
				{}while(P1!=0xFF);
				DELAY();
				return key_j;
			}
		
			key_j++;
		}while(--key_i);
	}
}


main()
{
	DBUF=16;

	while(1)
	{
		DISP(KEY());
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?