新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机的“语言”规范

单片机的“语言”规范

作者:时间:2013-01-26来源:网络收藏
  我在多年教学中发现,的学习,还是以编程为难点。翻开现在的教材,硬件部分与知识讲解部分基本上都是大同小异,唯有程序编写部分,真可谓是五花八门,异彩纷呈。试想一下,面对五花八门的程序编写资料,学生们又如何能知道从哪儿下手呢?这也难怪多数同学认为,编程只是个别学生的事情,与他们无关了。

  这是在学校里面的教学情况,社会上学习单片机的情况又怎样呢?随着电子元器件技术的发展,硬件电路的制作越来越简单容易,有些器件可以直接把管脚焊接在一起,甚至无需用电路板连接即可使用,让大家感到头疼的还是编程。

  尤其是业余单片机爱好者,没有受过专业的训练,大多数情况下是使用别人写好的程序,最多是在别人的程序上修改。我们看有关单片机制作的文章,内容大都是介绍原理,说到编程,往往只是说可以到哪儿下载。说实在的,就是出现在文章里,懂得的人不必去看,不懂的人看也看不懂,也是费力不讨好。

  难道学习编程真的是"无章可循",教编程只能是"即兴发挥"式的吗?经过多年的教学实践,我摸索出了一种编程的方法,取得了很好的教学效果,我暂且把它称作--单片机的"语言"

  单片机如何"说话"单片机的汇编语言,既然称作"语言",它跟我们的自然语言是有相似之处的。比如它有语句,语句要符合语法规则。

  说到""二字,有的朋友会说,既然是"语言",只要语句正确,语法正确,想怎么说就怎么说,想怎么写就怎么写,只要编译通过,功能能够实现就可以,难道还要有什么""不成?答案是,当然需要。我们在学习自然语言时也是要有规范的。语文课本里的文章,我们不是把它们叫做"范文"吗。当然,自然语言的使用可以非常灵活自由,但也要看是哪一类的文章。像诗歌、散文这类的文章,语言的使用可以非常灵活,而像一些应用文,语言的使用就要受到限制,如我们学习写请假条,寻人启事,会议通知之类的文章,就要遵守一定的格式。我们在进行应用文写作的时候,只有遵守这些"格式",才能写出合格的应用文来。

  汇编语言是我们跟单片机打交道所使用的语言,我们使用汇编语言跟单片机"说话",让它听从我们的指挥,首先是让它能听懂我们的"说话",那就是要正确使用指令。单片机的"大脑"还没有我们人脑这么聪明,我们在说话时能揣测对方的意思,而单片机只能严格按照我们的约定来执行我们的命令。其次是如何"说话".汇编语言属于工程语言,工程语言的精髓就是规范。它的规则更加严谨,书写要求更加严格。越是规范严谨的语言,学习起来就越应该有法可依。而找到了这个"法",我们的学习就会向前迈出一大步。汇编语言里有什么样的规范呢?

  在进行汇编语言的教学时,我们首先向学生们强调,汇编语言程序由三部分组成:①预定义部分;②主程序部分;③子程序部分。这就是汇编语言程序编写的规范格式。当然,有些简单的程序,可能会缺少某一部分,但是我们还是从一开始就向学生们强调,简单的程序也要尽量写出这三部分。因为随着程序内容的增加,这三部分的结构与层次的重要意义就会越发地显现出来。下面我们以一个最简单的单片机控制电路为例子,介绍这种规范程序的写法,并逐一介绍每部分的内容与含义。

  图1是单片机系统的三个管脚p0.1,p0.2,p0.3与三个发光二极管的电路连接图。从图1中我们可以看到,只要控制单片机p0这三个脚的电位,我们就可以随意控制这三个LED灯的亮灭。我们的控制要求是:LED1亮1s灭1s,接着LED2亮1s灭1s,接着LED3亮1s灭1s,结束。

单片机的“语言”规范

图1 单片机系统与LED的电路连接图

  电路功能很简单,编程思路可以这样来叙述。如图2。

单片机的“语言”规范

图2 电路编辑思路

  程序编写也很简单,大多数人认为程序可以直接写出来,请看下面的程序示例一。

  //程序功能:三个LED灯依次各亮灭1s

  start: clr p0.0 //点亮第一个LED灯

  acall delay1s

  setb p0.0 //熄灭第一个LED灯

  acall delay1s

  clr p0.1 //点亮第二个LED灯

  acall delay1s

  setb p0.1 //熄灭第二个LED灯

  acall delay1s

  clr p0.2 //点亮第三个LED灯

  acall delay1s

  setb p0.2 //熄灭第三个LED灯

  acall delay1s

  ajmp $ //待机状态

  delay1s: //延时1s子程序

  mov r5,#50

  d3: mov r6,#100

  d2: mov r7,#100

  d1: djnz r7,d1

  djnz r6,d2

  djnz r5,d3

  ret

  end //程序结束


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