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

📄 main.c

📁 《Proteus在MCS-51&ARM7系统中的应用百例》逆向之 Chapter 8 《Proteus在MCS-51&ARM7系统中的应用百例》MCS-51例子的C语言版本。 最
💻 C
字号:
#include <reg51.h>

typedef unsigned char BYTE;
typedef unsigned short WORD;

BYTE LINE;
BYTE ROW ;
BYTE VAL ;

sbit P10=P1^0;
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 code TABLE1[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
					0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};

WORD code TABLE2[]={64021,64103,64260,64400,
					4524, 64580,64684,64777,
					64820,64898,64968,65030,
					65058,65110,65157,65178};

void INT_T0() interrupt 1
{
	TH0=TABLE2[VAL]/0x100;
	TL0=TABLE2[VAL]%0x100;
	P10=~P10;	
}


void DELAY()
{
	BYTE i=10;
	do
	{
		BYTE j=250;
		do
		{}while(--j);
	}while(--i);
}



main()
{
	P0  =0x00;
	TMOD=0x01;
	
	while(1)
	{
		P3=0xF0;
	
		while(1)
		{
			if(P30)
			{
				DELAY();
		
				if(P30)
				{
					LINE=0x00;	break;
				}	
			}
			else if(P31)
			{
				DELAY();
		
				if(P31)
				{
					LINE=0x01;	break;
				}
			}	
			else if(P32)
			{
				DELAY();
		
				if(P32)
				{
					LINE=0x02;	break;
				}
			}		
			else if(P33)
			{
				DELAY();
		
				if(P33)
				{
					LINE=0x03;	break;
				}	
			}
		}
		
		P3=0x0F;
	
		while(1)
		{
			if(P34)
			{
				ROW=0x00;	break; 		
			}
			else if(P35)
			{
				ROW=0x01;	break;		
			}
			else if(P36)
			{
				ROW=0x02;	break;
			}
			else if(P37)
			{
				ROW=0x03;	break;
			}
		}
		/*CALCU*/
		VAL=ROW+LINE*0x04;
	
		TH0=TABLE2[VAL]/0x100;
		TL0=TABLE2[VAL]%0x100;
		IE=0x82;
		TR0=1;
		P0=TABLE1[VAL];
	
		while(1)
		{
			if(P3==0x0F||P3==0xF0)
				break;	
		}
	
		P0=0x00;
		TR0=0;
	}

}

⌨️ 快捷键说明

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