文档详情

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

发布:2018-09-14约8.21千字共16页下载文档
文本预览下载声明
本科生实验报告 实验课程 单片机实验 学院名称 信息科学与技术学院 专业名称 物联网工程 学生姓名 曹林鑫 学生学号 201413060301 指导教师 谢兴红 实验地点 6B607 实验成绩 二〇 一六 年 九月 二〇 一六 年 十二 月 实验一 冒泡排序(汇编) 实验目的 掌握单片机的汇编语言排序程序。 实验内容 将单片机内部的数据进行排序,且使用汇编语言。 实验要求 根据实验内容编写一个程序,数据排列顺序要求是从小到大。 实验说明 先在片内RAM中存储一组数据,重复地走访过要排序的数据,一次比较两块内存上的数据,如果他们的顺序错误就把他们交换过来。走访数据的工作是重复地进行直到没有再需要交换,也就是说该列数据已经排序完成。 算法分析 若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数C和记录移动次数M均达到最小值:, 。 所以,冒泡排序最好的时间复杂度为O(n)。   若初始文件是反序的,需要进行n-1 趟排序。每趟排序要进行n-i次关键字的比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值: 冒泡排序的最坏时间复杂度为 。 综上,因此冒泡排序总的平均时间复杂度为 。 实验程序及分析 ORG 0000H LJMP main ORG 0100H main: MOV 40H,#05H//在40H-44H中随机存放五个立即数 MOV 41H,#08H MOV 42H,#09H MOV 43H,#07H MOV 44H,#06H MOV R7,#04H//控制比较循环的次数 MOV R6,#04H LOOP3: MOV R0,#40H//指向需要进行比较的数据的地址 MOV R1,#41H// MOV A,R6 MOV R7,A CLR A LOOP1: CLR C MOV A,@R1 MOV 49H,A //交换数据前的备份 SUBB A,@R0//用进位标志判断两数的大小 JC LOOP LJMP LOOP4 LOOP: MOV A, @R0//恢复交换前的备份数据 MOV @R1,A MOV @R0,49H LOOP4: INC R0 INC R1 DJNZ R7,LOOP1//控制比较的次数 DJNZ R6,LOOP3//控制比较的轮数 LJMP $ END 实验截图 排序前内存中的数据 排序后内存的数据 实验二 外部中断 实验目的 1、掌握单片机外部中断的原理及过程。 2、掌握单片机外部中断程序的设计方法。 3、掌握单片机外部中断时中断方式的选择方法。 二、实验内容 如下图所示,P3.2设为输入, P2设为输出位,连有8个发光二极管D1~D8。每当发生外部中断时,发光二极管以向下流水灯的方式点亮。分别选择边沿触发外部中断放是和电平触发外部中断方式两种。 三、编程提示 1、P3口是8位准双向口,具有双重功能: 第一功能和P1口一样,作为输入输出口,也有字节操作和位操作两种方式,每一位可分别定义为输入或输出;第二功能定义如下 : P3.0 RXD 串行输入口 P3.1 TXD 串行输出口 P3.2 INT0 外部中断0请求输入线 P3.3 INT1 外部中断1请求输入线 P3.4 T0定时器/计数器T0外部计数器脉冲输入线 P3.5 T1定时器/计数器T1外部计数器脉冲输入线 P3.6 WR外部数据存贮器写脉冲输出线 P3.7
显示全部
相似文档