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

📄 main.c

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

sbit LED_G1=P2^1;
sbit LED_Y1=P2^2;
sbit LED_R1=P2^3;

sbit LED_G2=P2^4;
sbit LED_Y2=P2^5;
sbit LED_R2=P2^6;

sbit P30=P3^0;
sbit P31=P3^1;

BYTE Second1;
BYTE Second2;
BYTE DBUF[4];	//显示码缓冲区1
BYTE TEMP[4];	
BYTE code LedMap[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,		
			 		0x7D,0x07,0x7F,0x6F,0x77,0x7C,		
			 		0x58,0x5E,0x7B,0x71,0x00,0x40};

void display()
{	
	BYTE dis_i;
	BYTE dis_j;
	BYTE offset;

	DBUF[3]=Second1/10;	
	DBUF[2]=Second1%10;	
	DBUF[1]=Second2/10;	
	DBUF[0]=Second2%10;
	
	dis_i=4;
	offset=0;
	do
	{
		TEMP[offset]=LedMap[DBUF[offset]];
		offset++;
	}while(--dis_i);

	dis_i=0x04;
	offset=0;

	do
	{	
		dis_j=0x08;
		ACC=TEMP[offset];

		do
		{

			#pragma asm
				RLC A
			#pragma endasm

			P30=CY;
			P31=0;
			P31=1;	
		}while(--dis_j);
		offset++;
	}while(--dis_i);
		
}

main()
{
	BYTE delay_count;	//延时次数
	BYTE second;
	BYTE flash;

	TMOD=0x01;
	TH0 =0x3C;
	TL0 =0xB0;
	TF0 =0;
	TR0 =1;
	P1  =0x00;

	while(1)
	{
		/******wait1******/
		delay_count=20;
		second=20;
		Second1=25;
		Second2=25;
		display();
		
		LED_G1=1;				
		LED_Y1=0;
		LED_R1=0;
		LED_G2=0;
		LED_Y2=0;
		LED_R2=1;

		do
		{
			do
			{	
				while(!TF0);
				TF0=0;
				TH0=0x3C;
				TL0=0xB0;
			}while(--delay_count);
	
			delay_count=20;
			Second1--;
			Second2--;
			display();
		}while(--second);


		/******wait2******/
		delay_count=5;
		second=3;
		flash=4;
		Second1=5;
		Second2=5;
		display();

		do
		{
			do
			{
				do
				{
					do
					{
						LED_Y1=0;
						LED_R1=0;
						LED_G2=0;
						LED_Y2=0;
						LED_R2=1;
					}while(!TF0);
					
					TF0=0;
					TH0=0x3C;
					TL0=0xB0;
				}while(--flash);
				LED_G1=~LED_G1;
				flash=4;
			}while(--delay_count);
			delay_count=5;

			Second1--;
			Second2--;
			display();

		}while(--second);
		

		/******wait3******/
		delay_count=20;
		second=2;
		Second1=2;
		Second2=2;
		display();
		
		do
		{
			do
			{
				do
				{
					LED_G1=0;
					LED_R1=0;
					LED_G2=0;
					LED_Y2=0;
					LED_R2=1;			
					LED_Y1=1;
				}while(!TF0);
								
				TF0=0;
				TH0=0x3C;
				TL0=0xB0;
			}while(--delay_count);			
			delay_count=20;
			Second1--;
			Second2--;
			display();

		}while(--second);

		/******wait4******/
		delay_count=20;
		second=20;
		Second1=25;
		Second2=25;
		display();

		do
		{
			do
			{
				do
				{
					LED_G1=0;
					LED_Y1=0;
					LED_R1=1;			
					LED_G2=1;			
					LED_Y2=0;
					LED_R2=0;
				}while(!TF0);
				
				TF0=0;
				TH0=0x3C;
				TL0=0xB0;
			}while(--delay_count);

			delay_count=20;
			Second1--;
			Second2--;
			display();
		}while(--second);

		/******wait5******/
		delay_count=5;
		second=4;
		flash=3;

		Second1=5;
		Second2=5;
		display();

		do
		{
			do
			{
				do
				{
					do
					{
						LED_G1=0;
						LED_Y1=0;
						LED_R1=1;			
						LED_Y2=0;
						LED_R2=0;
					}while(!TF0);

					TF0=0;
					TH0=0x3C;
					TL0=0xB0;
				}while(--second);

				LED_G2=~LED_G2;
				second=4;
			}while(--delay_count);
			delay_count=5;
			Second1--;
			Second2--;
			display();
		}while(--flash);


		/******wait6******/
		delay_count=20;
		second=2;
		Second1=2;
		Second2=2;
		display();

		do
		{
			do
			{
				do
				{
					LED_G1=0;
					LED_Y1=0;
					LED_R1=1;				
					LED_G2=0;
					LED_R2=0;
					LED_Y2=1;
				}while(!TF0);

				TF0=0;
				TH0=0x3C;
				TL0=0xB0;
			}while(--delay_count);
			delay_count=20;
			Second1--;
			Second2--;
			display();
		}while(--second);
	}
}

⌨️ 快捷键说明

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