单片机实验报告 数据排序

合集下载

单片机实验报告

单片机实验报告

单片机实验报告实验一:存储器块清零或赋值一、实验目的1 熟悉存储器的读写方法,熟悉51汇编语言结构。

2 熟悉循环结构程序的编写。

3 熟悉编程环境和程序的调试。

二、实验内容指定存储器中某块的起始地址和长度,要求将其内容清零或赋值。

例如将4000H开始的10个字节内容清零或全部赋值为33H。

注意:1 文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。

2 查看存储器菜单使用:窗口---数据窗口---XDATA 观察存储器内容3 查看SFR:窗口---CPU窗口查看CPU寄存器SFR4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。

5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。

三、实验仪器微机、VW,WA VE6000编程环境软件,(单片机实验箱)Lab6000/Lab6000通用微控制器MCS51实验四、实验步骤1、新建工程文件。

(注意:文件不要用中文名称保存时不要用中文路径)2、编写程序。

3、运行和调试过程。

外部数据存储器(4000H为首地址的10个字节)中初始状态(随便赋值FFH):单步执行程序,观察SFR中外部地址指针的变化;全速执行程序,可以看到外部数据存储器已赋值33H:五、实验结果可以看到外部数据存储器已赋值33H:六、问题讨论本次实验能够清楚地了解存储器中数据的移动和赋值过程,通过单步执行,对于每一步的指令操作过程能够了解如何执行,查看每条语句涉及到的寄存器和存储器内容的变化结果。

同时,学习掌握汇编程序的编写和调试过程。

实验二:存储块移动一、实验目的1 熟悉51汇编语言程序结构。

2 熟悉循环结构程序的编写,进一步熟悉指令系统。

3 熟悉编程环境和程序的调试。

二、实验内容将指定源地址(3000H)和长度(10字节)的存储块移动到目的地址(3050H)。

单片机数据排序实验

单片机数据排序实验

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

二、实验内容编写并调试一个排序子程序,其功能为用冒泡法将内部RAM中几个单元字节无符号的正整数,按从小到大的次序重新排列。

三、实验程序框图四、实验步骤①把8032片内RAM区50H—5AH中放入不等的数据(用寄存器读写方法)。

②用连续运行方式从起始地址0100H开始运行程序(输入0100后按EXEC键)。

③排序结束,显示“P.”。

④用寄存器读写方法检查50—5AH中内容应从小到大排列。

五、参考程序DORDE:MOV SP, #60H ;设置栈指针MOV R3, #50HDORDE1:MOV A, R3MOV R0, A ;数据指针传送到R0MOV R7,#0AH ;长度送到R7CLR 00H ;清零标志位MOV A,@R0DORDE2:INC R0MOV R2,ACLR C ;清零进位标志MOV 22H,@R0CJNE A,22H,DORDE3 ;是否相等SETB CDORDE3:MOV A,R2JC DORDE4 ;小于或等于不交换SETB 00HXCH A,@R0DEC R0XCH A,@R0 ;大于交换位置INC R0DORDE4: MOV A,@R0DJNZ R7,DORDE2JB 00H, DORDE1 ;未完继续MOV R0, #7EH ;完,关显示器前三位MOV A, #0FFHMOV R4, #06HDORDE5:MOV @RO, ADEC R0DJNZ R4,DORDE5MOV 7EH, #0CH ;“P.”显示代码送显示缓冲区最后一位DORDE6:LCALL DISPD ;循环调显示子程序SJMP DORDE6DISPD: SETB 0D4H ;显示子程序MOV R1, #7EHMOV R2, #20HMOV R3, #00HDISPD1: MOV DPTR,#0FF21HMOV A, R2MOVX @DPTR, AMOV A, @R1MOV DPTR, #0FF22HMOVX @DPTR, ADISPD2:DJNZ R3, DISPD2DEC R1CLR CMOV A, R2RRC AMOV R2, AJNZ DISPD1MOV A,#0FFHMOV DPTR,#0FF22HMOVX @DPTR, ACLR 0D4HRETEND六、思考题编一程序把50H—5AH中内容按从大到小排列。

单片机实验 数据排序

单片机实验  数据排序

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

二、实验内容本例程采用交换排序法将内部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 上进行软件仿真,运用冒泡法对数组的进行排列。

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

