第一篇:单片机-分支程序设计教案
一、复习上次课内容
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所示
三、课堂巩固
四、课堂小结
五、作业
第二篇:单片机实验9 多分支程序设计
实验9 多分支程序设计
1、实验内容
用P1.0、P1.1控制流水灯的变化
P1.0、P1.1=00灯全灭
P1.0、P1.1=01单灯亮左循环
P1.0、P1.1=10单灯亮右循环
P1.0、P1.1=11双灯亮左循环
灯亮的时时为1秒。用软件延时实现。*用T0定时选作。
2、实验步骤
1)打开PV32编程序。汇编正确进入调试界面。否则修改程序重新汇编直到通过。
2)打开P0、P1窗口给
3)调试灯全灭、单灯亮左循环、单灯亮右循环、双灯亮左循环程序观察并记禄寄存器、内存的变化。判断程序是否正确。若发现问题重返编辑界面,修改、存盘、汇编。返回调试界面调试通过。
4)设断点调试主程序观察并记禄寄存器、内存的变化。判断程序是否正确。若发现问题重返编辑界面,修改、存盘、汇编。返回调试界面调试通过。
首先将P1.0、P1.1置00观察P2窗口灯是否全灭,然后改变P1.0、1.1的设置观察流水灯运行是否正确。
5)流水灯运行中改变P1.0、1.1看流灯能否随之变化。若执行正确程序通过。否则在每个流水子程序中加入读P1口散转子程序。
3.实验报告
1.写出主程序流程图、子程序流程图、程序清单
2.根据记渌数据给程序加注解
3.调试心得
第三篇:分支结构程序设计教案
感受分支结构程序的作用
一、教学目标 1.知识与技能目标
(1)理解程序的分支结构。(2)了解编程思路。2.过程与方法目标
(1)借助多媒体教学,强化学生的理解力和注意力。(2)能根据问题设计界面和编写程序。3.情感、态度与价值观目标
(1)让学生从无到有的探索过程中感受成功的喜悦。(2)培养学生探究精神与独立操作能力。
二、教学重点和难点 1.教学重点:
使用visual basic语言的条件语句来实现分支结构,从而解决实际问题。
2、教学难点:
理解程序中流程的代码描述。
三、教学方法
情境教学法、讲授法、任务驱动法
四、教学准备
1、教学环境。多媒体网络教室。
2、教学资源。
学生用机需要安装好visual Bastc语言环境。任务卡
五、教学过程
1.创设情境,导入新课
ppt演示导出课题“分支结构”通过链接到“体型判断”小程序,然后让同学们自己推荐同学来测试是否偏胖或偏瘦或正常。学生的兴趣度很高,积极的配合。
设计意图:引起学生兴趣,激发学生的学习热情,点名课题。2.讲授新课
(1)给出标准体重的计算公式,并简介如何评判体型。
(2)列举生活中需要进行条件选择的例子来讲解,帮学生理解分支结构程序设计的概念。(3)关系表达式和逻辑表达式的简介。(4)画出if语句流程图,了解简单的if语句。
(5)教师操作“体型判断”的案例,介绍框架控件的使用,编写部分程序,回忆旧知。
设计意图:师生共同构思,写出“体型判断”源程序,让学生对分支结构的理解更深刻。
3.布置作业,巩固提高
以书本上的典型案例“体型判断”让学生操作,有不懂的看书本或任务卡。(巡回指导,及时帮学生解决操作过程中存在的问题)
4.归纳总结,加强记忆
先让学生们归纳总结本节课所学的内容,然后教师总结,让学生有一个更深刻的印象,并强调应注意的几个问题。
设计意图:课堂小结的目的是强化认识,可以把课堂传授的知识尽快地转化为学生的知识;简单扼要的课堂小结,可使学生更深刻地理解分支结构程序设计在实际生活中的应用。
六、课后反思
整节课以学生动手为主,学生的兴趣浓厚,课堂充满活力,能够达到预期目的。学生基本上都完成了课堂作业,但是已经做好的同学还没能形成先预习下节课要讲的内容的好习惯,总体来说这节课是相对成功的。
第四篇:分支程序设计实验报告[范文模版]
实验二 二 分支程序设计 一、实验目得: 1、学习分支程序得设计方法 2、熟悉在 PC 机上建立、汇编、连接、调试与运行汇编语言程序得过程 二、实验环境:
硬件环境
IBM/ PC 及其兼容机 软件环境
统 操作系统 DO S
编辑程序 EDIT 或其她编辑程序
序程编汇ﻩ 汇编程序 M ASM、E XE
连接程序LIN K、EXE 序 调试程序 DEB UG、EXE 三、实验内容:
:、在屏幕上显示如下信息:—-— —- ------—-—---— — ------—-Panda
2— —- --— — ---—-—-———-----— —-—--Cat
ﻩ
3-——--------------———- -——-Ra bbit
4— — -— —-— — -— —--— — --- —- --——------Pig—— ------—--—--—-—---— —- --—EXI T
(Plea se
ch oo se 1, 2, 3,4or 5)—- ----入 若输入 1, 显示“I like e
p panda ”后程序结束;若输入 2, 显示“I
lik e cat” ”后程序结束;若输入 3,显示“I
lik e rab bit t入 ”后程序结束;若输入 4, 显示“I do n’t l like pig ”后程序结束;若输入 5,程序直接结束;若输入其它字符,显示“You
pr ess an error key!“ 后程序结束.1)流程图
2)源程序 DATA SEGMENT
INFOR1 DB 0AH,0DH,”1-—-—----—-—Panda:$"
INFOR2 DB 0AH,0DH,”2—-—-——--———Cat:$”
INFOR3 DB 0AH,0DH,"3---—---——-—Rabbit;$”
INFOR4 DB 0AH,0DH,"4---—------—pig:$“
INFOR5 DB 0AH,0DH,”5--—--——--—-EXIT:$"
INFOR6 DB 0AH,0DH,”(please choose 1,2,3,4 or 5——-):$“
INFOR7 DB 0AH,0DH,”I like Panda:$“
INFOR8 DB 0AH,0DH,"I like Cat:$”
INFOR9 DB 0AH,0DH,"I like Rabbit;$"
INFOR10 DB 0AH,0DH,”I like pig:$"
INFOR11 DB 0AH,0DH,”you press an error key!:$” DATA ENDS
;数据段结束 CODE SEGMENT
;代码段开始 Y Y Y Y N N N N N 开始 选项 用户输入 Al=1 Al=2 Al=3 Al=4 Al=5 You press an error key 结束 I like panda I like cat I like rabbit I like do not
ASSUME
CS:CODE,DS:DATA
;段寻址 START: MOV AX,DATA
;将 data 得数据存入ax 中
MOV DS,AX
;为 ds 赋值
MOV DX,OFFSET
INFOR1
;返回变量 INFOR1 段内偏移地址【运行后在屏幕上显示字符 1--——--—--—-Panda:】
MOV AH,09H
INT 21H
;执行九号功能调用
MOV DX,OFFSET
INFOR2
MOV AH,09H
INT 21H
MOV DX,OFFSET
INFOR3
MOV AH,09H
INT 21H
MOV DX,OFFSET
INFOR4
MOV AH,09H
INT 21H
MOV DX,OFFSET
INFOR5
;返回变量 INFOR5 段内偏移地址【运行后在屏幕上显示字符 5—-—--——----EXIT:】
MOV AH,09H
INT 21H
MOV DX,OFFSET
INFOR6
MOV AH,09H
INT 21H
MOV AH,01H
INT 21H
CMP AL,“1’
JE
Panda
CMP AL,'2’
JE
Cat
CMP AL,”3’
JE
Rabbit
CMP AL,’4'
JE Pig
CMP AL,’5’
JE PEND
JMP Other Panda:
MOV DX,OFFSET INFOR7
MOV AH,09H
INT 21H
JMP PEND Cat:
8ROFNI TESFFO,XD VOMﻩ H90,HA VOMﻩ H12 TNIﻩ JMP PEND Rabbit:
MOV DX,OFFSET INFOR9
MOV AH,09H
H12 TNIﻩ
JMP PEND Pig:
MOV DX,OFFSET INFOR10
H90,HA VOMﻩ INT 21H
JMP PEND Other:
MOV DX,OFFSET INFOR11
MOV AH,09H
H12 TNIﻩ
JMP PEND PEND:
MOV AH,4CH
INT 21H CODE
ENDS
END START
2、、从键盘输入一字符,判断该字符就是小写字母、大写字母、数字或其它字符.若输入为小写字母, 显示“Y You
I nput a Lo wer case Letter!”;若输入为大写字母, 显示“You Inp ut a Uppercase L et ter!”;若输入为数字,显示“Yo ou Input a Digit!“;
若输入为其它字符,显示“You Inpu t
Ot her Let tt er!”。、编程指导 字 数字 0 9得ASC II 码为30H 39H;大写字母得 ASCII 码为 4 1H 5AH,小写字母得AS CI I码为61H 7AH。本题目将字符分为小写字母、大写字母、数字及其它字符,得 根据键入字符得 AS CII 码值判断其所属类型, 并显示相应得信息 息.字符串显示使用功能号为 09H 得 得 DOS 功能调用, 接收键盘输入得单个字符使为 用功能号为 01H 得 得 DOS 功能调用。
2、流程图及程序框图 1)流程图 2)源程序 DATA SEGMENT
INFOR1 DB 0AH,0DH,”Please Press Any Key to input a letter:$"
INFOR2 DB 0AH,0DH,”You input a lowercase letter!$”
INFOR3 DB 0AH,0DH,“You input a Uppercase letter!
$”
INFOR4 DB 0AH,0DH,"You input a Digit!
$”
INFOR5 DB 0AH,0DH,“You input Other letter!$” DATA ENDS CODE SEGMENT
ASSUME
CS:CODE,DS:DATA START:
MOV AX,DATA
; 显示信息“Please Press Any Key to input a letter”得指令序列以及接收从键盘输入一个字符得指令序列
MOV DS,AX
MOV
DX,OFFSET
INFOR1
H90,HA
VOMﻩ
INT
21H
MOV AH,01H
INT 21H Y Y Y Y Y Y 显示提示信息“Please Press Any Key to input a letter” 及功能号为 1 得接收键盘输入单个字符得指令序列 开始 结束(AL)<’0’(AL)<=’9’(AL)<’A’(AL)<=’Z’(AL)<’a’(AL)<=’z’ 输入得就是小写字母,显示信息 输入得就是大写字母,显示信息 输入得就是数字,显示有关信息 输入得就是其它字符,显示信息
CMP
AL,’0’
JB
OTHER
CMP
AL,’9’
JBE
DIGIT
CMP
AL,’A“
REHTO
BJﻩ ”Z',LA
PMCﻩ REPPU
EBJﻩ CMP
AL,’a’
JB
OTHER
“z',LA
PMCﻩ JBE
LOWER
JMP
PEND LOWER:
;显示“You Input a Lowercase Letter!”得指令序列
MOV DX,OFFSET INFOR2
H90,HA VOMﻩ INT 21H
出跳序程使应后支分个一完行执意注;
DNEP PMJﻩUPPER:
; 显示“You Input a Uppercase Letter”得指令序列 MOV DX,OFFSET INFOR3
H90,HA VOMﻩ H12 TNIﻩ DNEP PMJﻩDIGIT:
; 显示“You Input a Digit!”得指令序列 MOV DX,OFFSET INFOR4
H90,HA VOMﻩ INT 21H
JMP PEND OTHER:
; 显示“You Input Other Letter!”得指令序列
5ROFNI TESFFO,XD VOMﻩ MOV AH,09H
H12 TNIﻩPEND:
MOV AH,4CH
H12 TNIﻩCODE
ENDS
END START
四、心得 通过这次上机实验, 我掌握了分支程序额设计方法, 宏定义及宏调用得基本方法,了解了小写字母与大写字母得ASCII 码表示及其转换方法,了解了数字及其她得 字符得 AS CII 码表示方法, 进一步掌握了调试工具得 使用方法。
第五篇:MATLAB_分支结构程序设计答案
MATLAB分支结构程序设计
一、实验目的
1.理解MATLAB的编程方法 2.掌握if语句和switch语句的使用 3.掌握分支结构程序设计方法
4.通过练习理解MATLAB编程方法和分支结构程序设计方法。
二、实验环境
1.计算机
2.MATLAB7.0集成环境
三、实验说明
1.熟练操作MATLAB7.0运行环境 2.自主编写程序,必要时参考相关资料 3.实验前应写出程序大致框架或完整的程序代码 5.实验学时:2学时
四、实验内容和步骤
1.实验内容
(1)从键盘输入一个数,将它反向输出,例如输入693,输出为396 >> clear >> format long g s=input('s=')n=fix(log10(s));A=0;for i=1:n a=fix(s/10^n);x=fix(mod(s,10^i)/10.^(i-1));A=A+x*10^(n+1-i);end A+a s=693 s = 693 ans = 396(2)输入一个百分制成绩,要求输出成绩等级A,B,C,D,E其中90-100位A,80-89为B,70-79为C,60-69为D,60以下为E 1)分别用if语句和switch语句实现
2)输入百分制成绩后要判断成绩的合理性,对不合理的成绩应输出出错信息 If语句
>> a=input('输入成绩')if a>=90&a<=100 disp('A 成绩合理');elseif a>=80&a<90 disp('B 成绩合理');elseif a>=70&a<80 disp('C 成绩合理');elseif a>=60&a<70 disp('D 成绩合理');elseif a<60 disp('E 成绩合理');else disp('成绩错误')end 输入成绩56 a = 56 E 成绩合理 switch语句
>> a=input('输入成绩')
switch a;case num2cell(0:59)disp('E 成绩合理');case num2cell(60:69)disp('D 成绩合理');case num2cell(70:79)disp('C 成绩合理');case num2cell(80:89)disp('B 成绩合理');case num2cell(90:100)disp('A 成绩合理');otherwise disp('成绩错误');end 输入成绩78 a = 78 C 成绩合理 2.实验步骤
(1)分析实验内容,写出程序大致框架或完整的程序代码。(2)进入MATLAB7.0集成环境。(3)编辑程序并进行保存。
(4)运行程序,若有错误,修改错误后再次运行,如此反复进行到不显示出错为止。
(5)检查程序输出结果。
五、实验报告要求1.整理实验结果,填入相应表格中 2.小结实验心得体会
通过本次实验,我逐渐掌握了点if语句和switch语句的使用,了解了分支结构程序设计方法。因为本次实验较有难度,所以完成的不是很顺利。在分支结构程序设计方面还有待加强。