为什么数码管显示不出来,换别的程序验证硬件连接没问题。
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code table2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
void display();
void delay(uint t);
void time_init();
void time_pro();
uint miao=0; //秒
uint fen=0; //分
uint shi=0; //时
uint n=0; //计数
/***********************************
延时函数
***********************************/
void delay(uint t)
{
uchar i;
while(t--)
{ for(i=0;i<125;i++); }
}
/***********************************
显示函数
***********************************/
void display()
{
P2=0x01;
P0=table1[shi/10];
delay(4);
P0=0x00;
P2=0x02;
P0=table2[shi%10];
delay(4);
P0=0x00;
P2=0x04;
P0=table1[fen/10];
delay(4);
P0=0x00;
P2=0x08;
P0=table2[fen%10];
delay(4);
P0=0x00;
P2=0x10;
P0=table1[miao/10];
delay(4);
P0=0x00;
P2=0x20;
P0=table1[miao%10];
delay(4);
P0=0x00;
}
/***********************************
定时器初始化函数
***********************************/
void time_init()
{
TMOD=0x01; //选择方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //开定时器0
}
/***********************************
计时处理函数
***********************************/
void time_pro()
{
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
}
}
}
}
/***********************************
定时器中断函数
***********************************/
void timer() interrupt 1 //定时器0中断
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
n++;
if(n==20) //当n=20时,表示1s到了
{
n=0;
miao++;
}
}
/***********************************
主函数
***********************************/
void main()
{
time_init();
while(1)
{
time_pro();
display();
}
}
|