对于这种一行灯的情况,个人喜欢列一个数组出来,数组里的一个数代表一个灯,0代表熄灭,1代表亮起。
然后写一个函数,循环读取数组中灯的状态。
按照题主的要求,只要定时改变这个数组的取值就可以了。
这种的话,分情况
1,如果灯超过8个,就要加一个74595芯片,实现串行转并行,以节省io口
2,灯不超过8个,可以直接接到普通io口,最好选择同一组,比如p1,p2
写程序的,无非就是操作寄存器,将每种状态对应的寄存器的值写入相应寄存器,然后每隔几ms就写入下一状态对应的值
設 8個燈
for ( i=0;i<4=;i++)
P1 |= ( (0x01<<i) | (0x80>>i); // 00000001 | 10000000
{
P1 &= ( (0xF7<<i) ; //11110111
P1 &= (0xEF>>i); //11101111
}