(中断、冒泡排序、1602)单片机实验报告

(中断、冒泡排序、1602)单片机实验报告

本科生实验报告实验课程单片机实验学院名称信息科学与技术学院专业名称物联网工程学生姓名曹林鑫学生学号201413060301指导教师谢兴红实验地点6B607实验成绩二〇一六年九月二〇一六年十二月实验一冒泡排序(汇编)一.实验目的掌握单片机的汇编语言排序程序。

二.实验内容将单片机内部的数据进行排序,且使用汇编语言。

三.实验要求根据实验内容编写一个程序,数据排列顺序要求是从小到大。

四.实验说明先在片内RAM中存储一组数据,重复地走访过要排序的数据,一次比较两块内存上的数据,如果他们的顺序错误就把他们交换过来。

走访数据的工作是重复地进行直到没有再需要交换,也就是说该列数据已经排序完成。

五.算法分析若文件的初始状态是正序的,一趟扫描即可完成排序。

所需的关键字比较次数C和记录移动次数M均达到最小值:,。

所以,冒泡排序最好的时间复杂度为O(n)。

若初始文件是反序的,需要进行n-1 趟排序。

每趟排序要进行n-i次关键字的比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。

在这种情况下,比较和移动次数均达到最大值:冒泡排序的最坏时间复杂度为。

综上,因此冒泡排序总的平均时间复杂度为。

六.实验程序及分析ORG 0000HLJMP mainORG 0100Hmain:MOV 40H,#05H//在40H-44H中随机存放五个立即数MOV 41H,#08HMOV 42H,#09HMOV 43H,#07HMOV 44H,#06HMOV R7,#04H//控制比较循环的次数MOV R6,#04HLOOP3:MOV R0,#40H//指向需要进行比较的数据的地址MOV R1,#41H//MOV A,R6MOV R7,ACLR ALOOP1:CLR CMOV A,@R1MOV 49H,A //交换数据前的备份SUBB A,@R0//用进位标志判断两数的大小JC LOOPLJMP LOOP4LOOP:MOV A, @R0//恢复交换前的备份数据MOV @R1,AMOV @R0,49HLOOP4:INC R0INC R1DJNZ R7,LOOP1//控制比较的次数DJNZ R6,LOOP3//控制比较的轮数LJMP $END六、实验截图排序前内存中的数据排序后内存的数据实验二外部中断一.实验目的1、掌握单片机外部中断的原理及过程。

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

单片机原理及应用实验一 数据排序实验
裘任翔同学的实验结果应该为:
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])

单片机四个实验报告流程图

单片机四个实验报告流程图

实验一流水灯
实验目的:用AT89C51控制,使8个LED轮流点亮,周期1S,且LED使用驱动电路。

单片机电路
流程图
开始
将累加器的值赋为0FEH
将累加器的值输出给P1
循环左移一位
延时1秒
实验二定时器/计数器的使

实验目的:用T0对1kHz方波进行计数,每满200个使输出翻转;用T1产生20ms定时,满200ms时使翻转,满1s时使翻转。

电路图
流程图
开始
给TMOD赋初值,设
设定定时器初值
开启中断
等待中断
T0中断子程序,翻转T1中断子程序,
翻转
T1中断子程序,
翻转
脉冲个数满200 T1计时满200ms T1计时满1s
实验三 矩阵键盘的使用
单片机电路
流程图
开始 扫描键盘码 延时10ms
再次扫描键盘码
比较两次键盘码
将上次的按键字符左移,将
寻找较键盘码对应的字符
Y
N
实验四双机通信
实验目的:单片机甲同期发送一个自累加数值,周期500ms,用定时器且用中断;单片机乙中断方式接收数据,并通过P1口外接LED显示。

实验电路图:
实验流程图:
单片机乙。

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

《单片机实验》实验报告
实验序号:01 实验项目名称:汇编程序之数据排序
点师
一、实验目的及要求
给出一组随机数,将此组数据排序,使之成为有序数列
了解数据排序的简单算法。

二、实验设备(环境)及要求
Wave6000
三、实验内容与步骤
有序的数列更有利于查找。

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

再进行下一轮比较,找出第二大数据,直到全部数据有序
四、实验结果与数据处理
源程序如下:
MOV 50H,#05H
MOV 51H,#03H。

相关文档
最新文档