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

📄 main.c

📁 Proteus实例集锦(包括电路图.仿真程序,各种各样的电路
💻 C
字号:
//*************************************************************************************************
//*************************************************************************************************
//**<程序名>:LED动态扫描显示																	 **
//**<功能>:LED动态显示1s计数。																	 **
//**<作者>:LastRitter																			 **
//**<完成时间>:2007年7月28日																	 **
//**<联系方式>:superyongzhe@163.com															 **
//*************************************************************************************************
//*************************************************************************************************


//*************************************************************************************************
//*																								  *
//*			 ******************************头文件及宏定义**************************				  *
//*																								  *
//*************************************************************************************************
#include "includes.h"

#define TIME0H 0xFC
#define TIME0L 0x18		//定时器0溢出时间:5ms,用于刷新LED。

#define TIME1H 0x40
#define TIME1L 0x98		//定时器1溢出时间:49ms,用于计时模式的计数增加。


//*************************************************************************************************
//*																								  *
//*			  ********************************全局变量******************************			  *
//*																								  *
//*************************************************************************************************

unsigned char uc_DisCount=1;		//定时器0定时刷新LED计数。

unsigned char uc_TimeCount=0;		//定时器1定时计数。

unsigned long ul_Number=0;			//LED显示数字。


//*************************************************************************************************
//*																								  *
//*			  ********************************主函数******************************				  *
//*																								  *
//*************************************************************************************************
void main()
{
	TMOD=0x11;		  //定时器0:模式一;定时器0:模式一.


//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器0,用于LCD刷新>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	TH0=TIME0H;
	TL0=TIME0L;
	TR0=1;			 //开启定时器0
	ET0=1;			 //开定时器0中断


//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器1,用于1s计时 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	TH1=TIME1H;
	TL1=TIME1L;
	TR1=1;			 //开启定时器1
	ET1=1;			 //开定时器1中断


	EA=1;			 //开启总中断

	while(1);
}


//*************************************************************************************************
//*																								  *
//*		*****************************定时器1中断,用于计时功能******************************	  *
//*																								  *
//*************************************************************************************************
void vTimer1(void) interrupt 3
{

		if(uc_TimeCount==19)
			{
			uc_TimeCount=0;
			ul_Number++;
			}
		else uc_TimeCount++;

	TH1=TIME1H;
	TL1=TIME1L;
}


//*************************************************************************************************
//*																								  *
//*		***************************定时器0,定时刷新LED*************************				  *
//*																								  *
//*************************************************************************************************
void vTimer0(void) interrupt 1
{
	vShowOneNum(*(pucLedNum(ul_Number)+uc_DisCount),uc_DisCount);	   //在LED上显示1位数字。

	if(uc_DisCount<5)
		uc_DisCount++;						//定时器0在每次被触发时,改变LED显示。
	else uc_DisCount=0;						//从第一位到第六位循环显示。

	TH0=TIME0H;		   						//恢复定时器0初始值。
	TL0=TIME0L;
}

⌨️ 快捷键说明

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