单片机循环程序 软件实验3.docx
- 文档编号:10946761
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:23
- 大小:1.21MB
单片机循环程序 软件实验3.docx
《单片机循环程序 软件实验3.docx》由会员分享,可在线阅读,更多相关《单片机循环程序 软件实验3.docx(23页珍藏版)》请在冰豆网上搜索。
单片机循环程序软件实验3
实验七循环程序设计
一、实验目的
1.进一步熟悉MCS-51指令系统,了解汇编语言程序设计的基本结构。
2.掌握循环结构程序设计的方法,弄清单重及多重循环控制过程。
3.通过设计软件延时程序,学会计算内外循环次数以及循环体的循环时间。
二、实验内容
1.设计一个循环程序
具体要求:
将内部RAM中30H至32H的内容右移四位,程序流程图如图2-3所示。
2.设计循环程序:
冒泡法排序。
具体要求:
设单片机8031外部RAM从3600H单元开始存放10个无符号数,试编写程序能使它们按从大到小的顺序排列(最大数存放在3600H单元)。
程序流程图如图2-4所示。
3.自选题目设计。
三、实验步骤
1.输入预先编好的程序,汇编成功;
2.用自动单步方式执行程序,观察循环计数器的变化情况。
3.用断点运行方式调试排序程序,记录排序过程。
四、实验报告要求
1.编出相应的循环结构程序,列出程序清单,并且会计算循环体的循环时间。
2.写出自选题目的设计内容、程序清单及运行结果。
五、思考题
1程序中循环时间由什么来控制?
答:
循环的时间由循环块内每一条命令的周期共同来确定。
2若用DJNZ或CJNE指令来控制循环,编写程序有什么不同?
答:
DJNZ命令是减1判别命令,需要在循环次数上加1来完成循环控制;CJNE不需要。
六、参考流程图
开始
4(R7)
3(R6)
0CY
30H(R0)
((R0))(A)
右移(A)一次
(A)((R0))
(R0)+1(R0)
N
(R6)-1=0?
Y
N
(R7)-1=0?
Y
结束
图2-3循环结构程序流程图
七、循环结构程序参考清单:
1.三个字节右移四位:
赋初值:
(30h)=30h,(31h)=31h。
(32h)=32h
命令行
命令结果
备注
MOVR7,#4
RR30
MOVR6,#3
CLRC
MOVR0,#30H
RR31
MOVA,@R0
RRCA
MOV@R0,A
INCR0
DJNZR6,RR31
减1判别跳转到RR31:
MOVA,@R0命令行
DJNZ命令,减1判别是否为零。
为零则进行下名的命令,不为零则跳转到其他命令行
循环中间结果
循环最终结果
DJNZR7,RR30
减1判别跳转到RR30:
MOVR6,#3命令行
DJNZ命令,减1判别是否为零。
为零则进行下名的命令,不为零则跳转到其他命令行
循环中间结果
循环最终结果
SJMP$
1.冒泡法排序:
赋初值
命令行
命令结果
备注
MOVPSW,#00H
MOVP2,#36H
置外部RAM的高八位地址
MOVR2,#10-1
LOOP0:
MOVR0,#00H
内循环地址指针
MOVR1,#01H
MOV03H,R2
内循环计数器
CLR7FH
交换标志位清零
LOOP1
MOVXA,@R0
高八位由P2给出
MOV30H,A
MOVXA,@R1
LOOP2
CJNEA,30H,
进行下面的语句
判断A累加器内容与30H内内容是否相等,不等则跳转到LOOP2命令行;相等则进行下面的语句
MOVX@R0,A
XCHA,30H
MOVX@R1,A
SETB7FH
L1
INCR0
INCR1
DJNZR3,LOOP1
跳转到LOOP1
减一判零语句,若不为零则跳转,若为零则进行下面的语句。
循环次数由R3控制
中间结果
进行内循环循环
JNB7FH,LOOP3
转移到
循环,排序
LOOP3:
SJMP$
END
Y
N
N
N
Y
N
NY
Y
图2-4循环结构程序流程图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 循环程序 软件实验3 循环 程序 软件 实验