第六章 单片机系统综合实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章单片机系统综合实验
6.1 单片机基本实验
实验6-1.存储器块清零程序设计
(1)实验目的。1. 掌握存储器读写方法;2. 了解存储器的块操作方法。
(2)实验内容:1. 指定内部RAM中某块的起始地址和长度,要求能将其内容清零。2. 指定外部RAM
中某块的起始地址和长度,要求能将其内容清零。3. 指定外部RAM中某块的起始地址和长度,要求
能将其内容置为某固定值(如012H)。
(3)实验说明。通过本实验,学生可以了解单片机的存储器结构及读写存储器的方法,同时也可以
了解单片机编程、调试方法。
(4)参考程序框图。1、程序参考流程如图6-1所示;2、参考程序如下:
BLOCK EQU 0400H
ORG 0000H
LJMP START
ORG 0030H
START:MOV DPTR,#BLOCK ;DPTR←起始地址
MOV R0, #0FFH ;R0←块长度
MOV A,#0 ; A←0
LOOP: MOVX @DPTR,A ;当前地址内容清0
INC DPTR ;地址加1
DJNZ R0,LOOP ; 计数器减1,循环
SJMP $ ; 结束
图6-1 程序流程图
END
图6-2 程序窗口(存储器块赋值程序)图6-3 外部数据存储器XDATA空
间窗
例如若要将从0400H 开始的255个字节外部数据存储器块的内容置成12H 值,请修改以上程序完成
此操作,注意在程序调试过程中数据的变化情况。注意在程序调试过程中数据的变化情况。3、程序调试过
程。程序窗口如图6-2所示。可通过观察外部数据存储器窗口XDATA 了解程序运行结果,运行结果如图
6-3所示。
(5)思考题。如何将存储器块的内容置成某固定值(例全填充为0FFH)? 请用户修改程序,完成此操作。
实验6-2 二进制到BCD转换程序设计
(1)实验目的。掌握简单的数值转换算法。基本了解数值的各种表达方法。
(2)实验内容。1、将给定的一个单字节二进制数,转换成非压缩的二—十进制(BCD)码;2、将给定的一个单字节二进制数,转换成压缩的二—十进制(BCD)码。
(3)实验说明。计算机中的数值有各种表达方式,这是计算机的基础。掌握各种数制之间的转换是一种基本功。有兴趣的同学可以试试将BCD转换成二进制码。
五、参考程序框图。(1)程序参考流程如图6-4所示;(2)参考程序
通过本实验学习简单的数值转换算法,了解数值的各种表达方法。同时进一步熟悉单片机实验集成开发软件环境的使用方法。学习“单步”、“跟踪”、“执行到光标处”等调试功能。启动程序运行到最后一条指令处,打开8051 内部数据存储器空间,观察程序执行结果。若A 中原来的内容“123”(7BH)转换为三个 BCD 码“01”、“02”和“03”,并分别存入了从 (30H)开始的三个单元中,如图6-5所示。
程序执行后的结果:
图6-5 内部数据存储器DATA空间窗口
实验6-3 十六进制到ASCII码转换程序设计
(1)实验目的。1.了解十六进制数和ASCII值的区别。2.了解如何将十六进制数转换成ASCII 值。
3.了解如何查表进行数值转换及快速计算。
(2)实验内容。给出一个十六进制数,分别用查表法和逻辑运算方法将其转换成ASCII值。
(3)实验说明。此实验主要让学生了解数值的十六进制数和ASCII码的区别,学会用查表法快速地进行数值转换并进一步了解数值的各种表达方式。
(4)参考程序框图(查表法)
方法一:(通过查表实现数制转换)。程序流程图如图6-6所示。入口条件:待转换的8位二进制数在
累加器A中。
出口信息:高四位的ASCII码在31H中,低四位的ASCII码在30H中。
方法2:逻辑运算方法。HASC功能:8位二进制数转换成双字节ASCII码。入口条件:待转换的8位二进制数在累加器A中。出口信息:高四位的ASCII码在A中,低四位的ASCII码在B中。
HASC: MOV B,A ;暂存待转换的单字节十六进制数
LCALL HAS1 ;转换低四位
XCH A,B ;存放低四位的ASCII码
SWAP A ;准备转换高四位
HAS1: ANL A,#0FH ;将累加器的低四位转换成ASCII码
ADD A,#90H
DA A
ADDC A,#40H
DA A
RET
实验6-4 存储块移动程序设计
(1)实验目的。
1.了解内存的移动方法;2.加深对存储器读写的认识。
(2)实验内容。将指定源地址和长度的存储块移到指定目标位置。
(3)实验说明。块移动是计算机常用操作之一,多用于大量的数据复制和图象操作。本程序是给出起始地址,用地址加一方法移动块,请思考给出块结束地址,用地址减一方法移动块的算法。另外,若源块地址和目标块地址有重叠,该如何避免?
(4)参考程序框图。
1、程序流程图如图6-7所示;
2、参考程序。将外部RAM存储器XDA TA中3000H开始的256B数据移动到4000H开始的存储单元
中。参考程序如上:
(5)思考题。1.若源块地址和目标块地址有重叠,该如何避免?2.请思考给出块结束地址,用地址减一方法移动块的算法。3.如何将存储器块的内容置成某固定值(例全填充为0FFH)? 请用户修改程序,完成
此操作。
实验6-5 多分支程序
(1)实验目的。1.了解程序的多分支
结构。2.了解多分支结构程序的编程方法。
(2)实验内容。在多分支结构的程序中,
能够按调用号执行相应的功能。
(3)实验说明。多分支结构是程序中常
见的结构,若给出调用号来调用子程序,一
般用查表方法,查到子程序的地址,转到相
应子程序,完成指定操作。分支结构程序设
计也是最基本的程序设计技术。在实际的程
序设计中,有很多情况往往还需要程序按照
给定的条件进行分支。这时就必须对某一个
变量所处的状态进行判断,根据判断结果来
决定程序的流向。在编写分支程序时,关键
是如何判断分支的条件。在MCS—51 单片
机指令系统中有JZ(JNZ)、CJNE、JC(JNC)、
DJNZ及JB(JNB)等丰富的控制转移指令,
他们是分支结构程序设计的基础,可以完成
各种各样的条件判断、分支。
常用的分支结构有以下几种:
1、统计:例1:统计全班60名同学不及格人数,成绩以BCD码放在30H起,结果放入R7。
2、分类:例2:统计全班60名同学的成绩,大于等于90分的、大于等于75分的、大于等于60分的及小于60分的人数,分别放入R
3、R
4、R
5、R6中。
例1 例2