#include
unsigned char code seg[] = {0xFE,0xFB,0xEF,0xBF, //0表示亮
0x7F,0xDF,0xF7,0xFD,
0xAA, 0x55,
0xE7, 0xDB, 0xBD, 0x7E,
0x3C, 0x18, 0x00
};
//只能粗略延时2n+6,若想精确则用汇编语言或者定时器
void DelayUs2x(unsigned char n)
{
while(n--);
}
void DelayMs(unsigned char n)
{
while(n--)
{
DelayUs2x(245);
DelayUs2x(245);
}
}
void main()
{
unsigned char i,w; //定义一个无符号字符型
//局部变量 i 取值范围 0~255
while(1)
{
P1 = 0xFE; //第1个LED亮,依次向右点亮
for(i = 0; i < 8; i++)
{
DelayMs(200);
P1 <<=1;
}
P1 = 0x7F; //第8个LED亮,依次向左点亮
for(i = 0; i < 8; i++)
{
DelayMs(200);
P1 >>=1;
}
for(i = 0, w = 0x01; i < 8; i++) //一个一个亮,依次向右
{
P1 = ~w;
DelayMs(200);
w <<= 1;
}
for(i = 0, w = 0x80; i < 8; i++) //一个一个亮,依次向左
{
P1 = ~w;
DelayMs(200);
w >>= 1;
}
//下面通过查表方法获得花样参数
for(i = 0; i < 18; i++)
{
DelayMs(200);
P1 = seg[i]; //花式点亮
}
}
}