单片机实验报告 数据排序
单片机实验报告

单片机实验报告实验一:存储器块清零或赋值一、实验目的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实验名称:数据排序实验实验目的: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

单片机实验数据传送
和排序
一、实验目的
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)单片机实验报告

本科生实验报告实验课程单片机实验学院名称信息科学与技术学院专业名称物联网工程学生姓名曹林鑫学生学号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显示。
实验电路图:
实验流程图:
单片机乙。
单片机实验报告 数据排序

《单片机实验》实验报告
实验序号:01 实验项目名称:汇编程序之数据排序
点师
一、实验目的及要求
给出一组随机数,将此组数据排序,使之成为有序数列
了解数据排序的简单算法。
二、实验设备(环境)及要求
Wave6000
三、实验内容与步骤
有序的数列更有利于查找。
本程序用的是“冒泡排序”法,算法是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在
数列的最后面。
再进行下一轮比较,找出第二大数据,直到全部数据有序
四、实验结果与数据处理
源程序如下:
MOV 50H,#05H
MOV 51H,#03H。
单片机原理实验报告

实验报告01_排序程序实验目的1. 熟悉MCS-51指令系统,掌握程序设计方法。
2. 掌握控制转移指令的功能,以及冒泡排序法原理。
3. 熟悉51单片机汇编语言编程环境。
实验要求设30H开始的10个存储单元中,存放的是无符号数,编写程序实现:将它们排序,并存放到50H开始的单元中。
实验原理冒泡算法的思想为,每次取相邻单元的两个数比较,判断是否需要交换数据的位置。
第一次循环,比较N-1次,取到数据表的最大值;第二次循环,比较N-2次,取到次大值;……第N-1次循环,比较一次,排序结束。
流程框图实验程序及调试仿真:实验程序如下:N EQU 10TAB EQU 30HTAC EQU 50HORG 0000H SORT: MOV R4,#N-1 LOOP1: MOV A,R4MOV R3,AMOV R0,#TAB LOOP2: MOV A,@R0MOV B,AINC R0MOV A,@R0CLR CSUBB A,BJNC UNEXCHMOV A,@R0DEC R0XCH A,@R0INC R0MOV @R0,A UNEXCH: DJNZ R3,LOOP2DJNZ R4,LOOP1MOV R1,#TABMOV R7,#NMOV R0,#TAC AGAIN: MOV A,@R1MOV @R0,AINC R1INC R0DJNZ R7,AGAINSJMP $END程序调试及运行结果实验结论通过本实验,我对冒泡排序法的原理有了更深入的理解,同时在掌握此算法思想的基础上能够用汇编语言进行编程,并学会在Keil μVersion4调试界面的Memory窗口中查看内存地址的内容,从而验证设计的源程序的正确性,提高了自己解决问题的能力。
实验报告02_ 外部中断实验实验目的学会使用Keil μVersion4和Proteus软件进行单片机汇编语言和C语言程序设计与开发;了解和掌握MCS-51单片机的中断组成、中断控制工作原理、中断处理过程、外部中断的中断触发方式,掌握中断功能的编程方法。
单片机实验报告(保存数据,选择数据并进行排序)

实验一一实验目的(1)熟悉单片机汇编语言,并进行简单程序设计(2)掌握纬蝠软件使用方法二实验内容(1)统计:1)为正数个数并保存在30H2)为负数个数并保存在31H3)为零个数并保存在32H(2)将表中的数据依次存储到数据存储器中首地址是40H并进行降序排列三源程序(1)判断存储器内数据属性以及同一属性的数目ORG 0000HLJMP MAINMAIN:MOV A,#00H ;A清0MOV R0,#09HMOV 30H,#00H ;将30H,31H,32H清0MOV 31H,#00HMOV 32H,#00HMOV R1,#00H ;R1清0LOOP: MOV A,R1MOV DPTR,#TAB ;将表头地址赋给DPTRMOVC A,@A+DPTR ;读取数据CJNE A,#00H,NZEAR ;判断数据是否为0,不为0跳转 INC 32H ;是0就将32H单元自加一AJMP NEGTNZEAR: JB ACC.7,POSI ;判断是否为负数,是就跳转INC 30H ;是整数加一AJMP NEGTPOSI: INC 31H ;是负数就加一NEGT:INC R1 ;R1加一MOV A,#00H ;A清0DJNZ R0,LOOP ;循环九次ORG 0100HTAB: DB -1,2,0,7,-3,-4,9,10,1END(2)将存储器中数据移到数据存储器中,并进行降序排列ORG 0000HLJMP MAINORG 0010HMAIN: MOV R2,#09HMOV R1,#40HMOV R0,#50HMOV A,#00HMOV DPTR,#TABLOOP2: MOVC A,@A+DPTRJB ACC.7,POSIMOV @R1,AMOV @R0,AINC R1INC R0POSI: INC DPTRMOV A,#00HDJNZ R2,LOOP2 ;以上程序是将表中非负数移到首地址40H,50H,处MAINA: ;以下进行降序排列 MOV R1,#50HMOV R5,#06HCLR F0DEC R5MOV A,@R1LOOP: MOV R3,AINC R1MOV A,@R1CLR CSUBB A,R3 ;判断两个读取数据的大小 JC LOOP1SETB F0 ;互换标志位F0置1MOV A,R3 ;两数交换XCH A,@R1DEC R1XCH A, @R1INC R1LOOP1:MOV A,@R1DJNZ R5,LOOPJB F0,MAINAORG 0100HTAB: DB -1,2,0,7,-3,-4,9,10,1END四总结。
单片机实验一 冒泡法排序

实验一:冒泡法排序实验一、实验要求实验目的:掌握控制转移指令的功能,以及冒泡法排序的原理。
实验要求:设30H开始的10个存储单元中,存放的是无符号数,编写程序实现:10个数排序,存放在50H开始的单元中。
二、实验原理多重循环即循环嵌套结构。
多重循环程序的设计方法和单重循环是一样的,只是要分别考虑各重循环的控制条件。
内循环属于外循环体重的具体处理部分。
在多重嵌套中,不允许各个循环体相互交叉,也不允许从外循环跳入内循环,否则编译时会出错。
应该注意每次通过外循环进入内循环式,内循环的初始条件需要重置。
三、程序设计1、程序流程图图 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之后的结果结论:程序基本符合实验要求。
单片机实验报告

单片机与嵌入式系统实验报告一、软件模拟调试实验:本部分实验内容主要为指令系统和汇编语言程序设计。
采用软件模拟调试的方法,目的在于通过这些实验使学生巩固所学知识,加深对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内寄存器的变化情况,按要求将结果记录入下表。
单片机原理实验报告

单片机原理实验报告班级:姓名:学号:实验日期:成绩:实验一基本操作实验目的:熟悉伟福仿真机软件的基本操作,熟悉MCS-51指令。
实验内容A:数据传送程序实验程序:实验步骤:(1)从起始地址开始全速运行程序Ⅰ,检查运行结果, 外部数据窗口中7000H~700FH单元的内容皆为00H;(2)按要求修改程序如Ⅱ,用单步/跟踪运行程序, 查看寄存器和外部数据窗口;(3)在PLUS处设置断点,从起始地址开始全速运行程序,查看寄存器和外部数据窗口;(4)清除断点,用运行到当前行方式将程序运行到PLUS的下一条指令,查看运行结果是否正确。
实验内容B: 1 , 当X>0时求符号函数Y= 0 , 当X=0时-1 , 当X<0时实验程序:实验步骤:(1)准备好三个有代表性的数据,分三次用单步/跟踪方式运行程序,注意PC指针的变化;当(40H)= _____(X>0) 时,ACC.7= 0 , 运行后(41H)= _01H_____(Y= 1),当(40H)= _00H____(X=0) 时,ACC.7= 0 , 运行后(41H)= __00H____(Y= 0),当(40H)= _____(X<0) 时,ACC.7= 1 , 运行后(41H)= FFH (Y=﹣1)(2)思考:能否用“JC POSI ”指令替代“JB ACC.7, POSI ”指令, 修改运行程序,验证结果。
注意“CJNE A, #00H, NZEAR”执行后CY位为0/1 ?单片机原理实验报告班级:姓名:学号:实验日期:成绩:实验二输入/输出控制实验实验目的:掌握单片机I/O口输入输出的控制方法,学会编写数码管的显示程序。
实验内容A:P1 口做输出口,接8只发光二极管L1~L8(高电平时发光二极管点亮),编写程序,使L1~L8流水闪烁。
ORG 0000HSTART: MOV A,#01HMOV R2,#08HLOOP:MOV P1,ALCALL DELAYRL ADJNZ R2,LOOPAJMP STARTDELAY:MOV R5,#40 ;延时1秒D1:MOV R6,#50D2:MOV R7,#248D3:DJNZ R7,D3DJNZ R6,D2DJNZ R5,D1RETEND实验内容B:P1 口做输入口,接拨动开关K1~K8。
单片机原理实验报告

实验一:系统认识实验一、设计目的:1. 学习 Keil C51 集成开发环境的操作;2. 熟悉 TD-51 系统板的结构及使用。
二、设计内容:编写程序,将 00H~0FH 共 16 个数写入单片机内部 RAM 的 30H~3FH 空间。
三、设计步骤:1. 创建 Keil C51 应用程序(1)运行 Keil C51 软件,进入 Keil C51 集成开发环境。
(2)选择工具栏的 Project 选项,弹出下拉菜单,选择 NewProject 命令,建立一个新的μVision2 工程。
这时会弹出文件保存对话框,选择工程目录并输入文件名 Asm1 后,单击保存。
(3)工程建立完毕后,μVision2 会马上弹出器件选择窗口。
器件选择的目的是告诉μVision2 使用的 80C51 芯片的型号是哪一个公司的哪一个型号,不同型号的 51 芯片内部资源是不同的。
此时选择 SST 公司的 SST89E554RC。
(4)到此建立好一个空白工程,现在需要人工为工程添加程序文件,如果还没有程序文件则必须建立它。
选择工具栏的 File 选项,在弹出的下拉菜单中选择 New 目录。
(5)输入程序,完毕后点击“保存”命令保存源程序,将 Text1 保存成Asm1.asm。
Keil C51 支持汇编和 C 语言,μVision2 会根据文件后缀判断文件的类型,进行自动处理,因此保存时需要输入文件名及扩展名.ASM 或.C。
保存后,文件中字体的颜色会发生一定变化,关键字会变为蓝色。
(6)程序文件建立后,并没有与 Asm1.Uv2 工程建立任何关系。
此时,需要将 Asm1.asm 源程序添加到 Asm1.Uv2 工程中,构成一个完整的工程项目。
在Project Window 窗口内,选中Source Group1 点击鼠标右键,选择 Add Files to Group‘Source Group1’命令,此时弹出添加源程序文件对话框,选择文件Asm1.asm,点击 Add 命令按钮即可将源程序文件添加到工程中。
《单片机原理及应用》实验报告

本科生实验报告实验课程XXXXX学院名称XXXXXXXXXXXXXXX专业名称XXXXXXXXX学生姓名XXXX学生学号XXXXXXXXXXXX指导教师XXXXXX实验地点XXXXXX实验成绩二〇一六年四月二〇一六年六月《单片机原理及应用》实验报告摘要《单片机原理及应用》是电子科学与技术、电子信息工程、计算机科学与技术、自动控制等专业工程应用能力和创新能力培养的一门重要专业基础课。
课程重点讲授:单片机存储器体系结构、指令系统与编程技术、中断系统及应用、定时器及应用、外围设备与单片机的接口技术,单片机应用系统设计。
因为单片机这门课是一门实践性很强的课程,单纯学习课本不能掌握这门知识,必须要经过试验课程才能更加具体和深入地学会这门课。
通过试验课的学习,使学生掌握单片机技术及其在工业控制、经济建设和日常生活中的应用,培养学生实践能力、创新能力和新产品设计开发能力,为将来从事电子电器新产品设计开发,电子产品的检测和维护等工作奠定坚实的基础。
本实验板可以实现的实验内容:(1)单片机开发软件及仿真器的使用和P1口实验(2)I/O口实验(交通灯实验,温度传感器,蜂鸣器、I2C)(3)定时器实验(流水灯、交通灯、数码管等)(4)总线实验(流水灯LED、外部RAM)(5)系统扩展(包括:LCD、ADC、DAC、RAM等)(6)通信实验(RS232与计算机之间的串口实验)(7)传感器实验(1-Wire温度实验)(8)键盘实验(扫描接口)(9)电机实验(四相六线式步进电机)(10)时钟实验(RTC—PCF8563)(11)软件实验(多个数求和、排序等)(12)中断实验(外部中断、定时器、UART)本实验设计主要完成了数码管、流水灯、键盘、蜂鸣器等实验,与实验指导书结果符合,了解了部分功能的使用。
关键词:单片机 LED数码显示键盘串口第一章单片机集成开发环境应用一实验目的1.熟悉单片机集成开发软件(Keil);2.掌握单片机实验板的使用;3.掌握单片机P1口使用;二实验内容1、集成开发环境Keil介绍及开发流程Keil μVision4集成开发环境(Integrated Development Environment,IDE)是一个基于Windows的开发平台,它包含高效的源代码编辑器、项目(Project)管理器和程序生成(MAKE)工具。
单片机原理及应用实验报告

ET0=1;
TR0=1;
while (1)
{
ScanKey0( );
keyscan( ); //按键扫描
time_pro( ); //时间处理
display( ); //显示时间
}
}
实验结果:
数码管可以显示时钟的时分秒,按下按键1,可以在时钟的时分秒为切换,按下按键2,可以在选择的任意位+1,从而实现时间的修改。
实验接线图:
实验程序:
#include<reg51.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
uchar code dispcode[ ]={0xC0,0xF9,0xA4,0xB0,0x99,
0x92,0x82,0xf8,0x80,0x90};
loop:
Dsplay();
goto loop;
}
void Dsplay() //动态扫描显示
{uchar i;
for(i=0,P1=0x01;i<6;i++)
{ P0=cDsCode[mDS[i]];//输出段
Delayms(2);
P1=P1<<1; //选通下一位
}
P1=0x00; //关闭位选通
实验五:存储器系统设计
实验目的:掌握存储器工作原理及特点。通过该实验让学生掌握单片机存储器系统的硬件设计,存储器在系统中的地址分配,地址总线、数据总线与控制总线的连接。
实验内容:1.在实验板上将一片6264RAM芯片设计成8K的外部数据存储器,地址为0000H—1FFFH。
MCS51单片机原理及应用 实验报告

单片机原理与应用实验报告学校:合肥工业大学姓名:吕增威学号:班级:计算机科学与技术08-03班目录前言 ------------------------3 第一章 MC51 单片机原理及应用软件实验实验1:系统认识实验--------------------6实验6:数据排序实验(验证性)---------- 11第二章 MC51 单片机原理及应用硬件实验实验1:广告灯实验----------------------15实验2:P1 口实验(验证性)-------------21实验16:串口转并口实验 ----------------32 实验心得与体会---------------37前言一.单片机原理实验的任务单片机原理实验是单片机原理及应用课程的一部分,它的任务是:1.通过实验进一步了解和掌握单片机原理的基本概念、单片机应用系统的硬件设计及调试方法。
2.学习和掌握单片机应用系统程序设计技术。
3.提高应用计算机的能力及水平,提高逻辑动手能力。
二.实验设备单片机实验所使用的设备由计算机、单片机实验开发系统(,其中计算机是软件开发平台,主要完成程序编辑、编译、下载程序等任务;单片机实验开发系统是硬件开发平台,是基于51/196 单片机的扩展实验系统。
计算机和单片机实验开发系统之间是通过RS232 串行接口进行通信的。
单片机实验开发系统配有开关电源、单片机、晶振、存储器、可编程并行接口芯片、键盘显示控制芯片、24 键键盘、六位LED 数码管显示、A/D 及D/A 转换芯片、简单输出口2个、简单输入口1 个、逻辑电平输入开关、发光二极管显示电路,并配有小直流电机、步进电机、继电器、音响等驱动电路。
在计算机软件的控制下可完成单片机基本实验及综合3设计性实验项目。
所有的MCS51 单片机原理及应用课程实验都是在这套实验系统上完成的。
Keil与Proteus的联合使用: Keil C51 6.02的使用:1.打开Keil,新建一个程序文件(File--New),在上面输入要调试的程序,保存为*.asm格式;2.新建一个工程(project--Newproject),保存,在CPU选项了选择Atmel--AT89C51,点击确定,在弹出的选项框中选择“否”。
单片机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;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《单片机实验》实验报告
实验序号:01 实验项目名称:汇编程序之数据排序
点师
一、实验目的及要求
给出一组随机数,将此组数据排序,使之成为有序数列
了解数据排序的简单算法。
二、实验设备(环境)及要求
Wave6000
三、实验内容与步骤
有序的数列更有利于查找。
本程序用的是“冒泡排序”法,算法是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在
数列的最后面。
再进行下一轮比较,找出第二大数据,直到全部数据有序
四、实验结果与数据处理
源程序如下:
MOV 50H,#05H
MOV 51H,#03H。