如何用8位数码管显示秒表

如题所述

第1个回答  2014-04-13
Second EQU30H
ORG 0
START: MOVSecond,#00H
NEXT: MOVA,Second
MOVB,#10
DIV AB
MOV DPTR,#TABLE
MOVCA,@A+DPTR
MOV P0,A
MOV A,B
MOVCA,@A+DPTR
MOV P2,A
LCALL DELY1S
INCSecond
MOV A,Second
CJNE A,#60,NEXT
LJMPSTART
DELY1S: MOVR5,#100
D2: MOV R6,#20
D1: MOVR7,#248
DJNZ R7,$
DJNZ R6,D1
DJNZR5,D2
RET
TABLE: DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
C语言源程序
#include <AT89X51.H>
unsigned char codetable[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char Second;

void delay1s(void)
{
unsigned char i,j,k;
for(k=100;k>0;k--)
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}

void main(void)
{
Second=0;
P0=table[Second/10];
P2=table[Second%10];
while(1)
{
delay1s();
Second++;
if(Second==60)
{
Second=0;
}
P0=table[Second/10];
P2=table[Second%10];
}
}本回答被提问者采纳
第2个回答  2014-04-11
秒表,那有用八位数数码管的?

这得用多少时间,才能显示到第八位呀?