#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 image[] = {
0x7F,0x7F,0x7F,0x00,0xFF,0x00,0x7F,0x7F,0x37,0xF4,0xF2,0x06,0x76,0xF6,0xF7,0xFF,
0xFF,0xFF,0x7F,0x7F,0x7F,0x00,0xFF,0x00,0x7F,0x7F,0x37,0xF4,0xF2,0x06,0x76,0xF6,
0xF7,0xFF,0xFF,0x7D,0x7D,0x01,0x7D,0x7D,0xFF,0xFF,0x7F,0x03,0x7B,0x7B,0x03,0xFF,
0x03,0xFB,0xFB,0x03,0xFB,0xFB,0x03,0xFF,0xFF,0xFF,0xFF,0x61,0x6F,0x6F,0x01,0xFF,
0x81,0xBD,0xBD,0x81,0xFF,0x81,0xBF,0xBF,0x81,0xFF,0x81,0xF7,0xFB,0xFD,0xFF,0xFF,
0xFF,0xF5,0xF5,0xF5,0x01,0xFF,0x7F,0x07,0x77,0x77,0x07,0xFB,0xFB,0x01,0xFB,0xFB,
0xFF,0x01,0xF7,0xF7,0x07,0xFF,0x07,0x57,0x57,0x47,0xFF,0x03,0xEF,0xF7,0xFB
};
void main()
{
EA = 1;
ENLED = 0;
ADDR3 = 0;
TMOD = 0x01;
TH0 = 0xFC;
TL0 = 0x67;
ET0 = 1;
TR0 = 1;
while (1);
}
void InterruptTimer0() interrupt 1
{
static unsigned char i = 0;
static unsigned char tmr = 0;
static unsigned char index = 0;
TH0 = 0xFC;
TL0 = 0x67;
P0 = 0xFF;
switch (i)
{
case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image[index+0]; break;
case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image[index+1]; break;
case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image[index+2]; break;
case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image[index+3]; break;
case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image[index+4]; break;
case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image[index+5]; break;
case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=image[index+6]; break;
case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=image[index+7]; break;
default: break;
}
tmr++;
if (tmr >= 150)
{
tmr = 0;
index++;
if (index >= 104)
{
index = 0;
}
}
}
|