//以秒為單位計(jì)時(shí),最大值9999
#include"AT89x52.h"
#include"intrins.h"
#include"math.h"
#define uint unsigned int
#define uchar unsigned char
sbit DUAN=P2^0; //74HC573的LE端 U5 LED的段選端
sbit WEI=P2^1; //74HC573的LE端 U4 LED的位選端
uchar Temp[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共陰顯示字庫
uint DATA;
//=函數(shù)原型:init
//=功 能:初始化
//=參 數(shù):
//=返 回 值:
//=函數(shù)性質(zhì):私有函數(shù)
void init(void)
{
TMOD=0x01;
TCON=0x10;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
IE=0x82;
}
void wei_1(uchar wei)
{
WEI=1;
P0=wei;
WEI=0;
}
void duan_1(uchar duan)
{
DUAN=1;
P0=Temp[duan];
DUAN=0;
}
void jishuan(void)
{
uchar i;
uchar ge,shi,bai,qian;
init();
while(1)
{
ge=DATA%1000%100%10;//DATA從何而來?
shi=DATA%1000%100/10;
bai=DATA%1000/100;
qian=DATA/1000;
if(DATA<10)
{
duan_1(ge);
wei_1(0xfe);
}
if(DATA>=10&&DATA<100)
{
duan_1(ge);
wei_1(0xfd);
for(i=0;i<100;i++);
duan_1(shi);
wei_1(0xfe);
}
if(DATA>=100&&DATA<1000)
{
duan_1(ge);
wei_1(0xfb);
for(i=0;i<100;i++);
duan_1(shi);
wei_1(0xfd);
for(i=0;i<100;i++);
duan_1(bai);
wei_1(0xfe);
}
if(DATA>=1000)
{
duan_1(ge);
wei_1(0xf7);
for(i=0;i<100;i++);
duan_1(shi);
wei_1(0xfB);
for(i=0;i<100;i++);
duan_1(bai);
wei_1(0xfD);
for(i=0;i<100;i++);
duan_1(qian);
wei_1(0xfe);
}
for(i=0;i<100;i++);
}
}
void timer0() interrupt 1
{
uint i;//沒有賦值語句
if(i++>=1250) //這里的i是哪來得呢?
{
i=0;
if(DATA++>9999)DATA=0;//DATA也是來得莫名其妙
}
TH0=(65536-500)/256;
TL0=(65536-500)%256;
}
main()
{
jishuan();
}
//
程序說明的問題很簡單
但是兩個(gè)變量確怎么也搞不懂,明明沒有付初值呀
沒有賦值也能直接拿來用?
//=函數(shù)原型:init
//=功 能:初始化
//=參 數(shù):
//=返 回 值:
//=函數(shù)性質(zhì):私有函數(shù)
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |