实验一_单片机数据区传送排序程序设计复习课程

合集下载

单片机原理与应用实验教案

单片机原理与应用实验教案

《单片机原理及应用》实验教学大纲课程编号:B04611016课程类别:专业课实验学时:16学时学分:2.5适用专业:计算机科学与技术一、实验教学目的和任务本课程是计算机及应用专业一门重要的专业课。

其教学内容直接面向生产。

同时,微机向小型化、超小型化方面发展愈来愈迅猛。

单片机应用已渗透社会各个领域,特别在通信技术中的应用,大大提高了通信技术水平。

学生应具备这方面的知识与技能,为今后参加工作,打下坚实的基础。

二、实验教学基本要求本课程是一门很注重实践的课程。

以研究MCS-51系列单片机入手,掌握其硬件结构、指令系统和程序设计,以及常用接口技术和典型应用实例。

三、实验教学内容实验项目一:清零程序1、实验目的及要求要求学生掌握软件的结构和键盘的调试。

2、实验内容及学时分配(2学时)(1)了解MCS-51软件的构造(2)掌握清零程序的输入方法(3)了解起始伪指令的输入方法实验项目二:拼字和拆字程序1、实验目的及要求要求学生掌握存储器分配和汇编语言的简单应用。

2、实验内容及学时分配(2学时)(1)进一步掌握MCS-51软件的基本使用方法(2)掌握指令的寻址方式(3)掌握数据传送指令和地址内容的分配实验项目三:数据区传送子程序1、实验目的及要求要求学生掌握RAM数据存储器实际操作。

2、实验内容及学时分配(2学时)(1)掌握MCS-51逻辑运算指令和位操作指令(2)进一步掌握数据传送子程序的简单方法(3)掌握查表程序的编写实验项目四:数据排序实验1、实验目的及要求要求学生掌握汇编语言的应用和实际操作。

2、实验内容及学时分配(2学时)(1)掌握MCS51逻辑运算指令和位操作指令(2)进一步掌握简单顺序程序的编写和调试方法(3)掌握查表程序的编写实验项目五:查找相同个数1、实验目的及要求熟悉汇编语言程序,使用环移指令和加1指令。

2、实验内容及学时分配(2学时)(1)掌握赋值指令(2)掌握带进位的环移指令和加1程序的编写实验项目六:双字节无符号数的乘法实验1、实验目的及要求要求学生掌握MCS-51汇编语言设计和调试方法。

单片机实验 数据排序

单片机实验  数据排序

实验六数据排序一、实验目的掌握排序程序的设计方法。

二、实验内容本例程采用交换排序法将内部RAM 中的50~59H 单元中的10个单字节无符号二进制数按从小到大的次序排列,并将这一列排序后的数据从小到大依次存贮到外部RAM 1000H开始处。

三、实验步骤1.启动PC机,打开KEIL软件,软件设置为模拟调试状态。

在所建的Project文件中添加TH6.ASM文件,打开TH6.ASM文件,阅读、分析、理解程序,编译程序进行调试。

2.在VIEW菜单中打开MEMORY WINDOW数据窗口,分别观察50H(在MEMORY#1中输入D:50H)、1000H(MEMORY#2窗口输入X:1000H)。

3.可在程序指令NOP 处设置断点,在第一个断点处可观察50~59H 单元内容是否为10 个任意排列原始数据。

4.在第二个断点处可观察每次排序的结果。

5.可单步执行程序观察排序过程。

四、实验参考程序(见光盘中的程序文件夹)ORG 0000HJMP MAINORG 0100HMAIN: MOV R0,#50HMOV @R0,#5FHINC R0MOV @R0,#56HINC R0MOV @R0,#5AHINC R0MOV @R0,#5EHINC R0MOV @R0,#51HINC R0MOV @R0,#5BHINC R0MOV @R0,#53HINC R0MOV @R0,#58HINC R0MOV @R0,#57HINC R0MOV @R0,#55H ;将10 个随机数送入内部RAM 的50~59H 单元NOP ;可在此处设置断点ACALL QUE ;调用排序子程序OUT: MOV R0,#50HMOV DPTR,#1000HMOV R7,#10OUT1: MOV A,@R0MOVX @DPTR,AINC R0INC DPTRDJNZ R7,OUT1HERE: AJMP HERENOP ;可在此处设置断点,观察每次排序结果QUE: CLR 00H ;清交换标志MOV R1,#50HMOV R6,#09HI3: MOV A,R6MOV R7,AMOV A,R1MOV R0,AMOV A,@R0I2: INC R0MOV R2,ASUBB A,@R0MOV A,R2JC I1SETB 00HXCH A,@R0I1: DJNZ R7,I2JNB 00H,STOPMOV @R1,AINC R1DJNZ R6,I3RETEND。

单片机实验-数据排序实验模板.doc

单片机实验-数据排序实验模板.doc

单片机实验-数据排序实验模板.doc实验名称:数据排序实验实验目的:1.了解常见排序算法的基本原理及实现方法;2.掌握排序算法在单片机中的具体实现方法;3.培养学生对于单片机编程实践的能力。

实验器材:1. STC89C52RC单片机开发板1台;2. 4*4矩阵按键模块1个;3. 1602液晶屏幕模块1个;4. 杜邦线若干根;5. 电源线及适配器。

实验原理:排序算法是数据处理中最基本的算法之一,是计算机程序设计的基础问题之一。

常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、堆排序、归并排序等。

它们各有特点和适用场景。

对于单片机而言,由于其处理能力有限,程序空间也有限制,因此选择排序算法的实现需要考虑以下几点:1.尽量缩短算法实现时间;2.尽量降低程序空间占用,以便为后续的功能留出空间。

下面我们以冒泡排序算法为例,在单片机上实现数据排序。

1.冒泡排序原理:比较相邻的元素,将较大的元素交换到右边。

2.冒泡排序步骤:①.从头开始,一次比较两个元素,如果它们的顺序错误就把它们交换过来;②.直到没有相邻元素需要比较时,排序完成。

3.冒泡排序算法实现:void BubbleSort(int *p,int len){int i,j;int temp=0;for(i=0;i<len;i++){for(j=0;j<len-i-1;j++){if(*(p+j)>*(p+j+1)){temp=*(p+j+1);*(p+j+1)=*(p+j);*(p+j)=temp;}}}}实验步骤:1.将矩阵按键模块和1602液晶屏幕模块连接到开发板上;2.打开keil软件,创建工程,编写程序代码;3.编译,烧录程序到STC89C52RC单片机开发板;4.调试测试,验证排序算法的正确性和效率。

实验结果:经过测试,程序能够正确实现冒泡排序算法进行数据排序,并在屏幕上输出排序后的结果。

排序效率较高,排序100个以上数据的时间在200ms左右。

单片机 数据传送和排序实验34

单片机  数据传送和排序实验34

单片机实验数据传送
和排序
一、实验目的
1.掌握8051内部RAM和外部RAM之间的数据传送方法;
2. 熟悉51 单片机指令系统,掌握数的大小的排序方法,掌握程序设计方法。

二、实验设备:
CPU挂箱、8031CPU模块
三、实验内容:
编写并调试一个排序子程序,其功能为用冒泡法将外部RAM 中N 个单元字节无符号的正整数,按从小到大的次序重新排列。

四、实验步骤:
在外部RAM 6000H—6009H 中放入不等的10 个数据,运行本实验程序后,检查6000H—6009H中内容是否按从小到大的排列。

五、画出程序流程图
六、程序清单
程序流程图如下:
程序如下:
#include<reg52.h>
unsigned char xdata a[10] _at_ 0x6000;
unsigned char b[]={0x26,0x43,0x41,0x12,0x75,0x72,0x31,0x33,0x64,0x27}; void main()
{
int i,j,t;
for(i=0;i<10;i++)
{
a[i]=b[i];
}
for(i=0;i<10;i++)
for(j=0;j<10-i;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
实验心得:
通过这次单片机实验,我学会了运用Keil写一些简单的C51程序,如何在Keil 上进行软件仿真,运用冒泡法对数组的进行排列。

总的来说这次实验我获益良多。

单片机原理及应用实验一 数据排序实验

单片机原理及应用实验一 数据排序实验
裘任翔同学的实验结果应该为:
RAM50H~56H单元依次为:3,4,1,0,7,1,9
RAM60H~66H单元依次为:0,1,1,3,4,7,9
3、实验仪器
(1)PC微机1台
4、实验程序框图
5、实验程序
(实验程序清单作为附件放在最后)
6、实验步骤
将RAM 50H~56H中放入不等的数据,运行实验程序后检查60H~66H中的内容是否按从小到大的次序排列。
unsigned char data b[7] _at_ 0x0060;
unsigned char data b[7]={3,4,3,0,3,2,6};
#include<reg51.h>
#include<stdio.h>
void main()
{
int i,j,temp;
for(j=0;j<7;j++)
电子信息学院
实验报告书
课程名:《单片机原理及应用实验》
题目:实验一数据排序实验
软件实验
实验类别:【设计】
班级:电子1313
学号:26
姓名:吴限
1、实验内容或题目
题目:数据排序实验
实验内容:对于特定内存单元中的数据进行冒泡排序。
2、实验目的与要求
实验目的:掌握Keil软件的使用;
实验要求:
编写程序在RAM 50H~56H单元中放入自己学号的末7位,用冒泡法编写并调试一个排序程序,按从小到大的次序重新排列数据并放至RAM60H~66H,用Keil编译、调试。例如:裘任翔,学号为:111003410719,则50H~56H单元内容依次为:3,4,1,0,7,;)
{if(a[i]>a[i+1])

单片机实验

单片机实验

实验一数据传送指令的使用及编程方法1.片内RAM的数据传送【实验程序】源程序单元内容ORG 0000HLJMP MAINORG 0030HMAIN:MOV R0,#40H R0MOV R1,#41H R1MOV A,R0 AMOV 30H,A 30HMOV 20H,30H 20HMOV A,#30H AMOV @R0,A 40HMOV A,30H AMOV R7, A R7MOV A,@R0 AMOV R7,A R7MOV DPTR,#0A702H DPTRMOV 30H,R7 30HMOV 20H,@R0 20HMOV 21H,#10H 21HMOV @R0,21H 10HMOV @R1,#01H 41HSJMP $END【实验要求】(1)理解源程序中每条数据传送指令的操作含义,将结果填入每个单元的相应“内容”中。

(2)单步运行源程序,逐条检查“内容”是否正确。

2.外部RAM的数据传送。

【实验程序】源程序单元内容ORG 0000HLJMP MAINORG 0030HMAIN:MOV DPTR,#1A33H DPTRMOV A,#80H AMOVX @DPTR,A 1A33HMOV A,#00H AMOV P2,#1AH P2MOV R0,#34H R0MOV R1,#35H R1MOVX @R0,A 1A34HMOVX A,@DPTR AMOVX @R1,A 1A35HMOVX A,@R0 AMOVX A,@R1 ASJMP $END【实验要求】(1)理解源程序指令含义,指出各存储单元的内容,写在右边的“内容”中。

(2)单步运行源程序,逐条验证分析结果。

3.片内特殊功能寄存器(SFR)的数据传送【实验程序】源程序ORG 0000HLJMP MAINORG 0030HMAIN:MOV SP,#60H ;设栈指针MOV R0,#30H ;#30H送R0(0区)MOV P1,#0EFH ;#EFH送P1口(直接地址为90H)MOV @R0,P1 ;将P1内容送R0所指单元MOV C,P1. 1 ;将P1口的D1位内容送CMOV P1. 7,C ;将CY的内容送P1. 7PUSH PSW ;保护0区寄存器MOV PSW,#08H ;选择1区寄存器MOV R0,#40H ;#40H送1区寄存器R0(08H)MOV @R0,P1 ;P1口内容送1区R0所指单元POP PSW ;恢复0区寄存器SJMP $END【实验要求】(1)理解源程序指令含义,并参照注释写出结果。

(完整word版)单片机实验一冒泡法排序

(完整word版)单片机实验一冒泡法排序

实验一:冒泡法排序实验一、实验要求实验目的:掌握控制转移指令的功能,以及冒泡法排序的原理。

实验要求:设 30H 开始的 10 个储存单元中,寄存的是无符号数,编写程序实现: 10 个数排序,寄存在 50H 开始的单元中。

二、实验原理多重循环即循环嵌套构造。

多重循环程序的设计方法和单重循环是同样的,不过要分别考虑各重循环的控制条件。

内循环属于外循环体重的详细办理部分。

在多重嵌套中,不同意各个循环体互相交错,也不同意从外循环跳入内循环,不然编译时会犯错。

应当注意每次经过外循环进入内循环式,内循环的初始条件需要重置。

三、程序设计1、程序流程图开始R4 ←外循环次数R3 ←内循环次数R0 ←缓冲区首地点B←((R0))A ←((R0)+1)(A)≥(B)?N ((R0)) ←→ ((R0)+1)R0←(R0)+1(R3)-1=0?Y(R4)-1=0?YR0←30HR1←31H((R1)) ←((R0)) ((R0)) ←((R0)+1) ((R1)) ←((R1)+1)(R7)-1=0?Y结束YNNN图 1 冒泡法程序流程图2、程序代码N EQU 10TAB EQU 30HORG 0000HMOV 30H, #1 ;在 30H 中输入 10 个随机数MOV 31H, #3MOV 32H, #2MOV 33H, #4MOV 34H, #6MOV 35H, #8MOV 36H, #7MOV 37H, #11MOV 38H, #9MOV 39H, #10SORT: MOV R4, #N-1LOOP1: MOV A,R4 ;冒泡法循环MOV R3, AMOV @R0, #TABLOOP2: MOV A, @R0MOV B, AINC R0MOV A, @R0CLR CMOV R2, ASUBB A, BJNC UNEXCHMOV A, R2UNEXCH: DJNZ R3, LOOP2 ;假如 A<B ,次序履行 UNEXCH DJNZ R4, LOOP1LJMP SWITCHEXCH: DEC R0 ;假如 A>B ,则 A,B 调动地点XCH A, @R0INC R0MOV @R0, ASWITCH: MOV R0, #30HMOV R1, #50HMOV R2, #NPAIXU: MOV A, @R0 ;将 30H 中排好的数挪动到50H 中MOV @R1, AINC R0INC R1DEC R2CJNE R2, #0, PAIXUSJMP $END四、程序考证1、在30H中输入10个数,显示以下:图 2 30H 单元中储存的10 个数2、对30H中的10个数排序,结果以下:图 3 对 30H 中 10 个数排序后的结果3、将30H中的数转移到50H 中,结果以下:图 4 30H 中 10 个数转移到50H 以后的结果结论:程序基本切合实验要求。

单片机实验——精选推荐

单片机实验——精选推荐

实验一认识实验一.实验目的1.了解仿真器的硬件结构与接线。

2.了解MCS-51单片机复位功能及复位后的内部状态。

3.通过示例程序的键入与执行,学习仿真器的使用与操作方法。

二.实验内容1.对照实验指导书,查对实验机具体接线。

2.按照开发系统的使用方法,分别查看复位后PC、SP、DPTR等特殊功能寄存器及片内、片外RAM的内容。

3.熟悉开发器的使用,将下面程序键入实验机。

ORG 2000H2000 74AA MOV A,#0AAH2002 75F0BB MOV B,#0BBH2005 E5F0 MOV A,B2007 78CC MOV R0,#0CCH2009 E8 MOV A,R0200A 80FE SJMP $4.程序键入后,检查各存储单元所储机器码是否正确如有误,重新键入,达到修正的目的。

5.单步执行示例程序,逐步检查执行结果,核查与分析结果是否相符,直到执行完最后一条指令。

6.练习连续执行示例程序,检查执行结果,核查与分析结果是否相符。

7.自己在示例程序中插入一条指令,执行并查看结果,然后删除,熟悉插入/删除操作。

8.将示例程序移到另外一个存储区,执行并查看结果,熟悉程序块移动操作。

三.实验预习要求1.认真阅读指导书的相关内容,熟悉开发系统的各种操作。

2.实验前应写出规定操作任务的具体操作方法步骤。

四.思考题1.MCS-51单片机怎样实现内部复位,画出一种复位电路。

2.PC、SP、P0、P1、P2、P3复位状态是什么?各有何意义?3.示例程序中最后一条指令SJMP $的作用是什么?如果取掉这一条指令,程序的执行将发生什么变化?4.实验机监控系统怎样实现程序“单步执行”功能?五.实验报告要求1.按实验顺序,写出实验操作的方法步骤。

2.写出实验中所遇到的问题与解决过程。

写出思考题的答案。

实验二建立数据区、数据块传送一.实验目的1.进一步熟悉实验机操作,练习程序调试方法。

2.理解并掌握建立数据区与数据块传送程序。

单片机综合实验课程设计

单片机综合实验课程设计

单片机综合实验课程设计一、课程目标知识目标:1. 学生能理解单片机的基本原理,掌握其内部结构及相关功能模块的使用方法。

2. 学生能掌握单片机编程的基本语法和技巧,能独立完成简单的程序设计。

3. 学生能了解单片机在现实生活中的应用,并学会分析实际案例。

技能目标:1. 学生能运用所学知识,完成单片机的基本操作和程序编写。

2. 学生能通过实验,学会使用相关开发工具和调试技巧,具备一定的故障排查能力。

3. 学生能运用单片机技术解决实际问题,提高创新实践能力。

情感态度价值观目标:1. 学生通过单片机综合实验课程,培养对电子信息科学的兴趣和热情。

2. 学生在团队协作中,学会沟通、分享和合作,提高解决问题的能力。

3. 学生能认识到单片机技术对社会发展的作用,树立正确的价值观和责任感。

课程性质:本课程为实践性课程,侧重于培养学生的动手能力和创新能力。

学生特点:学生已具备一定的单片机基础知识,对实际操作感兴趣,但编程能力和问题解决能力有待提高。

教学要求:结合学生特点,注重理论与实践相结合,强调动手实践和团队协作,提高学生的综合能力。

通过课程目标分解,使学生在知识、技能和情感态度价值观方面取得具体的学习成果,为后续教学设计和评估提供依据。

二、教学内容本课程教学内容主要包括以下几部分:1. 单片机基础理论:回顾单片机的基本原理、内部结构、工作原理等,重点讲解中断系统、定时器/计数器、串行通信等模块的功能和应用。

2. 单片机编程语言:以C语言为基础,介绍单片机编程的基本语法、数据类型、运算符、控制语句等,并通过实例进行讲解。

3. 单片机实验操作:结合教材章节,进行以下实验:- 基本输入输出实验:学习单片机I/O口控制,实现LED灯、蜂鸣器等设备的控制。

- 中断控制实验:掌握中断系统的使用,实现外部中断控制。

- 定时器/计数器实验:学习定时器/计数器的配置,完成定时控制等功能。

- 串行通信实验:了解串行通信原理,实现单片机之间的数据传输。

单片机C语言数据排序实验

单片机C语言数据排序实验

实验二数据排序实验一、实验目的1.熟悉51指令系统,掌握程序设计方法。

2.掌握排序程序的设计方法。

二、实验内容1.本例程采用交换排序法将内部RAM中的30〜39H单元中的10个单字节无符号二进制数按从小到大的次序排列,2.将排序后的数据中的最大的一个数和最小一个数去掉,求其他八个数的和,和放40H,41H中,求这八个数的平均值,放在50H中。

三、实验步骤1.用C语言或汇编语言编写程序。

2 •编译、生成项目、下载程序,调试运行程序。

3.用单步、断点、连续执行程序的方法调试程序。

4.打开RAM数据窗口,分别观察看30H- 39H 40H,41H(02H)(0C0H)和50H(58H)的单元。

四、实验参考程序ORG 0000HJMP MAINORG 0100HMOV SP #60HMOV 30H #5FHMOV 31H #56HMOV 32H #5AHMOV 33H #5EHMOV 34H #51HMOV 35H #5BHMOV 36H #53HMOV 37H #58HMOV 38H #57HMOV 39H #55HNOP ;设置断点ACALLQUENOPACALL LEIJANOPACALL CHU8NOPHERE AJMP HERE数据排序子程序框图数据排序子程累加序子程除8序子程QUE:MOV R3,#30H QUE1:MOV A,R3MOV R0,AMOV R7,#09HCLR 00HMOV A,@R0QL2:INC R0MOV R2,ACLR CMOV 22H,@R0CJNE A,22H,QL3SETB CQL3:MOV A,R2JC QL1SETB 00HXCH A,@R0DEC R0XCH A,@R0INC R0QL1:MOV A,@R0DJNZ R7,QL2JB 00H,QUE1 NOPRET LEIJA:MOV R0,#31HMOV R7,#8CLR CCLR AMOV 40H,#00HJIA:ADD A,@R0JC JIWEIJIA1:INC R0DJNZ R7, JIAMOV 41H,ASJMP JSJIWEI:INC 40HSJMP JIA1JS:RETCHU8:MOV 50H, 40HMOV 51H, 41HMOV R7,#3CHU81:CLR CMOV A,50HRRC AMOV 50H,AMOV A, 51HRRC AMOV 51H,ADJNZ R7,CHU81MOV 50H,51HRETEND#include<c8051f020.h>#include<stdio.h> unsigned char a[10] _at_0x30;unsigned char data0 _at_ 0x40;unsigned char data1 _at_ 0x41;unsigned char data2 _at_ 0x50;void main(){unsigned char tmp;int num;int i,j;a[0]=0x5f;a[1]=0x56;a[2]=0x5a;a[3]=0x5e;a[4]=0x51;a[5]=0x5b;a[6]=0x53;a[7]=0x58;a[8]=0x57;a[9]=0x55;for(i=1;i<10;i++)for(j=0;j<10-i;j++){if(a[j]>a[j+1]){tmp=a[j];a[j]=a[j+1];a[j+1]=tmp;}} num=a[3]+a[4]+a[5]+a[6];data1=num%0x100; data0=num/0x100;data2=num/4;。

单片机实验报告

单片机实验报告

单片机与嵌入式系统实验报告一、软件模拟调试实验:本部分实验内容主要为指令系统和汇编语言程序设计。

采用软件模拟调试的方法,目的在于通过这些实验使学生巩固所学知识,加深对MCS-51单片机内部结构、指令系统的理解,更进一步掌握汇编语言程序设计的方法和技巧。

实验一数据传送实验实验目的1、熟悉软件模拟调试环境。

2、掌握汇编语言程序设计的方法,加深对指令的理解。

3、学会软件模拟调试和察看、验证结果方法。

4、印证数据传送指令的功能、寻址方式以及PC指针、SP指针、DPTR指针、Ri指针分别对代码段、堆栈段、外扩数据存储器段、位寻址区等不同存储器的访问方式。

实验步骤1、进入调试软件环境,输入源程序;2、汇编源程序;3、用单步方式运行程序;4、检查并记录各寄存器和存储单元内容的变化。

实验内容:将8031内部RAM 40H—4FH单元置初值A0H—AFH,然后将片内RAM 40H—4FH单元中的数据传送到片内RAM 50H—5FH单元。

将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。

源程序清单:ORG 0000HRESET:AJMP MAINORG 003FHMAIN:MOV R0,#40HMOV R2,#10HMOV A,#0A0HA1:MOV @R0,AINC R0INC ADJNZ R2, A1MOV R1,#10HMOV R0, #50HMOV R2, #10HA3: MOV A, @R1MOV @R0, AINC R1INC R2DJNZ R2, A3SJMP $END实验结果与分析:1、按照实验内容补全程序。

2、对源程序进行编译并查看相应程序存储器的内容,将源程序对应的机器码记录入下表,掌握ORG伪指令及汇编的过程。

ORG的作用及相关注意事项:ORG表示之后的语句从哪里开始,有的单片机里面的固定区域是用来做堆栈或者是子程序跳转地址的入口。

PC表示:下一条要执行的指令PSW表示:程序状态字,其各位的含义为:cy进位标志位AC辅助进位标志位Ov溢出标志位p校验位SP表示:堆栈指针R0~R7的物理位置:0000H-0007H3、运行机器码,查看片内数据区、CPU内寄存器的变化情况,按要求将结果记录入下表。

实验一_单片机数据区传送排序程序设计

实验一_单片机数据区传送排序程序设计

实验一单片机数据区传送/排序程序设计一、单片机数据区传送/排序程序设计一、实验目的1.进一步掌握汇编语言程序设计和调试方法。

2.了解单片机RAM中的数据操作二、实验说明要求:编写程序把R2、R3源RAM区首地址内的R6、R7字节数据传送到R4、R5目的地址的RAM区。

三、实验仪器计算机伟福软件( lab2000P )四、实验内容在R0、R1中输入源地址(例如:3000H),R2、R3中输入目的地址(例如4000H),R6、R7中输入字节数(例如:1FFFH)。

查看RAM 区3000~30FFH和4000~40FFH内容,也可自己重新赋值。

运行程序,首先单步,然后用执行到指定位置,最后用连续运行方式。

记录下运行结果,检查3000~30FFH中内容是否和4000~40FFH内容完全一致。

五、思考题1、改变源地址,例如00FFH;2、改变目的地址,例如2000H;3、改变传输的个数,小于256个和大于256个的情况。

4、把程序改为对某一数据存储区RAM赋都相同一个数值。

六、源程序及其修改原理org 0000HBlock equ 2000hmov dptr, #Block ; 起始地址mov r0,#12hmov a,#20h ;修改2000h开始的地址所存放的内容为20hLoop:mov r1,#14h ;增加r1计数,用循环方式实现大于256的数据传输(思考题3)Loop1:movx @dptr,ainc dptr ; 指向下一个地址djnz r1,Loop1djnz r0, Loop ; 双循环实现r0,r1计数相乘(以上程序实现对某一数据存储区2000h~2168hRAM赋都相同一个数值20h,思考题4)mov r0, #20h ;改变源地址为2000h(思考题1)mov r1, #00hmov r2, #50h;改变目的地址为5000h(思考题2) mov r3, #00hmov r7, #0Loop:mov dph, r0mov dpl, r1movx a, @dptrmov dph, r2mov dpl, r3movx @dptr, acjne r1, #0ffh, Goon1inc r0Goon1:inc r1cjne r3, #0ffh, Goon2inc r2Goon2:inc r3djnz r7, Loopljmp $End七、实验结果及说明1、执行到mov r0, #20h的结果:说明:实现对数据存储区2000h~2168hRAM都赋相同一个数值20h。

-单片机实验

-单片机实验

实验一数据传送实验实验内容:将8031内部RAM 40H—4FH单元置初值A0H—AFH,然后将片内RAM 40H—4FH单元中的数据传送到片外RAM 9800H—980FH单元,再从片外RAM 9800H—980FH单元中的数据传送到片内RAM 50H—5FH单元。

将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。

源程序清单:ORG 0000HRESET: SJMP MAINORG 003FHMAIN: MOV R1,#40HMOV R2,#10HMOV A, #0A0HA1: MOV @R0,AINC R0INC ADJNZ R2,A1MOV R0, #40HMOV DPTR, #9800HMOV R2, #10HA2: MOV A, @R0MOVX @DPTR, AINC R0INC DPTRDJNZ R2,A2MOV R0, #50HMOV DPTR, #9800HMOV R2, #10HA3: MOVX A, @DPTRMOV @R0, AINC RINC DPTRDJNZ R2, A3LJMP 0000HEND思考题:1. 按照实验内容补全程序。

2. CPU 对8031内部RAM存储器和外部RAM存储器各有哪些寻址方式?内部RAM存储器寻址方式:直接寻址方式寄存器间接寻址基址变址寄存器间接寻址外部RAM存储器寻址方式:寄存器间接寻址基址变址寄存器间接寻址3. 执行程序后下列各单元的内容是什么?内部RAM 40H~4FH _________________________ 内部RAM 50H~5FH__________________________ 外部RAM 9800H~980FH______________________ 截图:实验二多字节十进制加法实验实验内容:多字节十进制加法。

加数首地址由R0 指出,被加数和结果的存储单元首地址由R1指出,字节数由R2 指出。

将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。

1单片机实验报告系统认识实验和程序设计实验.doc

1单片机实验报告系统认识实验和程序设计实验.doc

一、实验目的:1、掌握实验系统的使用方法。

2、掌握集成调试软件的操作与程序调试方法。

3、熟悉51系列单片机的指令系统,掌握在单片机开发系统上调试和执行程序的过程。

4、熟悉51系列单片机软件的编程方法;5、通过使用汇编语言和C语言编写同一个程序,了解这二种方式的编程特点。

二、实验原理Lab6000通用微控制器实验系统由板上仿真器、实验单元、开关电源等构成。

接上EX51B 仿真板,可进行51单片机的实验。

实验系统通过串行通讯电缆将实验系统上的“仿真器串口”与计算机的串行通讯端口联接,在计算机上运行W AVE 集成调试软件,即可完成实验程序的编写、编译、装载、调试。

W A VE 集成调试软件具有与一般办公和工程软件相似的编辑功能和命令菜单。

可在软件上完成程序的输入、编辑、编译、调试等工作,实现对实验系统的控制。

并可通过相关窗口观察程序运行过程中,单片机各个数据存储单元的变化情况。

三、实验使用仪器。

1、Lab6000通用微控制器实验系统。

2、计算机,W A VE 集成调试软件。

四、实验内容。

1、熟悉51系列单片机开发环境。

2、运行一个简单的汇编语言程序。

3、运行一个简单的C语言程序。

4、了解本学期综合性、设计性实验的概况。

五、实验步骤1、按要求进行实验系统的联接与启动。

2、执行W A VE 集成调试软件。

进入开发环境界面,然后在“仿真器”下拉菜单,选择“仿真器设置”项。

在弹出的“仿真器设置”窗口中,应作设置如下:在“语言”标签窗口下,“编译器路径”为“C:\COMP51\”;“ASM命令行”勾选“使用伟福预定义符号”项;“编译器选择”点选“伟福汇编器”项;“缺省显示格式”点选“混合十、十六进制”项。

在“目标文件”标签窗口下,勾选:“缺省地址(由编译结果确定)”;“生成HEX文件”;“置未用程序存储器为00H”。

在“仿真器”标签窗口:选择仿真器:Lab6000 通用微控制器实验系统;选择仿真头:MCS51 实验;选择CPU:8031/32;去掉“使用伟福软件模拟器”选项。

单片机原理——实验指导书

单片机原理——实验指导书

《单片机原理》实验指导书张毅刚何谨孙震哈尔滨工业大学2005年4月目录序 ------------------------------------------------------------------------------------------------------------- 1实验1 单片机实验开发系统操作实验 ------------------------------------- 2实验2 单片机数据区传送程序设计------------------------------------------ 4实验3 数据排序实验 --------------------------------------------------------------------- 6实验4 查找相同数个数----------------------------------------------------------------- 8实验5 P1口转弯灯实验--------------------------------------------------------------- 10实验6 工业顺序控制 -------------------------------------------------------------------- 13实验7 8255控制交通灯--------------------------------------------------------------- 16实验8 A/D转换实验---------------------------------------------------------------------- 19实验9 D/A转换实验---------------------------------------------------------------------- 22实验10 电子时钟(定时器、中断综合实验) -------------------- 26附录1 DAIS-80958B单片机实验开发系统简介------------------- 36附录2 实验开发系统的字形/字位/键值表 --------------------------- 37序一、实验素养和一般知识1.实验前准备工作(1) 明确实验目的、熟悉实验内容、掌握实验步骤、了解所用单片机实验开发系统及仪器设备的性能。

实验一_单片机数据区传送排序程序设计

实验一_单片机数据区传送排序程序设计

实验一单片机数据区传送/排序程序设计一、单片机数据区传送/排序程序设计一、实验目的1.进一步掌握汇编语言程序设计和调试方法。

2.了解单片机RAM中的数据操作二、实验说明要求:编写程序把R2、R3源RAM区首地址内的R6、R7字节数据传送到R4、R5目的地址的RAM区。

三、实验仪器计算机伟福软件(lab2000P )四、实验内容在R0、R1中输入源地址(例如:3000H),R2、R3中输入目的地址(例如4000H),R6、R7中输入字节数(例如:1FFFH)。

查看RAM 区3000~30FFH和4000~40FFH内容,也可自己重新赋值。

运行程序,首先单步,然后用执行到指定位置,最后用连续运行方式。

记录下运行结果,检查3000~30FFH中内容是否和4000~40FFH内容完全一致。

五、思考题1、改变源地址,例如00FFH;2、改变目的地址,例如2000H;3、改变传输的个数,小于256个和大于256个的情况。

4、把程序改为对某一数据存储区RAM赋都相同一个数值。

六、源程序及其修改原理org 0000HBlock equ 2000hmov dptr, #Block ; 起始地址mov r0,#12hmov a,#20h ;修改2000h开始的地址所存放的内容为20hLoop:mov r1,#14h ;增加r1计数,用循环方式实现大于256的数据传输(思考题3)Loop1:movx @dptr,ainc dptr ; 指向下一个地址djnz r1,Loop1djnz r0, Loop ; 双循环实现r0,r1计数相乘(以上程序实现对某一数据存储区2000h~2168hRAM赋都相同一个数值20h,思考题4)mov r0, #20h ;改变源地址为2000h(思考题1)mov r1, #00hmov r2, #50h;改变目的地址为5000h(思考题2)mov r3, #00hmov r7, #0Loop:mov dph, r0mov dpl, r1movx a, @dptrmov dph, r2mov dpl, r3movx @dptr, acjne r1, #0ffh, Goon1inc r0Goon1:inc r1cjne r3, #0ffh, Goon2inc r2Goon2:inc r3djnz r7, Loopljmp $End七、实验结果及说明1、执行到mov r0, #20h的结果:说明:实现对数据存储区2000h~2168hRAM都赋相同一个数值20h。

《单片机技术》实验(2022级自动化1201~02电气1201~02)教案

《单片机技术》实验(2022级自动化1201~02电气1201~02)教案

《单片机技术》实验(2022级自动化1201~02电气1201~02)教案课程教案课程名称:单片机技术实验任课教师:王韧所属院部:电气与信息工程学院教学班级:自动化1201~02、电气1201~02教学时间:2022—2022学年第二学期湖南工学院课程基本信息湖南工学院教案用纸实验一数据传送实验一、本次实验主要内容1、Keil软件的使用方法和调试。

2、存储器之间数据传送的方法和循环程序设计。

3、MCS-51系列单片机堆栈的使用。

二、实验目的与要求1、掌握单片机的汇编指令系统及汇编语言程序设计方法。

2、掌握单片机的存储器体系结构。

3、熟悉Keil软件的功能和使用方法。

4、掌握单片机应用程序的调试方法。

三、实验重点难点MOV、MOV某指令的用法特点。

四、实验方法和手段讲授、演示、操作、仿真、提问。

五、作业与习题布置写出实验报告。

P1湖南工学院教案用纸一、实验内容或原理1、实现单片机内部RAM之间,外部RAM之间以及内部RAM与外部RAM之间的数据传送。

2、利用Keil软件编辑、汇编、调试、运行实验程序并记录实验数据。

二、设计要求1、编写程序将00H~0FH16个数据分别送到单片机内部RAM30H~3FH单元中。

2、编写程序将片内RAM30H~3FH的内容传送至片内RAM40~4FH单元中。

3、编写程序将片内RAM40H~4FH单元中的内容传送到外部RAM4800H~480FH单元中。

4、编写程序将片外4800H~480FH单元内容送到外部RAM5800H~580FH单元中。

5、编写程序将片外RAM5800H~580FH单元内容传送回片内RAM50H~5FH单元中。

三、实验报告要求1、实验目的和要求。

2、设计要求。

3、实验程序流程框图和程序清单。

4、实验总结。

5、思考题。

四、思考题1、说明MCS-51系列单片机对片内RAM和片外RAM存贮器各有哪些寻址方式?2、说明指令MOVA,20H和MOVC,20H中的20H含义有什么不同?传送指令中的助记符MOV,MOV某,MOVC各适用于访问哪个存储器空间?P2湖南工学院教案用纸实验后记:P3湖南工学院教案用纸实验二单片机并行I/O口的应用实验一、本次实验主要内容1、利用单片机并行I/O口控制流水灯。

单片机实验1

单片机实验1

单片机实验1实验一、MCS51单片机基本开发环境1.实验目的:1) 熟悉软件的集成开发环境2) 掌握单片机软件设计流程3) 掌握单片机存贮器结构及各窗口之间的联系2.实验内容:1) 用三种方法实现将累加器A内容改为20H方法1--MOV A,#20H方法2—MOV R0,#20HMOV A,R0方法3—MOV R0,#20HXCH A,R02) 将58H位单元置为1,观察内部RAM中2BH内容的变化代码:SETB 2BH.0JMP $END这是关于内部存储中对单元和字节了解,不理解很容易做错.比如开始写的指令为MOV R0,#58H;MOV @R0,#1这是错误的指令。

这就需要认真去了解单片机中的字节地址与位地址的关系。

80C51中有位寻址区和字节寻址区。

题目中58H为位地址,2BH为字节地址,且58H为2B字节的最低位。

由于58H属于位寻址区,可用位操作指令SETB进行置位,SETB 2BH.0执行后,2BH中内容变为013) 如果当前状态为有进位、工作寄存器使用区2,请用3种方法设置这种状态代码:ANL PSW,#01HMOV A,PSWCJNE A,#01,LAB2LAB1:JMP LAB1LAB2: SETB PSW.4 MOV P0,#01H MOV R0,#18HCLR PSW.3 MOV C,P0.0 MOV PSW,R0MOV PSW.4,CCPL CMOV PSW.3,CEND以上LAB2写了三段代码,可分别完成题目要求。

不过实验时只是对代码进行了错误调试,没有对结果进行检验。

其中值得注意的是对于布尔(位)操作指令的用法,比如传送指令必须经累加器C,如第二段中MOV P0,#01H ; MOV C,P0.0 ,以及对于位寻址的方式(如需用到“.”隔开)的应用。

4) 编一个小程序将内部RAM中的20H单元的内容送到21H单元并调试(分组完成)代码:5) 用程序将堆栈指针指向60H,然后在堆栈中依次压入01,02,03,04,05五个数,观察哪些单元内容发生了变化,各变为多少?从哪些窗口可以发现这些变化?顺序将堆栈中的五个数放入30H~34H 五个单元中,编程实现之。

单片机导论实验讲义

单片机导论实验讲义

;起始地址;设置256字节计数值第一章 单片机软件实验实验一内存操作1. 实验目的① 掌握数据传送指令;② 掌握各种数据传送指令的寻址方式; ③ 熟练运用keil 环境对汇编程序进行调试; ④ 掌握数据传送、复制等程序的设计与调试方法。

2. 预习要求① 理解数据传送指令和循环指令的使用; ② 理解如何对内部寄存器、内部RAM 、外部RAM 的读写;③ 理解各种寻址方式,尤其是较为抽象的变址寻址及相对寻址的方式; ④ 认真预习本实验内容,自行编写程序,填写实验报告。

3.实验设备计算机 1台;4. 基础型实验内容①下列程序的功能是给外部 RAM8000〜80FFH 的256个单元的内容赋值,赋值的内容取决于程序中 A 的赋值。

在Keil 环境运行该程序,并观察寄存器及内存单元的 变化。

ORG 0000H START EQU 8000HMAIN: MOV DPTR,#START MOV R0,#0ffh ;MOV A, #1HLoop: MOVX @DPTR, A INC DPTR ;指向下一个地址DJNZ RO, loop ; ;计数值减1SJMP $②END 下列程序将3000H起始的256个字节存储块移动到4000H起始的256个字节存储块,在Keil环境运行如下程序,观察寄存器及存储单元的变化。

ORG 0000HMOV DPTR,#3000HMOV A,#01HMOV R5,#OLOOP: MOVX @DPTR,AINC DPTRDJNZ R5,LOOPMOV R0 ,#30HMOV R1 ,#00HMOV R2 ,#40HMOV R3 ,#00HMOV R7 ,#0LOOP1 MOV DPH,R0MOV DPL ,R1MOVX A ,@DPTRMOV DPH ,R2MOV DPL ,R3MOVX @DPTR ,AINC R1INC R3DJNZ R7 , L00P1SJMP $END5. 设计型实验内容①在keil环境修改内部RAM 30H〜3FH的内容分别为#OOH-#OFH,设计程序实现将内部RAM30H-3FH到40H-4FH的数据块拷贝。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一_单片机数据区传送排序程序设计
实验一单片机数据区传送/排序程序设计
一、单片机数据区传送/排序程序设计
一、实验目的
1.进一步掌握汇编语言程序设计和调试方法。

2.了解单片机RAM中的数据操作
二、实验说明
要求:编写程序把R2、R3源RAM区首地址内的R6、R7字节数据传送到R4、R5目的地址的RAM区。

三、实验仪器
计算机
伟福软件( lab2000P )
四、实验内容
在R0、R1中输入源地址(例如:3000H),R2、R3中输入目的地址(例如4000H),R6、R7中输入字节数(例如:1FFFH)。

