1. 程式人生 > >KST-51:點陣橫向移動顯示IG!

KST-51:點陣橫向移動顯示IG!


#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 image[17][8]=
{
{0xFF,0x83,0xEF,0xEF,0xEF,0xEF,0x83,0xFF},	 
{0xFF,0xC1,0xF7,0xF7,0xF7,0xF7,0xC1,0xFF},
{0xFF,0xE0,0xFB,0xFB,0xFB,0xFB,0xE0,0xFF},
{0xFF,0xF0,0x7D,0x7D,0x7D,0x7D,0xF0,0xFF},
{0xFF,0x78,0xBE,0xBE,0xBE,0xBE,0x78,0xFF},
{0xFF,0x3C,0xDF,0xDF,0x5F,0xDF,0x3C,0xFF},
{0xFF,0x1E,0xEF,0xEF,0x2F,0x6F,0x1E,0xFF},
{0xFF,0x0F,0xF7,0xF7,0x17,0xB7,0x8F,0xFF},
{0xFF,0x87,0xFB,0xFB,0x0B,0x5B,0x47,0xFF},
{0xFF,0xC3,0xFD,0xFD,0x85,0xAD,0xA3,0xFF},
{0xFF,0xE1,0xFE,0xFE,0xC2,0xD6,0xD1,0xFF},
{0xFF,0xF0,0xFF,0xFF,0xE1,0xEB,0xE8,0xFF},
{0xFF,0x78,0x7F,0x7F,0x70,0xF5,0x74,0xFF},
{0xFF,0xBC,0xBF,0xBF,0xB8,0xFA,0xBA,0xFF},
{0xFF,0xDE,0xDF,0xDF,0xDC,0xFD,0xDD,0xFF},
{0xFF,0xEF,0xEF,0xEF,0xEE,0xFE,0xEE,0xFF},
{0xFF,0xF7,0xF7,0xF7,0xF7,0xFF,0xF7,0xFF}
};

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;P0=image[index][0];i++;break;   
		case 1:ADDR2=0;ADDR1=0;ADDR0=1;P0=image[index][1];i++;break;   
		case 2:ADDR2=0;ADDR1=1;ADDR0=0;P0=image[index][2];i++;break;
		case 3:ADDR2=0;ADDR1=1;ADDR0=1;P0=image[index][3];i++;break;
		case 4:ADDR2=1;ADDR1=0;ADDR0=0;P0=image[index][4];i++;break;
		case 5:ADDR2=1;ADDR1=0;ADDR0=1;P0=image[index][5];i++;break;
		case 6:ADDR2=1;ADDR1=1;ADDR0=0;P0=image[index][6];i++;break;
		case 7:ADDR2=1;ADDR1=1;ADDR0=1;P0=image[index][7];i=0;break;
		default:break;
	}
	tmr++;
	if(tmr>=250)
	{
		tmr=0;
		index++;
		if(index>=17)    
           	{
			index=0;
		}
	}
}