对流水灯的补充

在之前的博客里:在主函数里是这样的:

​
void main()
		{
			u8 i=0;
			while(1)
			{
				for(i=0;i<8;i++)
				{
					LED_PORT=~(0x01<<i);
					delay_10us(40000);
				}
			}


​

中的:


LED_PORT=~(0x01<<i);
​

0X指的是十六进制的前缀,不用管,就加在前面就行。

0x01<<i指的就是把01向左移i个单位

在这里一共有8个灯,序号分别为0 1 2 3 4 5 6 7(这里没指出顺序)

开始时是01,即第一个灯量

01指的就是0000 0001,i=1时,向左移动i个单位,即1,就0000 0010,然后第二个灯就亮了

之后就循环下去了,第八个亮了进行下一个循环了,又重新开始了一遍,

别忘了要取个反才能让灯逐个亮,要不然就是逐个灭

流水灯从左向右逐个亮起


那么如何让灯从8开始向左移动呢

首先肯定要改成右移>>,然后开始状态就得设置为只有第八个灯亮呗,就1000 0000呗,这个是80,所以就改成0x80即:

void main()
		{
			u8 i=0;
			while(1)
			{
				for(i=0;i<8;i++)
				{
					P2=~(0x80>>i);
					delay_10us(40000);
				}
			}

其他的都不需要改,i不需要改,还是从0到8传下去就可以

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值