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

📄 main.c

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

typedef unsigned char BYTE;

#define TICK 10000
#define T100us 256-100

BYTE LEDBUF[6];
BYTE HOUR;
BYTE MINUTE;
BYTE SECOND;
BYTE C100us[2];		//计数值


BYTE code LEDMAP[]={0x3F,0x06,0x5B,0x4F,
					0x66,0x6D,0x7D,0x07,
					0x7F,0x6F,0x77,0x7C,
					0x39,0x5E,0x79,0x71};

void DELAY(BYTE in)
{
	BYTE i=0xFF;

	do
	{
		do
		{}while(--i);
	}while(--in);
}


void DISPLAYLED()
{
	BYTE data *point=LEDBUF;
	BYTE num=6;
	BYTE scan=0x7F;
	
	do
	{
		P0=0x00;
		P0=*point;
	   	P3=scan;
	   	DELAY(1);
		scan=_cror_(scan,1);
		point++;
	}while(--num);  
}

void T0INT() interrupt 1
{
	if(C100us[1]==0) C100us[0]--;	 
	C100us[1]--;

	if(C100us[0]|C100us[1])
	{
		return;
	}
	else
	{
		C100us[0]=TICK/256;
		C100us[1]=TICK%256;
		SECOND++;

		if(SECOND==60)
		{
			SECOND=0x00;
			MINUTE++;
			if(MINUTE==60)
			{
				MINUTE=0x00;
				HOUR++;
				if(HOUR==24)
				{
					HOUR=0x00;
				}
			}	
		}
	}
}

main()
{
	TMOD=0x02;
	TH0=T100us;
	TL0=T100us;
	IE=0x82;
	HOUR=0;
	MINUTE=0;
   	SECOND=0;
	C100us[0]=TICK/256;
	C100us[1]=TICK%256;
   	TR0=1;

	while(1)
	{
		LEDBUF[0]=LEDMAP[HOUR/10];
		LEDBUF[1]=LEDMAP[HOUR%10]|0x80;

		LEDBUF[2]=LEDMAP[MINUTE/10];
		LEDBUF[3]=LEDMAP[MINUTE%10]|0x80;

		LEDBUF[4]=LEDMAP[SECOND/10];
		LEDBUF[5]=LEDMAP[SECOND%10]|0x80;

		DISPLAYLED();
	}
}

⌨️ 快捷键说明

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