4-编写第一个小程序-课-开启你的单片机旅程

单片机教程

4课:第一个单片机小程序

导读 :目前正在解读《4课:第一个单片机小程序》的关系消息,《4课:第一个单片机小程序》是由用户自行颁布的常识型内容!上方请观看由(电工学习网-www.9pbb.com)用户颁布《4课:第一个单片机小程序》的详细说明。

上一次性咱们的程序真实是没什么用,要灯亮还要重写一下片子,上方咱们要让灯继续地闪动,这就有必定的适用价值了,比如能把它当成汽车上的一个信号灯用了。怎样能力让灯继续地闪动呢?实践上就是要灯亮一段期间,再灭一段期间,也就是说要P10继续地输入高和低电平。怎样成功这个需要呢?请思考用上方的指令能否可行:

这是不行的,有两个疑问,第一,计算机口头指令的期间很快,口头完后,灯是灭了,但在极短期间(微秒级)后,计算机又口头了指令,灯又亮了,所以基本分辨不出灯曾灭过。第二,在口头完CLRP10后,不会再去口头SETBP1.0指令,所以以后再也没无时机让灭了。

为了处置这两个疑问,咱们能做如下想象,第一,在口头完SETBP1.0后,延时一段期间(几秒或零点几秒)再口头第二条指令,就能分辨出灯曾灭过了。第二在口头完第二条指令后,让计算机再去口头第一条指令,继续地在原地兜圈,咱们称之为"循环",这样就能成功义务了。

以下先给出程序(前面括号中的数字是为了便于解说而写的,实践不用输入):SETBP1.0LCALLDELAY ;(2)延时一段期间 CLRP1.0LCALLDELAYAJMPLOOP

;以下子程序MOVR7,#250MOVR6,#250 单片机小程序 ;(7) DJNZR6,D2DJNZR7,D1 ;(9) RET ;(10) END ;(11) 本例keil工程文件点击这里下载keil单片机,闪动灯汇编程序 按上方的想象剖析一下前面的五条指令。

第一条是让灯灭,第二条应当是延时,第三条是让灯亮,第四条和第二条如出一辙,也是延时,第五条应当是转去口头第一条指令。第二和第四条成功的原理稍后谈,先看第五条,AJMP是一条指令,意思是转移,往什么中央转移呢?前面跟的是LOOP,看一下,什么中央还有LOOP,对了,在第一条指令的前面有一个LOOP,所以很直观地,咱们能意识到,它要转到第一条指令处。这个第一条指令前面的LOOP被称之为标号,它的用途就是给这一行起一个名字,便于经常使用。能否必定要给它起名叫LOOP呢?当然不是,起什么名字,齐全由编程序的人选择,能称它为A,X等等,当然,这个时刻,第五条指令AJMP前面的名字也得跟着改了。

第二条和第四条指令的用途是延时,它是怎样成功的呢?指令的方式是LCALL,这条指令称为调用子程序指令,看一下指令前面跟的是什么,DELAY,找一下DELAY,在第六条指令的前面,显然,这也是一个标号。这条指令的作用是这样的:当口头LCALL指令时,程序就转到LCALL前面的标号所标定的程序处口头,假设在口头指令的环节中遇到RET指令,则程序就前往到LCALL指令的上方的一条指令继续口头,从第六行开局的指令中,能看到确实有RET指令。在口头第二条指令后,将转去口头第6条指令,而在口头完6,7,8,9条指令后将遇到第10条令:RET,口头该条指令后,程序将回来口头第三条指令,行将P10清零,使灯亮,而后又是第四条指令,口头第四条指令就是转去口头第6,7,8,9,10条指令,而后回来口头第5条指令,第5条指令就是让程序回到第1条开局口头,如此循环往返,灯就在继续地亮、灭了。

在标号DELAY标记的这一行到RET这一行中的一切程序,这是一段延时程序,大略延时零点几秒,至于详细的期间,以后咱们再学习如何计算。程序的最后一行是END,这不是一条指令,它只是通知咱们程序到此完结,它被称为"伪指令"。

单片机外部结构剖析:为了知道延时程序是如何上班的,咱们必须首先了解延时程序中产生的一些符号,就从R1开局,R1被称之为上班寄存器。什么是上班寄存器呢?让咱们从事实生存中来找找答案。假设出一道数学题:123+567,让你回答结果是多少,你会马上答出是690,再看上方一道题:123+567+562,要让你要上回答,就不这么不难了吧?咱们会怎样做呢?假设有张纸,就不难了,咱们先算出123+567=690,把690写在纸上,而后再算690+562获取结果是1252。这其中1252是咱们想要的结果,而690并非咱们所要的结果,然而为了获取最终结果,咱们又不得不先算出690,并记上去,这其实是一个两边结果,计算机中做运算和这个相似,为了要获取最终结果,普通要做很多步的两边结果,这些两边结果要有个中央放才行,把它们放哪呢?放在前面提到过的ROM中能吗?显然不行,由于计算机要将结果写出来,而ROM是不能写的,所以在单片机中另有一个区域称为RAM区(RAM是随机存取存储器的英文缩写),它能将数据写出来。特意地,在MCS-51单片机中,将RAM中分出一块区域,称为上班寄存器区,上方程序用到的R6,R7就是在这个区外面,这咱们会在第7课有详细的引见。其实假设咱们用C言语来写程序的话用基本不用了解上班寄存器这个概念了由于C编译器会智能处置.看上方的程序假设用c来写就是#include<at89x52.h>

void()//延时函数{unsignedchari,j;for(i=0;i<250;i++){for(j=0;j<200;j++);}}

voidmain() //程序从这里开局口头 {while(1) //这句的作用就是重复的口头上方这个{}中蕴含的4句 {P1_0=1;(); //(2)延时一段期间 P1_0=0;();}}

在汇编例子中程序是从第一条语句开局口头的,而c不同在c言语里程序是从main()这里开局口头的,对于(1)(2)(3)(4)这几句的解释和上方的汇编一样,不再敖述。循环局部这里是用了一个while(1)语句上方打了一个大括号,这样大括号中的这4条语句就会按(1)->(2)->(3)->(4)->(1)->(2)->(3)->(4)->(1)->(2)->(3)->(4)……永远不停的口头下去。这样灯就会继续的亮灭再亮再灭成功了闪动成果,对于延时函数下节课再叙。

提示:《4课:第一个单片机小程序》最后刷新期间2023-07-1003:57:33,本站为公益型团体网站,仅供团体学习和记载消息,不启动任何商业性质的盈利。假设内容、图片资源失效或内容触及侵权,请反应至,咱们会及时处置。本站只保障内容的可读性,不可保障真实性,《4课:第一个单片机小程序》该内容的真实性请自行甄别。

本文原创来源:电气TV网,欢迎收藏本网址,收藏不迷路哦!

相关阅读

添加新评论