⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 《Proteus在MCS-51&ARM7系统中的应用百例》逆向之 Chapter 8 《Proteus在MCS-51&ARM7系统中的应用百例》MCS-51例子的C语言版本。 最
💻 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 + -