#include<reg52.h>
sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;
unsigned char code LedChar[] = {
0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};
void main()
{
unsigned char i = 0;
unsigned long l = 0;
ENLED = 0;
ADDR3 = 1;
while (1)
{
l = 129016;
switch (i)
{
case 0: P0 = LedChar[l % 10]; ADDR2 = 0; ADDR1 = 0; ADDR0 = 0; i++;
case 1: P0 = LedChar[l / 10 % 10]; ADDR2 = 0; ADDR1 = 0; ADDR0 = 1; i++;
case 2: P0 = LedChar[l / 100 % 10]; ADDR2 = 0; ADDR1 = 1; ADDR0 = 0; i++;
case 3: P0 = LedChar[l / 1000 % 10]; ADDR2 = 0; ADDR1 = 1; ADDR0 = 1; i++;
case 4: P0 = LedChar[l / 10000 % 10]; ADDR2 = 1; ADDR1 = 0; ADDR0 = 0; i++;
default: P0 = LedChar[l / 100000 % 10]; ADDR2 = 1; ADDR1 = 0; ADDR0 = 1; i = 0;
}
}
}
为什么采用上方代码,不需要delay函数也可以消影。