查看RAM 区3000~30FFH和4000~40FFH内容,也可自己重新赋值。

运行程序,首先单步,然后用执行到指定位置,最后用连续运行方式。

记录下运行结果,检查3000~30FFH中内容是否和4000~40FFH内容完全一致。

五、思考题
1、改变源地址,例如00FFH;
2、改变目的地址,例如2000H;
3、改变传输的个数,小于256个和大于256个的情况。

4、把程序改为对某一数据存储区RAM赋都相同一个数值。

六、源程序及其修改原理
org 0000H
Block equ 2000h
mov dptr, #Block ; 起始地址
mov r0,#12h
mov a,#20h ;修改2000h开始的地址所存放的内容为20h Loop:
mov r1,#14h ;增加r1计数,用循环方式实现大于256的数据传输(思考题3)
Loop1:
movx @dptr,a
inc dptr ; 指向下一个地址
djnz r1,Loop1
djnz r0, Loop ; 双循环实现r0,r1计数相乘
(以上程序实现对某一数据存储区2000h~2168hRAM赋都相同一个数值20h,思考题4)
mov r0, #20h ;改变源地址为2000h(思考题1)
mov r1, #00h
mov r2, #50h;改变目的地址为5000h(思考题2)
mov r3, #00h
mov r7, #0
Loop:
mov dph, r0
mov dpl, r1
movx a, @dptr
mov dph, r2
mov dpl, r3
movx @dptr, a
cjne r1, #0ffh, Goon1
inc r0
Goon1:
inc r1
cjne r3, #0ffh, Goon2
inc r2
Goon2:
inc r3
djnz r7, Loop
ljmp $
End
七、实验结果及说明
1、执行到mov r0, #20h的结果:
说明:实现对数据存储区2000h~2168hRAM都赋相同一个数值20h。

2、执行到 ljmp $的结果:
说明:5000h开头的存储区域执行程序之前的内容是FFh,执行程序之后变为20h,与2000h~20ffh的内容完全相同,说明程序实现了数据区传送。

二、单片机数据区数据排序设计
一、实验目的
(1)、进一步掌握汇编语言程序设计和调试方法。

(2)、了解数据排序的简单算法。

二、实验内容
(1)、要求:有序的数列更有利于查找。

本程序用的是“冒泡排序”法,算法是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在数列的最后面。

再进行下一轮比较,找出第二大数据,直到全部数据有序。

(2)、在CPU内部的RAM 50H~5AH中放入不等的数据,查看RAM 区
50H~5AH的内容,也可自己重新赋值。

(3)、运行程序,首先单步,然后用执行到指定位置,最后用连续运行方式。

记录下比较一遍后运行结果,是否最大的移到最后。

三、程序流程
四、实验参考程序
Size equ 10 ; 数据个数
Array equ 50h ; 数据起始地址
Change equ 0 ; 交换标志
Sort:
mov r0, #Array
mov r7, #Size-1
clr Change
Goon:
mov a, @r0
mov r2, a
inc r0
mov B, @r0
cjne a, B, NotEqual
sjmp Next
NotEqual:
jc Next ; 前小后大, 不交换
setb Change ; 前大后小, 置交换标志
xch a, @r0 ; 交换
dec r0
xch a, @r0
inc r0
Next:
djnz r7, Goon
jb Change,Sort
ljmp $
end
五、实验步骤及结果分析
(1)、编写程序,编译程序,人为修改初始地址中的数据如下图,再运行程序,观察结果,结果如下:
图5 原始地址中的数
(2)、再运行程序,观察结果,结果如下:
图6 运行后的数据
(3)、从运行结果图6可以看出,从50H开始的10个地址单元中的数据按从小到大顺序排列。

六、思考题
(1)、改变源地址,例如20H,注意对其他位的影响;
将原程序的 Array equ 50h改为Array equ 20h 即可。

(2)、将50H~5AH中内容按从大到小排列,并且记录下程序运行前后的结果,分析是否正确。

(3)、记录执行交换的次数。

程序修改如下:
Size equ 10 ; 数据个数
Array equ 50h ; 数据起始地址
Change equ 0 ; 交换标志
mov r6, #0 ;交换次数寄存器
Sort:
mov r0, #Array
mov r7, #Size-1
clr Change
Goon:
mov a, @r0
mov r2, a
inc r0
mov B, @r0
cjne a, B, NotEqual
sjmp Next
NotEqual:
jnc Next ; 前小后大, 不交换
inc r6
setb Change ; 前大后小, 置交换标志 xch a, @r0 ; 交换
dec r0
xch a, @r0
inc r0
Next:
djnz r7, Goon
jb Change,Sort
ljmp $
end
运行结果如下:
图7 原始数据
图8 运行后的数据
从运行结果图8可以看出:运行后数据按从大到小的顺序排列,从图中也可以看出R6中的值为7,说明在排序过程中交换了7次。

程序中采用的是冒泡法,每次把最小的数沉底,由于原始数据只需把50H 中的1沉底,就能达到从大到小的排列,只需7次交换就可,说明程序运行结果与实际结果相符。

相关文档
最新文档