先贴上完整程序
#include<reg52.h>
#include<intrins.h>
#define LED P0
#define duan P2
sbit mi=P3^1;
sbit sh=P3^2;
sbit fe=P3^3;
unsigned char a,b,c,d,e,miao,fen,shi,jc;
int gewei,shiwei;
unsigned char code smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0XBF};
void delay(xms)
{
unsigned char i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void xianshi()
{
int i;
for(i=3;i>0;i--)
{
switch(i)
{case 3:gewei=shi%10;shiwei=shi/10;break;
case 2:gewei=fen%10;shiwei=fen/10;break;
case 1:gewei=miao%10;shiwei=miao/10;break;}
jc=duan;
LED=~smg[shiwei];
duan=jc+4;
delay(5);
LED=0X00;
jc=duan;
LED=~smg[gewei];
duan=jc+4;
delay(5);
LED=0X00;
jc=duan;
if(duan<28)
{LED=~smg[10];
duan=jc+4;
delay(10);
LED=0X00;
}
jc=duan;
}
duan=0x00;
}
void main()
{
TMOD=0x01;
EA=1;
ET0=1;
TH0=(65536-100)/256;
TL0=(65536-100%256);
TR0=1;
duan=0x00;
P1=0XFF;
while(1)
{
/*if(mi!=mi)
{
xianshi();
if(mi==0) miao=0;
}
if(fe!=fe)
{
xianshi();
if(fe==0) fen++;
}
if(sh!=sh)
{
xianshi();
if(sh==0) shi++;
}
if(b>9) c++;b=0;
if(c>99) miao++;c=0;
if(miao>59) fen++;miao=0;
if(fen>59) shi++;fen=0;
if(shi>23) shi=0; */
shi=24;
fen=58;
miao=59;
xianshi();
}
}
void
time() interrupt 1 using 3
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
a++;
if(a>99) b++;a=0;
}
我的代码之中,有两段duan的赋值函数,对应P2口,负责选择哪个数码管,
可是我发现其中两句居然是没有对应的汇编的,这是为什么。
在另外的一句中,是有对应的汇编的,我试过很多方法,都没办法产生对应的汇编,为什么会这样,
一周热门 更多>