原理分析:什么是跑马灯
(1)跑马灯和流水灯非常像,不同的是:流水灯是8颗LED其中7灭1亮,亮的在移动;跑马灯是8颗LED7亮1灭,灭的在移动。01111111 0x7f 10000000
10111111 0xbf 01000000
11011111 0xdf 00100000
(2)编程实现跑马灯,必须用到C语言的2种技巧:左移(右移)、按位取反;
C语言中~这个符号表示对一个数字按位取反,譬如一个数01111111按位取反后变成了10000000。而11011111按位取反后变成了00100000
相反 01 左移
例程:
#include<reg51.h>
void delay(void)
{
unsigned char i = 100;
unsigned char j = 100;
while(i--)
{
while(j--);
}
} //延时函数
void main(void)
{
unsigned char i = 0;
unsigned char initial_value = 0x80;
while(1)
{
for(i = 0; i < 8; i++)
{
P0 = ~(initial_value>>i);
delay();
}
}
}