#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个函数,就是在定时器函数里面不会调用啊。
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();
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中循环显示