![单片机原理及应用实验指导书_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-10/31/7bc8b760-078d-424c-8941-23a4775e34c2/7bc8b760-078d-424c-8941-23a4775e34c21.gif)
![单片机原理及应用实验指导书_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-10/31/7bc8b760-078d-424c-8941-23a4775e34c2/7bc8b760-078d-424c-8941-23a4775e34c22.gif)
![单片机原理及应用实验指导书_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-10/31/7bc8b760-078d-424c-8941-23a4775e34c2/7bc8b760-078d-424c-8941-23a4775e34c23.gif)
![单片机原理及应用实验指导书_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-10/31/7bc8b760-078d-424c-8941-23a4775e34c2/7bc8b760-078d-424c-8941-23a4775e34c24.gif)
![单片机原理及应用实验指导书_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-10/31/7bc8b760-078d-424c-8941-23a4775e34c2/7bc8b760-078d-424c-8941-23a4775e34c25.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验一 指令系统和汇编语言程序设计实验 本章实验主要包括指令系统和汇编语言程序设计两部分。采用软件模拟调试的方法,目的在于通过这些实验可以使学生巩固所学知识,加深对MCS-51单片机内部结构、指令系统的理解,更进一步掌握汇编语言程序设计的方法和技巧。实验操作说明Keil 软件调试方式分为:软件仿真方式和硬件调试两种。 软件仿真实验上机操作步骤:1、进入Keil,点击桌面上“Keil Version 3”图标,进入Keil系统窗口;2、新建工程: 1)打开“工程”菜单中的新建,在弹出的对话框中,键入自己定义的工程名;2)在进一步打开的对话框中,选择CPU的类型,为Intel公司的8032AH,确
2、定;3)存入C:keil 文件夹中。(机房,安装在C盘,改为C:keil)3、打开“视图”菜单中的“工程窗口”;4、在“工程窗口”中,右击“目标1”,为工程设置参数; 1)在弹出的快捷菜单中选择“为目标“目标1”设置选项”; 2)在弹出的对话框中选择“项目”选项卡,设置时钟为“12Mhz”; 3)选择“调试”选项卡,在单选框选择“软件仿真方式”; 4)确定,即完成了“软件仿真方式”的设置。5、新建文件 1)打开“文件”菜单,选择“新建”; 2)系统打开一个文本窗口,你可在窗口的编辑区输入要调试的汇编语言源程序; 3)存盘,命名文件名和扩展名,文件名任起,扩展名必须是.asm,存入C:keil
3、文件夹中(在大机房,安装在C盘,改为C:keil);例如:a.asm。6、将刚建的新文件添入当前的工程中 1)在“工程窗口”中,“目标1”的+号处打开,显示“源代码组1”; 2)右击“源代码组1”,在快捷菜单中选择“为“源代码组1”添加文件”,弹出一个对话框; 3)在对话框中选择“文件类型”为*.*; 4) 选择文件所在路径,同时找到刚键入的a.asm文件,点击“add”按钮,然后点击“close”按钮; 5) 在“工程窗口”点击“源代码组1”左侧的+号,显示添加的a.asm文件,添加成功。7、汇编 1)在“工程窗口”点击“源代码组1”的a.asm文件; 2)打开“a.asm”文件编辑窗口;
4、3)点击工具按钮中的“重建所有的目标文件”,进行汇编; 4)在“输出窗口”显示汇编是否有错,无错,进入调试; 有错,在编辑窗口修改程序,改后,再次汇编,直至无错后进入调试;8、调试程序 1)点击“开始/停止调试”按钮,进入调试界面; 2)在程序窗口中有一个黄箭头指向程序的第一条可执行指令的开头; 3)选择调试方式进行调试; 在“调试”菜单中选择:跟踪、单步、运行、断点等方式; 或按单步或跟踪命令按钮,按一次单步,执行一条指令,pc指针指向下一条要被执行的指令; 检查运行结果 打开“视图”菜单,选择“存储器窗口”,弹出存储器对话框; 在存储器对话框的下方选择memory1在地址栏中键入“C:0X
5、0000”回车,建立程序存储器的观察窗口; 选择memory2在地址栏中键入“D:0X00”回车,建立内部数据存储器的观察窗口; 选择memory3在地址栏中键入“X:0X0000”回车,建立外部数据存储器的观察窗口; 在“project workspace”窗口中观察r0-r7,a,pc,dptr,psw,要观察各个标志位,打开psw左侧的+号; 9、设置PC指针 当程序的首地址不是0000H时,汇编结束后,PC指针仍然指向0000H的地方,在调试程序前,一定要将PC设置到你的程序首地址处,方法为:1)将光标移到程序的第一条指令处,击鼠标右键;2)在快捷菜单中选择“Set Program C
6、ounter”命令,PC指针即可指向程序的第一条指令。指令系统实验实验一 熟悉键盘操作及数传指令编程设计一、 实验目的1 熟悉软件模拟调试的环境及键盘操作。2 掌握汇编语言程序设计的方法,加深对指令的理解。3 学会软件模拟调试和察看修改观察项的方法。二、 实验内容印证数据传送指令的功能、寻址方式以及PC指针、SP指针、DPTR指针、Ri指针分别对代码段、堆栈段、外扩数据存储器段、位寻址区等不同存储器的访问方式。 三、实验步骤1 进入调试软件环境,输入源程序;2 汇编源程序;3 用单步方式运行程序;4 检查并记录各寄存器和存储单元内容的变化。四、程序清单1. 内部RAM数据传送(MOV指令)1)
7、寄存器寻址与立即寻址,需要查看的数据有A、PSW和不同寄存器区的Rn等单元的内容。ORG 0000HAJMP 0050HORG 0050HMAIN: MOV PSW,#00H ;RS1=0,RS0=0 0组寄存器 MOV R0,#30H MOV A,R0 MOV R6,A SETB RS1SETB RS0 ; RS1=1,RS0=1 3组寄存器MOV R0,#30H MOV A,R0 MOV R6,AMOV PSW,#10H ;RS1=1,RS0=0 2组寄存器MOV R0,#30H MOV A,R0 MOV R6,ACLR RS1SETB RS0 ;RS1=0,RS0=1 1组寄存器MOV
8、R0,#30H MOV A,R0 MOV R6,A SJMP $ END 2) 直接寻址,需查看30H、31H、32H、40H、ACC、PSW、02H等单元的内容。 ORG 0000H AJMP 0060H ORG 0060HMAIN: MOV 30H,#45H MOV 31H,#46H MOV 02H,31H MOV 0E0H,30H MOV 32H,ACC MOV ACC,PSW MOV 40H,ACC SJMP $ END 3)寄存器间接寻址,需查看R0、RO等的内容。 ORG 0000HAJMP 0070HORG 0070HMAIN:MOV 30H,#66H MOV R0,#30H M
9、OV R0,#30H INC R0 MOV R0,#31H SJMP $ END2. 外部程序存储器数据传送(MOVC指令)根据A中数据查外部程序存储器单元2000H200FH单元中的字形码,依次存入内部RAM以30H开始的单元。ORG 0000HAJMP 0080HORG 0080HMAIN:MOV R0,#30HMOV R2,#08HMOV R3, #00H LOOP: MOV A,R3MOV B,#02H ADD A,B MOV DPTR,#2000H MOVC A,A+DPTR MOV R0,A INC R0 INC R3 DJNZ R2,LOOP SJMP $ ORG 2000H T
10、ABL: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,086H,08EH END3. 堆栈操作(PUSH和POP指令)需要查看的数据有50H、51H、A及SP指针和堆栈区中数据随PUSH和POP指令执行后的变化情况和数据的存放次序等。1)可用于保护现场和恢复现场的程序ORG 0000HAJMP 0090HORG 0090H MAIN:MOV SP,#5FHMOV 50H,#3BHMOV 51H,#2FHMOV A,#12H PUSH 50H PUSH 51H PUSH ACCPOP 0E0H POP
11、51H POP 50H SJMP $ END 2)可用于数据交换的程序ORG 0000HAJMP OOA0HORG 00A0H MAIN:MOV SP,#6FHMOV 50H,#3BHMOV 51H,#2FH PUSH 50H PUSH 51H POP 50H POP 51H SJMP $ END4.数据交换 (SWAP、XCHD、XCH指令) 记录每条指令运行后的结果,从而加深对各种不同的交换指令的理解。 1)SWAP指令 ORG 0000H AJMP 00B0HORG 00B0H MAIN:MOV A,#58H SWAP A MOV 40H,A SJMP $ END 2) XCHD 指令
12、ORG 0000H AJMP 00C0H ORG 00C0H MAIN:MOV A,#30H MOV R0,#30H MOV R0,#09H XCHD A,R0 MOV 41H,A SJMP $ END 3)XCH 指令 ORG 0000H AJMP 00D0H ORG 00D0H AMIN:MOV R0,#50H MOV 50H,#1 MOV A,#89H XCH A,50H MOV R7,#3 XCH A,R7 XCH A,R0 SJMP $ END5. 外部数据存储器数据传送(MOVX指令)将内部RAM中40H单元的内容送到外部数据存储器(或I/O口)3695H单元。1) DPTR 作指
13、针 ORG 0000H AJMP 00F0H ORG 00F0H MAIN:MOV 40H,#99H MOV A,40H MOV DPTR,#3695H MOVX DPTR,A SJMP $ END2) Ri作指针 ORG 0000H AJMP 0100H ORG 0100H MAIN:MOV 40H,#68H MOV A,40H MOV P2,#36H MOV R0,#95H MOVX R0,A SJMP $END五、 思考题1、 寄存器寻址与寄存器间接寻址有什么区别?2、 PC指针与SP指针有什么区别?3、 DPTR指针与Ri(R0,R1)指针有什么区别?4、 立即寻址与直接寻址有什么区别
14、?5、 同一个特殊功能寄存器不同表达形式。6、 三种不同的交换指令的区别是什么?7、 MOVX和MOVC指令的不同点。 实验二 分支程序设计一、 实验目的1. 进一步熟悉MCS-51指令系统,了解汇编语言程序设计的基本结构。2. 掌握分支结构程序设计的方法。3. 学会用条件转移指令、CJNE、JMP及其配合使用来编写二分支、三分支和多分支程序。二、 实验内容 1. 二分支的条件转移程序设变量X存放于R0,函数值Y存放在R1,其中X、Y均为二进制数。试按照下式的要求给Y赋值:Y=1X>00X=0-1X<0 程序框图如图3-5所示:: 三、实验步骤1 根据实验内容和参考程序流程图,编出
15、相应的分支结构程序。2 输入程序,汇编成功;3 用F4(执行到光标处)、F7(跟踪执行)、F8(单步执行)或断点运行等方式调试程序;4 观察程序的流程,记录运行结果。四、思考题1 CJNE指令对CY 有影响吗?用CJNE 和JC/JNC指令配合应注意什么?在用JMP 指令前,若变址>255怎么办? 2用什么指令可以实现多分支之间的隔离?五、实验报告要求写出题目运行结果。六、参考程序清单1、二分支的条件转移程序1) 用二分支结构程序实现: ORG 0000H AJMP 0050H ORG 0050HMAIN: MOV A,R0 JZ LOAD JNB ACC.7,GO MOV A,#0FF
16、H SJMP LOADGO: MOV A,#01HLOAD: MOV R1,A SJMP $ END 2)用三分支结构程序实现: ORG 0000H AJMP 0050H ORG 0050HMAIN: MOV A,R0 JNZ COMP MOV R1,#00H SJMP MP3COMP: CJNE R0,#80H,MP1 MOV R1,#0FFH LJMP MP3MP1: JC MP2 MOV R1,#0FFH LJMP MP3MP2: MOV R1,#01H MP3: SJMP $ END循环程序设计 一、实验目的1 进一步熟悉MCS-51指令系统,了解汇编语言程序设计的基本结构。掌握循环结
17、构程序设计的方法,弄清单重及多重循环控制过程。2 掌握典型算法:冒泡排序法。二、 实验内容设计循环程序:冒泡法排序。具体要求:设单片机8031外部RAM从3600H单元开始存放10个无符号数,试编写程序能使它们按从大到小的顺序排列(最大数存放在3600H单元)。 三、 实验步骤1 输入预先编好的程序,汇编成功;2 用自动单步方式执行程序,观察循环计数器的变化情况。3 用断点运行方式调试排序程序,记录排序过程。四、 参考流程图 程序流程图如图3-7所示。五、循环结构程序参考清单:冒泡法排序法参考程序清单:ORG 0000H AJMP 0050H ORG 0050HMAIN: MOV PSW,#0
18、0H MOV P2,#36H MOV R2,#10-1LPP0: MOV R0,#00H MOV R1,#01H MOV 03H,R2 CLR 7FHLPP1: MOVX A,R0 MOV 30H,A MOVX A,R1 CJNE A,30H,LPP2 SJMP LL1LPP2: JC LL1 MOVX R0,A XCH A,30H MOVX R1,A SETB 7FHLL1: INC R0 INC R1 DJNZ R3,LPP1 JNB 7FH,LPP3 DJNZ R2,LPP0LPP3: SJMP $ END六、思考题1、若用DJNZ或CJNE指令来控制循环,编写程序有什么不同?2、如何将
19、排序程序修改为只用一个指针?3、将无符号数排序程序修改为带符号数排序。实验三 LED 流水灯实验一、实验目的:1、进一步熟悉Keil C51集成开发环境调试功能的使用2、学会自己编写程序,进行编译、仿真调试3、学会使用单片机的P0口作为I/O口去控制外围电路,实现LED灯以固定的频率进行闪烁。二、实验设备:1、PC机2、SW-51PROC单片机综合实验平台三、实验内容:1、编写一段程序,用单片机P0口的8个输出去控制8个LED灯,实现如下功能:先使8个LED灯轮流点亮,从左向右移动,时间间隔0.5s。以上过程循环实现。四、实验步骤:1、实验原理图:2、硬件连线方式:用杜邦线将“MCU”区的P0
20、口 “P0.0-P0.7”与“8-LED”模块区的“L1-L8”依次相连。编写程序思路:用单片机P0口的8位输出控制8个LED灯,每次只点亮一只LED,8只LED灯依次点亮,如此循环即可形成流水灯。3、实验箱的时钟:晶振频率为11.0592MHzTose=1/(11.0592*1000000)=0.0904us1个机器周期为0.0904us*12=1.085us4、源程序:*/#include <reg52.h>#define uchar unsigned char#define uint unsigned int#define PORT P0uchar code dis = 0x
21、fe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf, 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd;/*延时函数*/void delay_50ms(uint t) uint i;for(;t>0;t-) for(i=6245;i>0;i-);/*主函数*/void main(void) uchar *p=dis; while(1) for(p=dis;p<(dis+14);p+)PORT=*p;delay_50ms(10); /*结束*/5、运行程序:把编写好的程序输入PC机中,用Keil软件进行编译,编译无误的情况下,运行该程序,此时L
22、ED灯会依次轮流点亮。6、实验报告要求:1、实验名称2、实验目的3、实验设备4、实验内容5、实验原理(图要画完整)及控制方法合过程详细的说明6、实验编写的程序7、实验结果8、心得和建议(1)首先知道LED的工作原理。共阴级共阳极,此实验板是共阳极,要亮,的加一个高电平。由于这8个LED灯与P0口相连,所以直接通过P0口控制其亮灭就可以。依次开启每个灯,同时开启时要亮一定的时间。时间可以自己定义,也可以利用定时器实现。具体的汇编程序如下:ORG 0000HLJMP MAIN ORG 0050HMAIN:MOV R0,#14 MOV DPTR,#TABLEL0: MOV A,#0L1: MOVC
23、A,DPTR+A MOV P0,A ACALL DELAY1 INC ADJNZ R0,L1SJMP L0 DELAY1: MOV R1,#250LOOP1: MOV R2,#250LOOP2: NOP NOP NOP NOP NOP DJNZR0,LOOP2 DJNZR1,LOOP1 RETTABLE:DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH END大家可以换一种亮灭的方式,只是通过修改表中的相应的信息,同时将程序做适当的修改,就可以达到预想的效果。实验四 数码管动态扫描实验一、实验目的:
24、学习计数器的设计、分析合测试方法。学习硬件扫描显示电路的设计方法。二、实验设备:1、PC机2、SW-51PROC单片机综合实验平台三、实验内容:编写一段程序,用单片机P0口和P2口的I/O输出去控制8位的数码管显示,实现如下功能:使数码管上显示1、2、3、4、5、6、7、8。四、实验步骤:1、实验原理图: 2、硬件连线方式:1、MCU模块的P0口的“p0.0-p0.7” 分别连接到“8-SEG模块”的“a-dp” 依次相连。2、MCU模块的P2口的“p2.0-p2.7”分别连接到“8-SEG模块”的“DS1-DS8” 依次相连。3、源程序:*/#include<reg52.h>#d
25、efine uchar unsigned char#define uint unsigned int/*段码表*/uchar code led=0Xc0,/*0*/ /七段译码表 0Xf9,/*1*/ 0Xa4,/*2*/ 0Xb0,/*3*/ 0X99,/*4*/ 0X92,/*5*/ 0X82,/*6*/ 0Xf8,/*7*/ 0X80,/*8*/ 0X90,/*9*/ 0X88,/*A*/ 0X83,/*b*/ 0Xc6,/*C*/ 0Xa1,/*d*/ 0X86,/*E*/ 0X8e,/*F*/;uchar *p = led+1,led+2,led+3,led+4,led+5,led+6,led+7,led+8;/*延时函数*/void delay_us(uint t) /usdo t-; while(t>1);void delay_ms(uint t) /ms while(t!=0) delay_us(142); t-; /*扫描*/void display() uchar i;uchar *pt = p; for(i=0;i<8;i+) switch(i)case 0: P2 = 0x7f; break;case 1:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度新一代高性能计算机设备采购合同
- 钦州2025年广西钦州市市直中学教师专场招聘140人笔试历年参考题库附带答案详解
- 西安2025年陕西西安音乐学院招聘6人笔试历年参考题库附带答案详解
- 红河云南民建红河州委招聘公益性岗位人员笔试历年参考题库附带答案详解
- 百色2025年广西百色学院招聘187人笔试历年参考题库附带答案详解
- 珠海广东珠海高新区科技产业局招聘专员笔试历年参考题库附带答案详解
- 滁州2025年安徽滁州凤阳县城区学校选调教师143人笔试历年参考题库附带答案详解
- 楚雄云南楚雄双江自治县综合行政执法局招聘编外长聘人员笔试历年参考题库附带答案详解
- 惠州2025年广东惠州市中医医院第一批招聘聘用人员27人笔试历年参考题库附带答案详解
- 2025年速冻麻竹笋项目可行性研究报告
- 中国氢内燃机行业发展环境、市场运行格局及前景研究报告-智研咨询(2024版)
- 开学季初三冲刺中考开学第一课为梦想加油课件
- 《自然保护区划分》课件
- 2025年普通卷钉项目可行性研究报告
- 2025年人教版英语五年级下册教学进度安排表
- 2025年建筑施工春节节后复工复产工作专项方案
- 学校食堂餐厅管理者食堂安全考试题附答案
- 《商用车预见性巡航系统技术规范》
- 玻璃电动平移门施工方案
- 春季安全开学第一课
- 陕鼓集团招聘笔试题目
评论
0/150
提交评论