跟家电维修工深入浅出学单片机编程入门《三》
编辑时间:2018-06-30 作者:LCDHOME论坛 浏览量:2100 来源:LCDHOME论坛

学单片机,就要用到编译软件"keil",即所谓的IDE集成开发环境,说白了就是集编译、调试、仿真等等功能为一体的一条龙8051开发软件,这个大家可在网上下载,一般有2K的限制。

  编译:我们编写程序用到的大部分是英文的26个字母,可是单片机是不认识的,它只认识0和1二进制代码。这就好像我们对一个外国人说话,必须找一个翻译来,这个任务"keil"就可完成。

  调试我就不说了。

  仿真:即在电脑上模仿真实环境运行。就是用软件来代替你亲自动手做实验。这个的好处是你不用买电子元件,不用你动手焊接就能做实验,缺点是仿真成功的东西在实际上就不一定100%成功,还得修改部分内容。

 


程序的组成:

  我们知道:

  一个个体小厂,一个老板,只有几个工人就干起来了,手下没必要设立那么多管理人员,否则会造成十八口人乱当家、生产效率低下的现象。

  一个大型工厂,有成千上万工人,一个老板是忙不过来的,他下面会设立好多管理部门和相应的管理人员。这样各司其责,老板非常好管理,有什么事情老板找来相应的管理部门的头头说一下就行了。

  我们写程序,间单的就有一个主函数(即主程序),这相当于一个老板就管理了。如下:

void mian ()

  {

      ..

  }

这里“void mian ()”叫作主函数名,在整个程序里,其它子函数(即子程序)一个也没有的话,它必须是要有的。就像是一个小厂没有工人,老板一定要有的,不然就不是一个厂了。大括号内部的是你根据实际情况写的命令(或叫程序)。其中大括号在整个函数(程序)中成对出现,而且有时还不止一两个,你可以把最外面的一对把大括号理解成工厂的围墙,里面的一对就是工作车间,再里面的一对是车间的一个场地,..。大括号里面套着大括号,就像是大盆子里面放着小盆子。我们在写大括号时最好成对写,然后再回车填写里面的内容,这样不容易把另一半搞丢。


在写比较复杂的程序时,我们就要分开来写了,这样不至于写出来的东西连你自己都分不清。如果把整个程序比作一个军队,那么主函数(主程序)就是作战司令,子函数(子程序)就分别是炮兵部队、导弹部队、装甲部队、航空部队..。作战司令根据实际情况用到什么就调动什么部队。

 

对于一个完整的程序,都有哪些内容呢?

  第一是程序的开头部分.在keil中把整个项目开发叫做“工程”,这个工程咱把它比作建大楼的“工程”的话,开头部分就是建设大楼的先期准备工作,包括:任命工程的负责人、原材料的购进、水电的供应等等。这可以叫做整个程序的“初始化”。另外也有主函数的“初始化”,各种中断(以后再说)的“初始化”,各种外围元件的“初始化”,各种寄存器的“初始化”。这些“初始化”写在不同的位置,有的以一个独立函数出现,有的分散写在各个子函数中。


总之,你要记住程序中有:

  1、“开始部分”或叫做“开头部分”。

  2、初始化函数。

  3、主函数。

 

4、延时函数:

  单片机的编程实际就是控制它的端口什么时候输入或输出高电平,什么时候输入或输出低电平。因为它运行一条指令只需要1---3us(微秒),非常快,有些地方需要等待,这就需要“延时函数”。这就好比建大楼时用搅拌机和混凝土,你把水泥、沙子、石子、水加入搅拌机后必须搅拌一会儿才能用。

  单片机是时间性很强的元件,很多时候编程不成功都与延时等待时间有关。

 

5、中断函数。

  中断函数相信有很多书上都讲解了,在这里我就不说了。不过我要简单的补充两句歪理:

  中断即当中打断,就是你做住这一个事情,突然出现一个紧急情况要你去处理,等完事后你再回来做原来的事情。

  中断相当于在同一个时间做两件事情,当一个主要的事情完成后再做另一个事情。

  中断有好几种,包括定时器中断、外部中断、串口中断等,有的还不止一个。相应的中断函数就有几个。

  6、显示函数。

  用于把数据处理的结果通过显示器件显示出来。

  7、键盘扫描函数

  用于检测哪些按键被按下。

  8、其它函数

就是根据实际情况,需要什么起什么名字,写什么函数。

  总之:像开头部分、主函数、中断函数是单片机独有的,其它函数是根据实际需要随时添加的。

 

再补充一下:中断程序是一个独立的程序,其它子函数主函数可以调用,中断函数不受主函数调用。如果把主函数比作一个工厂,子函数就是它的各个部门或者车间,中断函数好比是为这个工厂服务的货运公司,平时各做各的,有货进出时再打交道。

 

程序的按编写按走向可分为顺序、循环和跳转。

  顺序:按照一定的步骤写下去,中间没什么拐弯,一直到结束。一般用在动作简单的地方。

  循环:一直重复做某些事情,当条件满足后退出。一般用在延时、串行数据传送、计数等场合。

  跳转:当条件满足后从一个函数中跳出来,不再执行这个程序。一般用在条件满足后执行其它的函数。

 

特别说明一下:以上所发图片中谈到“函数类型”,即函数名的第一个单词,特别解释:


    函数分有反回值和无返回值之分,即分“有返回值的函数”和“无反回值的函数”。在这里所说的“返回”实际是“送出”的意思

  有返回值的函数是指这个函数最终(最后)的结果送出一个数值(比如处理计算出的所测到的温度值结果)或逻辑值(0或1,即真或假),这个数值被其它函数所调用(所采用),比如再把这个数值处理后通过显示器件显示出来,或者根据逻辑值决定需要干什么,不干什么。它的特点是在函数最后总是有“return(x)”其中x是要返回(送出)的数

  

  无反回值的函数不返回任何数值或逻辑值,它的特点是函数名的第一个单词就是“void“。


来说两句吧