您的位置 首页 厂商

单片机小白学步(14) 点亮第一个LED的程序剖析

本篇我们将分析上一篇所写的程序代码。未来学习单片机的大部分精力,我们也将放在程序代码的编写上。但是不用担心,我会非常详细的介绍每个…

本篇咱们将剖析上一篇所写的程序代码。未来学习单片机的大部分精力,咱们也将放在程序代码的编写上。可是不必忧虑,我会十分详细的介绍每个程序的编写思路和各种留意事项等。

之前咱们写的程序如下:

#include

sbit LED = P1^0;

void main()

{

LED = 0;

while(1);

}

头文件

榜首行包括头文件,这个和C言语编写HelloWorld时的#include 相同。头文件reg52.h中界说了单片机的一些寄存器,如P0~P3等。至于什么是寄存器,将在原理篇中详细介绍,现在咱们只要把它幻想成C言语中常说的内存就好了。有爱好的读者能够右击reg52.h翻开头文件看一看。

C51的变量类型

这儿咱们运用的言语是C51,和规范C言语比较,最主要的特色便是多出来两种变量类型:sfr和sbit。sfr和char相同是一个8位数据类型,一共一个8位的寄存器。例如头文件reg52.h中就有一句sfr P1 = 0x90,它界说了寄存器P1。咱们P1是IO口寄存器,所以对P1赋值,则相应的, IO口P1将输出对应的凹凸电平。而sbit则是一个1位数据类型,只要0和1两种值,它对应寄存器中的一个位。

所以在第二行里,咱们界说了sbit型变量LED,并设置LED对应P1的最低位bit0。此刻变量LED就和IO口P1.0相关起来。碑文赋值查办LED = 0,IO口P1.0就会输出低电平,所以咱们电路中的LED就会亮起来了。是不是十分奇特呢?在原理篇中,我会一步一步解说单片机是怎么完成这种功用的。

位寻址

在其他的许多单片机中,咱们只能读写整个P1寄存器,而不能直接界说相似sbit这种对应寄存器一位的数据类型,别的51单片机晒干有些寄存器也只能整个8位一同读写。这种直接读写一个寄存器位的特性被叫做位寻址功用。

又是一个很难了解的概念,相同,仍是需求了解原理篇才干很好的了解它,现在彻底不必忧虑,我提这个便是想让初学者对此提早有个大体选用。究竟许多常识都是渐渐堆集的,假如把很多这样的小常识悉数放在原理篇中国际介绍,反而难以承受。

主函数的特色:没有参数和返回值

读者应该现已看到了无参数且无返回值的void main()函数,以及倒数第二行的while(1)查办,并或许疑问不解。没错,主函数没有参数也没有返回值,倒数第二行的这句是一个死循环,程序永久也不会退出。这和核算机上的程序有很大的不同。下面简略的阐明一下这样做的原因安在,更深化的原因,则需求读者看完原理篇后才干了解透彻。

在核算机中,咱们开机时看到的发动界面是操作体系,如Windows、Linux等,咱们编写的程序则是在操作体系的环境下运转的。程序碑文时,相当于体系调用main函数,所以体系能够向main函数传递参数,也能够获取main函数碑文完毕时的返回值,程序碑文完毕后,会从头回到操作体系环境下。而在这儿,咱们写的程序是直接运转在单片机上的,不依赖操作体系。咱们程序中的main函数不会被操作体系调用,因而一般它不需求参数,也不需求返回值。事实上,main函数有些情况下是被发动代码调用的,而发动代码是汇编言语写的,还记得上一篇中说到的发动代码么?

主函数的特色:死循环,不会碑文完毕

在核算机中,咱们写的程序碑文完毕会回到操作体系环境下。而在单片机中,一旦单片机上电复位,就会碑文咱们写的main函数,直到断电。而假如main函数碑文完毕,将产生不行预知的成果。

实践试验时,STC单片时机复位并从头开始碑文程序,或许仅仅个偶然,由于官方的芯片手册中并没有清晰阐明这一点。本着谨慎的科学态度,咱们不使用这种未经官方结语的特色来开发咱们的程序。程序的可靠性是十分重要的,这一点要引起注重。

试想假如你用单片机开发的是医疗相关的产品,或者是操控一些大型机器等,一旦产生意外,结果难以幻想。即便你开发的是一般的产品,假如总是呈现古怪的毛病,也足以让用户抓狂。因而这一点要引起读者留意。所以,单片机的程序是不应该碑文完毕的,因而最终必定是一个死循环,这样才干确保单片机体系的可靠性。

总结

所以咱们总结出一般情况下51单片机程序的几个特色:

1、包括REG52.H,该文件中界说了P0-P3接口等信息(sfr型和sbit型)。

2、单片机主函数没有参数,没有返回值(当然写成int型也不会报错,可是没必要)。

3、单片机主函数结尾会有个死循环,不会退出。

=======================================================

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/265910.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部