通过第1章的学习,读者能够实现接在P0口的8个指示灯中任意灯的点亮操作。本章要求我们除了点亮各种形式的灯外,还要求实现切换、循环等操作。作为复习,请读者结合第1章的内容以灌电流驱动方式,使用P0口连接8个发光二极管,在下面的方框中绘制电路原理图。
对模式1,要全部点亮,我们可以定义8个指示灯,然后依次输出低电平(0)即可。但你是否想过,如果要控制更多的指示灯,如16个、32个,是不是要分别进行16个或32个定义,然后写16个或32个“0”呢?事实上,如果把一个一个指示灯单独的定义称为“位操作”,我们可以使用对整个字节(8个位)进行操作,一次性实现对8个灯的控制,这称为“字节操作”。明显地,使用“字节操作”、编程效率将大大提升。位操作与字节操作的对比如图2-1所示。
图2-1 位操作与字节操作的对比
对模式2,只要在while(1)死循环中,一会全部点亮(模式1已实现),一会全部熄灭(I/O口全部输出高电平),就能够实现循环闪烁。循环闪烁示意图如图2-2所示。但问题是:如何实现“一会”这个时间间隔?
想一想
如果不产生时间间隔,我们的肉眼能看到灯光在闪烁吗?(www.xing528.com)
图2-2 循环闪烁示意图
对其他模式,通过前面的学习,我们会点亮8个灯中的任意组合,在模式2的基础上,我们也学会产生“一会”的时间间隔,但当某个模式的一个循环有多种状态时,将会出现多个“状态n——时间间隔——状态n+1”形式,某个有多种状态的模式示意图如图2-3所示。试想如果某个模式有16个状态、32个状态呢?那么有没有办法使程序变为简洁呢?
图2-3 有多个状态的模式示意图
综上所述,通过本章的学习,我们将重点掌握循环结构、数组等内容,并在实践中不断熟练掌握Keil软件的使用,重视并养成良好的编程规范。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。