微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 第4课 点亮发光管程序分析

第4课 点亮发光管程序分析

时间:12-01 来源:互联网 点击:

P1^0,然后让D1=0,最终实现了功能。一个灯会点亮,相信大家也会同点多个灯,如要让1、3、5、7灯亮时,按前面的方法程序应该写为:

例2 位操作法实现1、3、5、7灯亮

#include

sbit D1=P1^0;

sbit D3=P1^2;

sbit D5=P1^4;

sbit D7=P1^6;

void main()

{

D1=0;

D3=0;

D5=0;

D7=0;

}

这种方法当然可以实现1、3、5、7,但这种方法需要定义多个位变量,程序书写起来相对麻烦。下面给出另一个写法,如下:

例3 总线操作法实现1、3、5、7灯亮

#include

void main()

{

P1=0xaa;

}

这个程序同样可能实现把1、3、5、7灯点亮,也就是说程序的功能和上面位操作法写的程序是一样,但却要简单得多,这种方法就称为总线操作法。所谓的总线操作法也就是同时操作单片机P1口的8个引脚(或者说8个I/O口),具体到程序就是通过“P1=0xaa;”实现的, “0x”表示16进制的意思,16进制aa转化成2进制就是10101010,而10101010正好就是让单片机P1口的1、3、5、7引脚输出低电平,2、4、6、8引脚输出高电平,此时就实现让第1、3、5、7发光二极管发光。

把例3的程序下载到实验板上的现象如图13所示:

图13 总线操作法实现1、3、5、7发光二极管发光

在上面三个例子中,我们用两种方法(位操作法和总线操作法)实现点亮发光二极管的目的,目的是达到了,但如若仔细推敲两个程序,实际上是不完善的的。让我们看例三,程序第一句为头文件,是对52单片机一些特殊功能寄存器相关的声明,然后第二句进入主程序执行“P1=0xaa;”,点亮1、3、5、7发光二极管,但执行完这句后单片机又试干嘛呢?这之后我们没有写相关程序让单片机执行什么事情,所以程序执行到这里有可能出错(这里只是说有可能,因为每个编译器不一样),通过反复的实验,我们得出keil软件一般这里会回到主程序的第一句开始执行,也就是说又开始执行“P1=0xaa;”,周而复始,一直这样的执行下去,1、3、5、7发光二极管就一直会亮下去。但从程序开发角度来说,我们说这里就必须做相应的处理,明确告诉下一步程序要做什么事情。比如说我们就是要让主程序周而复始,反复的执行,此时我们就可以利用C语言中的while语句来实现,下面先讲下while语句。

格式:

While(表达式)
{
语句(内部也可为空)
}
特点:

先判断表达式,后执行语句。

原则:若表达式为不是0,即为真,则执行语句,如为0 ,即为假就跳出while 语句。

注意:while语句内部的语句可以为空,即什么也没有,此时就写成while(1){};此时{}可以不写,即写成while(1);意思就是永远为真,执行空语句,相当于程序永远停止在这里。

了解了while语句后,我们就可以把例三的程序进完善了,程序如例四。

例4:完整点亮发光二极管的程序

#include

void main()

{

While(1)

{

P1=0xaa;

}

}

While语句就介绍到这,下面总结一下,单片机软件的学习就是通过我们写程序,控制单片机外部引脚输出“1”(高电平+5V),和“0”(低电平0V),从而达到对各种外设的控制。单片机学习来并不难,只要大家有信心,肯花功夫,学起来也是很容易的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top