第4课 点亮发光管程序分析
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),从而达到对各种外设的控制。单片机学习来并不难,只要大家有信心,肯花功夫,学起来也是很容易的。
{
语句(内部也可为空)
}
特点:
点亮发光管程序分析单片 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)