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

📄 24htimer.c

📁 用单片机做的一个时钟
💻 C
字号:
//单协第三次课Demo版
//2006-5-19

#include "AT89X51.H"

typedef  struct TIME                              
{                                                   
		unsigned char Hour ;
        unsigned char Minute ;
        unsigned char Second ;
        unsigned int mSecond ;
        
} TIME ;
TIME Timer ;

unsigned char DisBuff[ 8 ];
unsigned char LedP;
unsigned char code LedCode[]={
						0x3f,0x06,0x5b,
						0x4f,0x66,0x6d,
						0x7d,0x07,0x7f,
						0x6f,0x40
							} ;


void DelayXms(unsigned int X)  {
	unsigned char n ;
	while( X-- )  {
		for( n= 0; n< 124; n++ ) {
		}
	}
}


//
// 每2ms执行一回中断的中断程序, 实现LED数码管动态显示
//
void ISR_Timer0(void) interrupt 1   
{                                

	TL0= ( 65536-2000 ) % 256 ;
	TH0= ( 65536-2000 ) / 256 ;


	P2= 1<<LedP ; 

	P0= LedCode[ DisBuff[ LedP ] ] ;
	LedP++ ;
	if( LedP ==8 ) LedP= 0;

	Timer.mSecond++ ;

	if( Timer.mSecond< 500 )
		return ;

	Timer.mSecond= 0 ;
	Timer.Second++ ;

	if( Timer.Second< 60 )
 		return ;

	Timer.Second= 0 ;
	Timer.Minute++ ;

	if( Timer.Minute< 60 )
		return ;

	Timer.Minute= 0 ;
	Timer.Hour++ ;
	if( Timer.Hour< 24 )
		return;

	Timer.Hour= 0 ;
}

void LedShow( void )
{
	DisBuff[0]= Timer.Second%10;
	DisBuff[1]= Timer.Second/10;


	DisBuff[3]= Timer.Minute%10 ;
	DisBuff[4]= Timer.Minute/10 ;


	DisBuff[6]= Timer.Hour%10 ;
	DisBuff[7]= Timer.Hour/10 ;
}


void InitSet(void)
{
	DisBuff[ 2 ] = 10;
	DisBuff[ 5 ] = 10;	

	TMOD= 0x01 ;		// 模式配置,time0 16位计数方式
	TH0= ( 65536-2000 ) / 256 ;
	TL0= ( 65536-2000 ) % 256 ;
	TR0= 1 ;			// time0 计数开始
	ET0= 1 ;			// 允许产生中断

	EA= 1 ;				// 总中断有效
}



void  main( void )
{
	InitSet( );
	while(1)
	{	
		LedShow( );
		DelayXms( 50 );

	} 
}

⌨️ 快捷键说明

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