哈工大单片机原理与应用满分实验报告
- 格式:doc
- 大小:4.27 MB
- 文档页数:28
H a r b i n I n s t i t u t e o f T e c h n o l o g y单片机原理与应用实验报告学生姓名学号 11105103班级 1105103专业通信工程任课教师张云所在单位电子与信息工程学院2014年4月软件实验在软件实验部分,通过实验程序的调试,使学生熟悉MCS-51的指令系统,了解程序设计过程,掌握汇编语言设计方法以及如何使用实验系统提供的调试手段来排除程序错误。
实验一清零程序一、实验目的掌握汇编语言设计和调试方法,熟悉键盘操作。
二、实验内容把2000~20FFh的内容清零。
三、程序框图四、实验过程实验过程:根据流程图编写代码,通过Dais进行仿真验证实验原理:对目标段内容分别赋值00H,并通过循环与判断完成段内容的分别赋值。
五、实验结果及分析1、2000H~20FFh中的内容是什么?答:程序对2000H~20FFH进行了清零操作,2000H~20FFH中的内容全为00H。
六、实验源程序;清零程序ORG 0640HMOV DPTR,#2000HMOV A,#00HMOV R0,#0FFHMOVX @DPTR,ALOOP: INC DPTRMOVX @DPTR,ADJNZ R0,LOOPEND实验二拆字程序一、实验目的掌握汇编语言设计和调试方法。
二、实验内容把2000h的内容拆开,高位送2001h低位,低位送2002h低位,2001h、2002h高位清零,一般本程序用于把数据送显示缓冲区时用。
三、程序流程四、实验过程实验过程:根据流程图编写代码,通过Dais进行仿真验证实验原理:把2000h的内容拆开,高位送2001h低位,低位送2002h低位,2001h、2002h高位清零。
五、实验结果及分析如果将2001h、2002h高位置1,程序该如何修改?答:修改程序如下:ORG 0640HMOV DPTR,#2000H ;(2000H)送DPTRMOVX A,@DPTRSWAP AANL A,#FFH ;修改之处INC DPTRMOVX @DPTR,AMOV DPTR,#2000H ;(2000H)送DPTR MOVX A,@DPTRANL A,#FFH ;修改之处INC DPTRINC DPTRMOVX @DPTR,ASJMP $END六、实验源程序;拆字程序ORG 0660HMOV DPTR,#2000HMOVX A,@DPTRSWAP AANL A,#0FHMOV DPTR,#2001HMOVX @DPTR,AMOV DPTR,#2000HMOVX A,@DPTRANL A,#0FHMOV DPTR,#2002HMOVX @DPTR,AEND实验三拼字程序一、实验目的进一步掌握汇编语言设计和调试方法。
二、实验内容把2000h、2001h的低位分别送入2002h高低位,一般本程序用于把显示缓冲区的数据取出拼装成一个字节。
三、程序流程四、实验过程实验过程:根据流程图编写代码,通过Dais进行仿真验证实验原理:把2000h、2001h的低位分别送入2002h高低位,完成拼字。
五、实验结果及分析运行程序后2002h的最终内容是?答:2000H为13H,2001H为44H,运行后2002H为34H。
六、实验源程序;拼字程序ORG 0640HMOV DPTR,#2000H ;(2000H)送DPTRMOVX A,@DPTRANL A,#0FHSWAP AMOV B,AMOV DPTR,#2001H ;(2001H)送DPTRMOVX A,@DPTRANL A,#0FHORL A,BINC DPTRMOVX @DPTR,ASJMP $END实验四数据区传送子程序一、实验目的掌握RAM中的数据操作。
二、实验内容把R2、R3源RAM区首址内的R6、R7字节数据传送到R4、R5目的RAM区。
三、程序流程四、实验过程实验过程:根据流程图编写代码,通过Dais进行仿真验证实验原理:把R2、R3源RAM区首址内的R6、R7字节数据传送到R4、R5目的RAM区。
五、实验结果及分析R4、R5所定义的目的地址单元内容是什么?答:R4、R5所定义的目的地址单元内容是30 00 32 00 34 00 00 00 38 01 00 00 00 00 00 00。
六、试验源程序;数据区传送子程序ORG 07B0HMOV R2,#30H MOV R3,#00H MOV R4,#40H MOV R5,#00H MOV R6,#00H MOV R7,#0FH MOV DPH,R6 MOV DPL,R7 MOVX A,@DPTR MOV R1,ALOOP:MOV DPH,R2MOV DPL,R3MOVX A,@DPTRMOV DPH,R4MOV DPL,R5MOVX @DPTR,AINC R3INC R5DJNZ R1,LOOPEND实验六查找相同数个数一、实验目的熟悉汇编语言编程。
二、实验内容在2000~200Fh中查出有几个字节是零,把个数放在2100h中。
三、程序框图四、实验过程实验过程:根据流程图编写代码,通过Dais进行仿真验证实验原理:在2000~200Fh中查出有几个字节是零,把个数放在2100h中。
五、实验结果及分析如需查找0FF,需修改程序哪个语句,如何修改?答:MOV DPTR,#2000H ;(2000H)送DPTRMOV R0,#0FHMOV R1,#00HLOOP: MOVX A,@DPTRINC DPTRDJNZ R0,LOOPCJNE A,#0FFH,LOOP1 ;修改之处LJMP LOOP2LOOP1: INC R1 LJMP LOOP LOOP2: MOV DPTR,#2100H MOV A,R1 MOVX @DPTR,A SJMP $END六、试验源程序 ;查找相同数个数 ORG 0AA0H MOV R0,#10H MOV R1,#00H MOV DPTR,#2000H L1: MOVX A,@DPTR CJNE A,#00H,L2INC R1 L2: INC DPTR DJNZ R0,L1 MOV A,R1 MOV DPTR,#2100H MOVX @DPTR,A END实验七 无符号双字节快速乘法子程序一、实验目的掌握MCS-51汇编语言程序设计方法。
二、预备知识本程序是利用单字节的乘法指令,根据下面的公式进行乘法运算的: (R2 R3)×(R6 R7)= ((R2)×28+(R3))×((R6)×28+(R7))= (R2)×(R6)×216+(R2)×(R7)+(R3)×(R6)×28+(R3)*(R7) 三、实验内容将(R2 R3)和(R6 R7)中双字节无符号整数相乘,积送R4 R5 R6 R7中。
四、程序框图四、实验过程实验过程:根据流程图编写代码,通过Dais进行仿真验证五、实验结果及分析寄存器R2、R3、R6、R7分别输入01、10、11、10,运行程序,R4、R6中的内容是什么?答:R4、R6中的内容分别是01和15。
六、试验源程序;无符号双字节快速乘法子程序ORG 0970HQKUL: MOV A,R3MOV B,R7MUL AB ;R3*R7XCHA,R7 ;R7=(R3*R7)低字节MOVR5,B ;R5=(R3*R7)高字节 MOV B,R2MUL AB ;R2*R7 ADD A,R5MOV R4,ACLR AADDC A,BMOVR5,A ;R5=(R2*R7)高字节 MOV A,R6MOV B,R3 MUL AB ;R3*R6ADD A,R4XCH A,R6XCH A,BADDC A,R5MOV R5,AMOV PSW.5,C ;存CYMOV A,R2MUL AB ;R2*R6ADD A,R5MOV R5,ACLR AMOV ACC.0,CMOV C,PSW.5 ;加上次加法的进位ADDC A,BMOV R4,ASJMP $END实验八多分支程序一、实验目的掌握汇编语言的编程。
二、实验内容编写程序,根据送入的数据转移运行。
三、程序框图四、实验过程该部分要求描述实验过程及原理分析五、实验结果及分析1、如何修改程序使数据循环变慢,同时将0字循环改为4字循环?答:修改延时程序DLY,增长延时时间原延时程序:DLY:MOV R3,#0A0HDL1:MOV R4,#7DHDL2:NOPNOPDJNZ R4,DL2 DJNZ R3,DL1RETEND修改后的延时程序:DLY:MOV R3,#0FHDL1:MOV R4,#7DHDL2:NOPNOPDJNZ R4,DL2DJNZ R3,DL1RETEND将0字循环改为4字循环:修改后的子程序ROUT0:MOV 20H,#99HMOV A,20HMOV R0,#0DCHMOV R1,#0DDHMOVX @R0,AMOV A,#01HLP0: MOVX @R1,AACALL DLYRL ASJMP LP0六、试验源程序;多分支程序ORG 0000HMOV 20H,#03H MOV A,20H RL AADD A,20HMOV DPTR,#PTABJMP @A+DPTRPTAB: LJMP PM0LJMP PM1LJMP PM2LJMP PM3PM0: MOV R0,#0DCH ;指向字形口 MOV A,#0C0H ;确定字形代码 LJMP PM4PM1: MOV R0,#0DCH ;指向字形口 MOV A,#0C0H ;确定字形代码 LJMP PM4PM2: MOV R0,#0DCH ;指向字形口 MOV A,#0A4H ;确定字形代码 LJMP PM4PM3: MOV R0,#0DCH ;指向字形口 MOV A,#0B0H ;确定字形代码 LJMP PM4PM4: MOVX @R0,A ;输出字形代码 MOV R1,#0DDH ;指向字位口 MOV A,#20H ;从最高位开始LEDO: MOVX @R1,A ;输出字位代码 MOV R2,#18H ;确定延时常数 ACALL DEYS ;调延时子程序 RL A ;左移一位SJMP LEDO ;循环演示DEYS: PUSH 02H ;延时子程序DEY0: PUSH 02HDEY1: PUSH 02HDJNZ R2,$POP 02HDJNZ R2,DEY1POP 02HDJNZ R2,DEY0POP 02HDJNZ R2,DEYSRET ;返回END实验十电脑时钟(定时器、中断器综合实验)一、实验目的熟悉MCS-51定时器,串行口和中断初始化编程方法,了解定时器的应用实时程序的设计与调试技巧。
二、实验内容编写程序,从本实验系统键盘上输入时间初值,用定时器产生0.1S定时中断,对时钟计数器计数,并将数值实时地送数码管显示。