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

📄 main.c

📁 《Proteus在MCS-51&ARM7系统中的应用百例》逆向之 Chapter 8 《Proteus在MCS-51&ARM7系统中的应用百例》MCS-51例子的C语言版本。 最
💻 C
字号:
#include <reg51.h>
typedef unsigned char BYTE;
  
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 T_COUNT;
BYTE KEY_CNT;
BYTE LINE;
BYTE ROW;
BYTE VAL;

sbit P10=P1^0;

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

 

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

void INT_T0() interrupt 1
{
	TH0=(65536-700)/256;
	TL0=(65536-700)%256;
	P10=~P10;	
}

void SHIFT(BYTE in)
{
	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=LED_BIT_7;
	LED_BIT_7=LED_BIT_8;
	LED_BIT_8=in;	
}

void DISP()
{
	P27=0;
	P0=LED_BIT_8;
	DELAY();
	P27=1;

	P26=0;
	P0=LED_BIT_7;
	DELAY();
	P26=1;

	P25=0;
	P0=LED_BIT_6;
	DELAY();
	P25=1;

	P24=0;
	P0=LED_BIT_5;
	DELAY();
	P24=1;

	P23=0;
	P0=LED_BIT_4;
	DELAY();
	P23=1;

	P22=0;
	P0=LED_BIT_3;
	DELAY();
	P22=1;

	P21=0;
	P0=LED_BIT_2;
	DELAY();
	P21=1;

	P21=0;
	P0=LED_BIT_1;
	DELAY();
	P21=1;
}



main()
{
START:
	T_COUNT=0x00;
	KEY_CNT=0x00;
   	LINE=0x00;
	ROW=0x00;
   	VAL=0x00;

	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=0x00;
	LED_BIT_8=0x00;

A0:	while(1)
	{
		DISP();
		P3=0xF0;

		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;
			}
		}
	}//end while

	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;
		}
	}//end while

	KEY_CNT++;
	if(KEY_CNT==9)
	{
		TMOD=0x01;
		TH0=(65536-700)/256;
		TL0=(65536-700)%256;
		IE=0x82;
		TR0=1;

		while(1)
		{
			if(P3==0x0F||P3==0xF0)
			{
				P0=0x00;
				TR0=0;
				goto START;
			}
		}
	}

	if(KEY_CNT==1)
	{
		VAL=LINE*4+ROW;
		LED_BIT_8=TABLE[VAL];

		while(1)
		{
			DISP();
			if(P3==0x0F||P3==0xF0)
			{
				goto A0;
			}
		}	
	}
	else
	{
		VAL=LINE*4+ROW;
		SHIFT(TABLE[VAL]);
		
		while(1)
		{
			DISP();
			if(P3==0x0F||P3==0xF0)
			{
				goto A0;
			}
		}		
	}
}

⌨️ 快捷键说明

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