标题: [求助]这个程序看不懂,高手求助下 [打印本页]

作者: lijianhyan    时间: 2009-4-8 18:42
标题: [求助]这个程序看不懂,高手求助下

//以秒为单位计时,最大值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();
}
//

程序说明的问题很简单

但是两个变量确怎么也搞不懂,明明没有付初值呀

没有赋值也能直接拿来用?


作者: zyyzwx    时间: 2009-4-9 08:40
uint DATA;

//=函数原型:init
//=功    能:初始化
//=参    数:
//=返 回 值:
//=函数性质:私有函数


大哥你好好看看啊
人家不是定义了吗?
作者: lijianhyan    时间: 2009-4-9 19:22
谢谢大哥的回复
定义了没错 ,可是它的值从哪里来得呢?

作者: qq371833846    时间: 2009-4-9 21:52
初值默认为0




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1