//以秒为单位计时,最大值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;
//=函数原型:init
//=功 能:初始化
//=参 数:
//=返 回 值:
//=函数性质:私有函数
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();
}
//
程序说明的问题很简单
但是两个变量确怎么也搞不懂,明明没有付初值呀
没有赋值也能直接拿来用?
//=函数原型:init
//=功 能:初始化
//=参 数:
//=返 回 值:
//=函数性质:私有函数
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |