(中断、冒泡排序、1602)单片机实验报告.docx
文本预览下载声明
本科生实验报告
实验课程 单片机实验
学院名称 信息科学与技术学院
专业名称 物联网工程
学生姓名 曹林鑫
学生学号 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
显示全部