/*****************************************************
*任務要求
*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 ;
}
C51實現時鐘12MHz,使用定時器T1的方式1定時20mS ,做一個時分秒的電子鐘。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.