单片机程序设计方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十六课单片机程序设计方法
程序设计是单片机开发最重要的工作程序设计就是利用单片机的指令系统根据应用系统即
目标产品的要求编写单片机的应用程序其实我们前面已经开始这样做过了这一课我们不是讲如何来设计具体的程序而是教您设计单片机程序的基本方法不过在讲解之前还是有必要先了解一下单片
机的程序设计语言
一程序设计语言
这里的语言与我们通常理解的语言是有区别的它指的是为开发单片机而设计的程序语言如果您没有学过程序设计可能不太明白我给大家简单解释一下您知道微软的VB VC 吗VB VC 就是为某些工程应用而设计的计算机程序语言通俗地讲它是一种设计工具只不过这种工具是用来设计计
算机程序的要想设计单片机的程序当然也要有这样一种工具说设计语言更确切些单片机的设计语言基本上有三类
1 完全面向机器的机器语言
机器语言就是能被单片机直接识别和执行的语言计算机能识别什么以前我们讲过--是数字0
或1所以机器语言就是用一连串的0 或1 来表示的数字比如MOV A 40H 用机器语言来表示就是11100101 0100000 很显然用机器语言来编写单片机的程序不太方便也不好记忆我
们必须想办法用更好的语言来编写单片机的程序于是就有了专门为单片机开发而设计的语言
2 汇编语言
汇编语言也叫符号化语言它使用助记符来代替二进制的0 和1比如刚才的MOV A
40H 就是汇编语言指令显然用汇编语言写成的程序比机器语言好学也好记所以单片机的指令普遍采用汇编指令来编写用汇编语言写成的程序我们就叫它源程序或源代码可是计算机不能识别和执行用汇编语言写成的程序啊怎么办当然有办法我们可以通过翻译把源代码译成机器语言这个过程就叫做汇编汇编工作现在都是由计算机借助汇编程序自动完成的不过在很早以前它是靠手工来做的道听途说我也没经历过呵呵
值得注意的是汇编语言也是面向机器的它仍是一种低级语言每一类计算机都有它自己的汇编语言比如51 系列有它的汇编语言PIC 系列也有它的汇编语言微机也有它自己的汇编语言它们的指令系统是各不相同的也就是说不同的单片机有不同的指令系统它们之间是不通用的这就是为什么世界上有很多单片机类型的缘故了为了解决这个问题人们想了很多的办法设计了许多的高级计算机语言而现在最适合单片机编程的要数 C 语言
3 C 语言—高级单片机语言
C 语言是一种通用的计算机程序设计语言它既可以用来编写通用计算机的系统程序也可以用来编写一般的应用程序由于它具有直接操作计算机硬件的功能所以非常适合用来编写单片机的程序
与其他的计算机高级程序设计语言相比它具有以下的特点
1语言规模小使用简单
在现有的计算机设计程序中 C 语言的规模是最小的ANSIC 标准的 C 语言一共只有32 个关键字
9 种控制语句然而它的书写形式却比较灵活表达方式简洁使用简单的方法就可以构造出相当复杂的数据类型和程序结构
2可以直接操作计算机硬件
C 语言能够直接访问单片机的物理空间地址KEIL C51 软件中的C51 编译器更具有直接操作51
单片机内部存储器和I/O 口的能力亦可直接访问片内或片外存储器还可以进行各种位操作
3表达能力强表达方式灵活
C 语言有丰富的数据结构类型可以采用整型实型字符型数组类型指针类型结构类型
联合类型枚举类型等多种数据类型来实现各种复杂数据结构的运算利用 C 语言提供的多种运算符
我们可以组成各种表达式还可以采用多种方法来获得表达式的值从而使程序设计具有更大的灵活性
----------------
4可进行结构化设计
结构化程序是单片机程序设计的组成部分 C 语言中的函数相当于汇编语言中的子程序KEIL
C51 的编译器提供了一个函数库其中包含有许多标准函数如各种数学函数标准输入输出函数等
此外还可以根据用户需要编制满足某种特殊需要的自定义函数 C 语言程序就是由许多个函数组成的
一个函数即相当于一个程序模块所以C 语言可以很容易地进行结构化程序设计
5可移植性
前面我们讲过由于单片机的结构不同所以不同类型的单片机就要用不同的汇编语言来编写程
序而C 语言则不同它是通过汇编来得到可执行代码的所以不同的机器上有80%的代码是公用的
下册中专门来讲解C 语言的应用及其编程原理
不过作为单片机初学者想要学会 C 语言也并不是一件容易的事因此对于大多数人来说汇编语言仍是编写单片机程序的主要语言我们上册的教程将全部以汇编语言来编写单片机的程序了解了单片机编程的设计语言下面我们来看单片机编程的基本过程和步骤
二单片机程序设计的步骤
单片机的程序设计通常包括根据任务绘制程序流程图编写程序及汇编等几个步骤
1 绘制流程图
所谓流程图就是用各种符号图形箭头把程序的流向及过程用图形表示出来绘制流程图是单片机程序编写前最重要的工作通常我们的程序就是根据流程图的指向采用适当的指令来编写的下
面的图形和箭头就是我们绘制流程图用的工具图中左边所示
绘制流程图时首先画出简单的功能流程图粗框图再对功能流程图进行扩充和具体化即对
存储器标志位等单元做具体的分配和说明把功能图上的每一个粗框图转化为具体的存储器或地址单
元从而绘制出详细的程序流程图即细框图下面举个例子给大家演示一下请看下面的程序
主程序
LOOP:SETB P1.0
LCALL DELAY
CLR P1.0
LCALL DELAY
LJMP LOOP
子程序
DELAY
MOV
R7
#250
D1
MOV
R6
#250
56
----------------
D2 DJNZ R6 D2
DJNZ R7 D1
RET
END
还记得吗这是我们第四课中做过的LED 灯闪烁的实验以前我们曾对程序进行过分析现在让我们用流程图来把这段程序的主程序部分画出来看上图的右边部分这就是程序的流程图在单片机的编程过程中绘制流程图能看清楚程序执行的步骤以及程序的流向事实上程序的编写就是根据流程图的功能完成的下面我们来把第十五课中的那个程序也用流程图画出来程序如下
ORG 0000H