C51實現時鐘12MHz,使用定時器T1的方式1定時20mS ,做一個時分秒的電子鐘。

/*****************************************************
*任務要求
*1、時鐘12MHz,使用定時器T1的方式1定時20mS;
*2、對20mS計數50次產生1S;
*3、做一個時分秒的電子鐘。                  
*	
*作者:劉子琰
*時間:2020年3月28日10:13:41
******************************************************/       

#include < reg51.h >
#include <intrins.h>
typedef unsigned char u8;
u8 hour=0,minute=0,second=0;
void Display(u8 H,u8 M,u8 S);
/*********************************************************
  主函數
**********************************************************/
void  main()
{
	TMOD=0x10;   //定時/計數器1工作於方式1
	TH1=(65536-20000)/256;
	TL1=(65536-20000)%256;    //20ms定時常數

	EA=1;        //開總中斷
	ET1=1;       //允許定時/計數器1中斷
	TR1=1;       //啓動定時/計數器1中斷

	while(1){
		Display(hour,minute,second);
	}
} 



/*********************************************************
作用:定時器1中斷服務函數
形參:無
返回值:無
**********************************************************/
void Time1(void) interrupt 3 // using 0
{
	static u8 Timer_Count=0;
	TH1=(65536-20000)/256;
	TL1=(65536-20000)%256;    //20ms定時常數
	Timer_Count++;
	if(Timer_Count>=20){
		Timer_Count=0;
		second++;
		if(second>=60){
			second=0;
			minute++;
			if(minute>=60){
				minute=0;
				hour++;
				if(hour>=24){
					hour=0;
				}
			}
		}
	}
}

/*********************************************************
作用:時鐘顯示模塊(這裏只是一個說明,到時候自己可以寫一個數碼管)
形參:u8 hour,u8 minute,u8 second
返回值:無
**********************************************************/
void Display(u8 H,u8 M,u8 S){
	
	
	return ;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章