#include <AT89X51.h>
#include "intrins.h"
#include "math.h"
typedef unsigned int uint;
typedef unsigned char uchar;
#define DUAN P2_6
#define WEI P2_7
uchar Hour,Mint,Sec,Ms; //定義時,分,秒,毫秒變量static
uchar LED [8];
uchar code numtab []={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F} ; //共陰LED顯示字庫0-9
/*****************************************************
功能:T0中斷初始化
描述:T0模式1,10ms定時
參數:無
返回:無
*****************************************************/
void time0_init (void)
{
TMOD=0x1;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
EA=1;
ET0=1;
}
/*溢出閃爍提醒子程序(待寫)*/
void flash ()
{
}
/*****************************************************
功能:數據轉換
描述:將hour,min,sec,ms十六進制數據轉換為BCD碼
參數:無
返回:無
*****************************************************/
void to_bcd ()
{
LED [0]=Ms%10;
LED [1]=Ms/10;
LED [2]=Sec%10;
LED [3]=Sec/10;
LED [4]=Mint%10;
LED [5]=Mint/10;
LED [6]=Hour%10;
LED [7]=Hour/10;
}
/*****************************************************
功能:計數
描述:時,分,秒,毫秒 計數
參數:無
返回:無
*****************************************************/
void count ()
{
if (++Ms==100)
{
Ms=0;
if (++Sec==60)
{
Sec=0;
if (++Mint==60)
{
Mint=0;
if (++Hour==100) //計數溢出時停止計時,LED閃爍顯示FFFFFFFF
{
TR0=0;
flash ();
}
}
}
}
}
/*****************************************************
功能:T0中斷服務子程序
描述:T0模式1,10ms定時
參數:無
返回:無
*****************************************************/
void t0_init () interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
count ();
to_bcd ();
}
//延時子程序
void delay (uint i)
{
for (; i>0; i--);
}
void disp ()
{
uchar i,b=0x7f;
for (i=0; i<8; i++)
{
WEI=1;
P0=b;
WEI=0;
DUAN=1;
if (i==2 || i==4 || i==6) //2,4,6位加小數點
{
P0=numtab [LED ]|0x80;
}
else
P0=numtab [LED ];
DUAN=0;
b=_cror_(b,1);
delay (80); //延時1ms
}
}
/*****************************************************
功能:主函數
描述:無
參數:無
返回:無
*****************************************************/
void main (void)
{
time0_init (); //T0中斷初始化
TR0=1; //開始計時
while (1) //顯示
{
disp ();
} //紅色部份原來是只有一條 disp (); 導致程序跑飛!
}
原來是main函數沒有寫好,disp函數只被執行了第一次就沒有執行了,所以只顯示00 00 00 ,就不動了。 沒有實時顯示(這種錯誤系統怎么沒有提示呢?搞得我等菜鳥查錯查了半天~).
下一步來寫按鍵和溢出提示部份.
很好,頂一下
歡迎光臨 (http://m.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |