点亮第一个发光二极管2
昨天因为STC-ISP的问题,折腾了一个晚上,所以昨天没有更新,今天多写一点
接上一篇笔记
按照之前的代码,如果我们要点亮多个发光二极管的时候,我们需要定义多个I/O口,那么显得及其麻烦,今天介绍一种总线操作法。
我们在原有的工程里面在新建一个文件,然后删掉原来的文件,因为一个工程中只能有一个主函数。
输入新的语句
#include <reg52.h> //52系列单片机头文件
void main()
{
P1=0xaa;
}
这里的P1=0xaa
是对单片机的8个I/O口同时进行操作。在前面的笔记中我们了解到,对于单片机来说,1和0代表着高电平和低电平,当某个I/O口为0,即低电平的状态下,对应的发光二极管就会发亮,这个原因是发光二极管一端连着单片机色I/O口,一端连着电阻,电阻的另一端连着Vcc,即电源,5V,为了让电流通过发光二极管,肯定要I/O口是低电平,即0。0xaa,是个十六进制数,转换成二进制数位10101010,这个二进制数从最小位开始对应P1^0口,所以这时候是1、3、5、7管亮,2、4、6、8管灭。如果想单单第一个发光二极管发亮,我们就应该输入P1=0xfe
,转换成二进制数就是,11111110,这时候,P1口为低电平,第一个二极管点亮。
总线操作法适用于同时控制多个端口的情况,但是要注意对每个口的控制是要在十六进制那个数中体现出来。
2.3 while语句
针对while语句,在C语言中已经大致了解了,这里就在强调几点
-
C语言中一般把“0”视为“假”,“非0”视为“真”,while的判断条件即“()”里面如果最后的结果是0或者判断为假,则不再执行while中的语句。
-
while的内部语句可以为空,就是“{}”里面的东西,有时候甚至这个花括号都可以省略。但是要注意,如果花括号省略了,必须要在“()”后面加一个分号,例如
while(1);
,否则系统会自动把紧跟着while的第一行代码当成while中的内容。 -
如果while的判断语句中只有一个1,那么单片机将一直执行while的内部语句