单片机小白学习之路(五)---编一个流水灯

本文介绍了一种使用C语言实现流水灯效果的方法。通过位操作和循环移位函数(如crol),可以依次点亮LED灯。文章详细解释了两种实现方式,并讨论了其背后的电路原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标:编一个流水灯

先贴上代码

13367077-a457b23627b4b3e0.PNG

这里有一个c语言的小技巧:程序不执行#if0至#endif之间的程序,相当于注释掉了,执行#if1至#endif之间的。


上图有两种方法来弄出流水灯。


第一种是#if0里面的:

0xfe是十六进制数,变成二进制是1111 1110.

~0xfe是取反的意思,二进制是0000 0001.

~0xfe<<1 是左移一位的意思,二进制是0000 0010

然后~0xfe再次取反 ,二进制是1111 1101


第二种是#if1里面的:

-crol- 是<intrins.h>里面包含的函数,意思是左移n位,-crol-(0xfe,n)

-cror-是<intrins.h>里面包含的函数,意思是右移n位,-cror-(0xfe,n)



再来看看电路原理图

13367077-b497bc199ab979be.PNG
led模块

从发光二极管就可以看出P2端口要是0才能使其发光,所以在这里是不是豁然开朗了?这就是我们要位移的原因,

第一种就是把0不断的往高位移使灯一个接一个亮。

第二种也是一样思路.


其实我们还可以把P2的每个端口的sbit下,但太耗端口,不推荐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值