目标:编一个流水灯
先贴上代码:
这里有一个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)
再来看看电路原理图:
led模块
从发光二极管就可以看出P2端口要是0才能使其发光,所以在这里是不是豁然开朗了?这就是我们要位移的原因,
第一种就是把0不断的往高位移使灯一个接一个亮。
第二种也是一样思路.
其实我们还可以把P2的每个端口的sbit下,但太耗端口,不推荐