資源描述:
《C51單片機(jī) 定時器可調(diào)時鐘 程序》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、#include//包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義#defineKeyPortP3//定義按鍵端口#defineDataPortP0//定義數(shù)據(jù)端口程序中遇到DataPort則用P0替換sbitLATCH1=P2^2;//定義鎖存使能端口段鎖存sbitLATCH2=P2^3;//位鎖存unsignedcharhour,minute,second;//定義時分秒bitUpdateTimeFlag;//定義讀時間標(biāo)志unsignedcharcodedofly_DuanMa[
2、10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//顯示段碼值0~9unsignedcharcodedofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分別對應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮,即位碼unsignedcharTempData[8];//存儲顯示值的全局變量voidDelayUs2x(unsignedchart);//us級延時函數(shù)聲明voidDelayMs(unsignedchart);//m
3、s級延時voidDisplay(unsignedcharFirstBit,unsignedcharNum);//數(shù)碼管顯示函數(shù)unsignedcharKeyScan(void);//鍵盤掃描voidInit_Timer0(void);//定時器初始化/*------------------------------------------------主函數(shù)------------------------------------------------*/voidmain(void){unsignedcharnum;Ini
4、t_Timer0();while(1)//主循環(huán){num=KeyScan();switch(num){case1:hour++;if(hour==24)hour=0;//正常時間小時加1break;case2:hour--;if(hour==255)hour=23;//正常時間小時減1break;case3:minute++;if(minute==60)minute=0;//分鐘加1break;case4:minute--;if(minute==255)minute=59;//分鐘減1break;default:bre
5、ak;}if(UpdateTimeFlag==1){UpdateTimeFlag=0;TempData[0]=dofly_DuanMa[hour/10];//時//數(shù)據(jù)的轉(zhuǎn)換,因我們采用數(shù)碼管0~9的顯示,將數(shù)據(jù)分開TempData[1]=dofly_DuanMa[hour%10];TempData[2]=0x40;//加入"-"TempData[3]=dofly_DuanMa[minute/10];//分TempData[4]=dofly_DuanMa[minute%10];TempData[5]=0x40;Temp
6、Data[6]=dofly_DuanMa[second/10];//秒TempData[7]=dofly_DuanMa[second%10];}}}/*------------------------------------------------uS延時函數(shù),含有輸入?yún)?shù)unsignedchart,無返回值unsignedchar是定義無符號字符變量,其值的范圍是0~255這里使用晶振12M,精確延時請使用匯編,大致延時長度如下T=tx2+5uS------------------------------------
7、------------*/voidDelayUs2x(unsignedchart){while(--t);}/*------------------------------------------------mS延時函數(shù),含有輸入?yún)?shù)unsignedchart,無返回值unsignedchar是定義無符號字符變量,其值的范圍是0~255這里使用晶振12M,精確延時請使用匯編------------------------------------------------*/voidDelayMs(unsignedcha
8、rt){while(t--){//大致延時1mSDelayUs2x(245);DelayUs2x(245);}}/*------------------------------------------------顯示函數(shù),用于動態(tài)掃描數(shù)碼管輸入?yún)?shù)FirstBit表示需要顯示的第一位,如賦值2表示從第三個數(shù)碼管開始顯示如輸入0表示