搜索
您的当前位置:首页正文

单片机-分支程序设计教案

来源:易榕旅网


一、复习上次课内容

1、什么是标识符?

答:标识符是程序员选择的名字,用来标识常量、变量、过程、段名等。

2、什么是伪指令?

答:注释性的,没有对应的机器码,不令计算机做任何操作,不产生目

标程序,不影响程序的执行。。

二、讲授新课

4.3分支程序设计

在很多实际问题中,都需要根据不同的情况进行不同的处理。这种

思想体现在程序设计中,就是根据不同条件而转到不同的程序段去执行,这就构成了分支程序。分支程序的结构有两种,如图4.2所示。

图4.2 分支程序结构

图4.2(a) 结构使用条件转移指令来实现分支,当给出的条件成立时,执行程序段A,否则执行程序段B。

图4.2 (b) 结构使用散转指令JMP来实现多分支转移,它首先将分支程序按序号的值来实现分支转移。

分支程序的特点是改变程序的执行顺序,跳过一些指令,去执行另外一些指令。应注意:对每一个分支都要单独编写一段程序,每一分支的开始地址赋给一个标号。

在编写分支程序时,关键是如何判断分支的条件。在MCS-51系列单片机中可以直接用来判断分支条件的指令并不多,只有累加器为零(或不为零)、比较条件转移指令CJNE等,MCS-51单片机还提供了位条件转移指令,如JC,JB等。把这些指令结合在一起使用,就可以完成各种各样的条件判断。

【例4-5】设补码X放在内部RAM30H单元中,函数Y与X有如下的关系式:

试编写程序,根据X的值求出Y,并放回原单元。

解 取出X后先做取值范围的判断,用累加器A状态转移指令判断X是否为0,用位状态转移指令判断X是大于0还是小于0。程序流程图如图4.3所示。

程序如下: MOV A,30H JZ ZER0 JNB ACC.7,PLUS

ADD A,#5 MOV 30H,A PLUS: SJMP $ ZERO: MOV 30H,#20H SJMP $ END

【例4-6】内部RAM40H和41H单元中各有一无符号数,比较其大小,将大数存放于内部RAM60H单元,小数存放于内部RAM61H单元,如两数相等,则分别送往这2个单元。

解 用比较不等转移指令CJNE比较力两个无符号书,先确定它们是否相等,若不相等时再根据借位标志确定这两个无符号书的大小。程序框图如图4.4所示。 程序如下:

LOOP: AGEQ:

SJMP END

XCH MOV

A, 61H 60H, A

;A<(41H)有借位 ;A与(61H)交换

MOV MOV CJNE AJMP JNC

A, 40H 61H, 41H A, 41H, LOOP AGEQ AGEQ

;A≥(41H)则无借位

【例4-8】将ASCII码制转换为十六进制数。如果不是十六进制数得ASCII码,用户标志位置1。解:由ASCII码表知,30H~39H为0~9的ASCII码,41H~46H为A~F的ASCII码。在这一范围的ASCII码减去37H就可以获得对应的十六进制。设ASCII码放在累加器A中,转换结果放回A中。程序流程图如图4.5所示

三、课堂巩固 四、课堂小结 五、作业

因篇幅问题不能全部显示,请点此查看更多更全内容

Top