keil笔记:流水灯

我学习51单片机用的是清翔的51板,这个板集成度非常高,基本不用自己接线。

这个板是基于STC89C51的。

我们知道这个板上一共有8个LED,而一个字节有8位。

而LED对应得管脚是P1,

所以P1 = 0x00可以表示所有LED都亮。

P1 = 0x01表示除第一个灯外都亮。

...

以此类推,P1 = 0xFE表示除第一个亮都灭,也可以表示为~(0x01)。

 

在c语言中, << 表示左移一位,

那么,我们可以用P1 = 0x01 << 1表示第二个灭,

P1 = 0x01 << 2表示第三个灭,......

 

所以代码如下:

 1 #include<reg51.h>
 2 
 3 void main()
 4 {
 5     unsigned int i = 0;
 6     unsigned int cnt = 0;
 7     while(1)
 8     {
 9         P1 = ~(0x01 << cnt);
10         for(i = 0 ; i < 20000 ; i ++);
11         cnt ++;
12         if(cnt >= 8)
13         {
14             cnt = 0;
15         }
16     }
17 }

 

上一篇:0x01


下一篇:利用esp8266进行服务端与客户端之间的无线传输