简单数码管电子钟的一个问题

伟博   2010-3-7 18:41 楼主
#include
#define uchar unsigned char
#define uint  unsigned int
char miao, shi,fen,tt;
uchar code table[8]={0x03,0x03,0xfd,0x03,0x03,0xfd,0x03,0x03};
uchar code table1[10]={0x03, 0x9f, 0x25, 0x0d, 0x99, 0x49, 0x41, 0x1f, 0x01, 0x09};
void delay(uint del)
{
uchar i, j;
for(i=0; i for(j=0; j<=148; j++);

}
//***************开机显示 00-00-00 *************
void init ()
{
   
  uchar i;
  for(i=0;i<8;i++)
  {
     
     P2=1<<(7-i);    //当i=0的时候,把你往左边移动7位。依次类推。
     P0=table;
     delay(5);
   }

}

//*****************时分秒的显示函数********************
void sec(uchar i)
{
   
   P2=0x01;
   P0=table1[i/10];
   delay(5);
   P2=0x02;
   P0=table[i%10] ;
   delay(5);
}

void min(uchar i)
{
   
   P2=0x08;
   P0=table1[i/10];
   delay(5);
   P2=0x10;
   P0=table[i%10] ;
   delay(5);
}
void hour(uchar i)
{
   
   P2=0x40;
   P0=table1[i/10];
   delay(5);
   P2=0x80;
   P0=table[i%10] ;
   delay(5);
}

void main()
{  
   TMOD=0X01;
   ET0=1;
   TR0=1;
   TH0=0x40;
   TL0=0x00;
   EA=1;
  
   while(1)
   {
      init();
   sec();
   min();
   hour();
}
}
//***************定时器函数***************************
void timer0() interrupt 1
{
   
   TH0=0x40;
   TL0=0x00;
   tt++;
   if(tt==20)
    {  
       tt=0;
       miao++;
       if(miao==59)
          {
     miao=0;
        fen++;
       if(fen==59)
          {
      fen=0;
         shi++;
      if(shi==24)
         shi=0;
    }
   
   }
   
  }

   
}
这是我写的一部分电子钟,不知道怎么调用 sec();
   min();
   hour();这3个函数,就是在定时器函数里面不会调用啊。

回复评论 (2)

C语言中子程序的调用:
例如,定义一个子程序如下:
void delay1ms(unsigned int count)
{
unsigned int i,j;
for(i=0;i     for(j=0;j<120;j++);
}
    主程序中调用时,只要一行命令:
delay1ms(10);
    括号里面的10就是调用子程序的参数。
    主程序中也可以这样调用:
unsigned int abc;
delay1ms(abc);
    括号里面的abc就是调用子程序的参数,注意abc格式必须和子程序的参数格式一致就可以了。当然不用参数也可以,子程序定义:
void delay1ms()
{
。。。
}
    主程序直接调用:
delay1ms();
点赞  2010-3-7 19:05
void main()
{  
  TMOD=0X01;
  ET0=1;
  TR0=1;
  TH0=0x40;
  TL0=0x00;
  EA=1;
    init(); 初始化一次就够了。没必要放在死循环里
  while(1)
  {      
  sec(miao);
  min(fen);
  hour(shi);
}
}
定时器里不用调用这三个函数,只是改变他们的实参miao, shi,fen就行了,然后在while中循环显示
点赞  2010-3-7 19:24
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复