华北水利水电-单片机实验报告(答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机实验报告
指导老师:雷冀南
学院:机械学院
专业:机械设计制造及其自动化专业学号:
姓名:
实验一汇编语言源程序编辑
一、实验目的:
了解软件μVision4.0的安装,熟悉在μVision4.0软件环境下进行单片机汇编源程序的编辑和修改,学会使用利用μVision4.0软件监控单片机各个寄存器以及存储器的数据变化等。
二、实验内容:
1、软件的安装和使用
μVision4.0软件的详细安装过程和使用说明请参考相关资料。
2、汇编源程序的编辑
1)编辑和运行下面源程序,并按要求完成实验报告。
实验A存储器块清零S1.ASM
BLOCK EQU6000h
MAIN:MOV DPTR,#BLOCK;起始地址
MOV R0,#10H;存储块长度
CLR A
LOOP:MOVX@DPTR,A
INC DPTR;指向下一个地址
DJNZ R0,LOOP;记数减一
LJMP$
END
实验B二进制到ASCII码转换S2.ASM
;将A拆为二个ASCII码,并存入Result开始的二个单元
RESULT EQU20H
ORG0000H
MAIN:MOV SP,#40H
MOV A,#1AH
CALL BinToHex
LJMP$
BinToHex:
MOV DPTR,#ASCIITab
MOV B,A;暂存A
SWAP A
ANL A,#0FH;取高四位
MOVC A,@A+DPTR;查ASCII表
MOV RESULT,A
MOV A,B;恢复A
ANL A,#0FH;取低四位
MOVC A,@A+DPTR;查ASCII表
MOV RESULT+1,A
RET
ASCIITab:303132
333435
363738
394142434445
46DB '0123456789ABCDEF'
;定义数字对应的ASCII 表
END
实验C 内存块移动S3.ASM
ORG 0000H MAIN:MOV R0,#30h
MOV R1,#00h MOV R2,#40h MOV R3,#00h MOV R7,#0LOOP:MOV DPH,R0
MOV DPL,R1MOVX A,@DPTR MOV DPH,R2MOV DPL,R3MOVX @DPTR,A CJNE R1,#0FFH,GO1INC R0GO1:INC R1
CJNE R1,#0FFH,GO2INC R2GO2:INC R3
DJNZ R7,LOOP
LJMP $END
注意:源文件生成之后注意分别保存为s1.asm、s2.asm、s3.asm 的文件名三、实验报告
1、记录详细实验步骤
1)双击μVision 4.0安装文件,同意条款,编辑信息,安装D 盘,完成点击Finish 即可。
2)打开μVision 4.0图标,在File 下找到序号,打开破解机进行破解。3)建立单片机文件夹,在其内建实验一文件夹。
4)在μVision 界面点击project 选项,单击New μVision project,命名为S1,在Atmel 选AT89S51单片机,确定。
5)在File 里点击New,输入程序A,点击保存S1.asm。
6)在project 选项中点击“options for Target‘target1’”晶振频率设定为12MHZ,“Output”中打上creat HEX.File 选项,在Debug 选择Use simulator,确定。
;起始地址从0000H 开始;将30h 赋予R0;将00h 赋予R1;将40h 赋予R2;将00h 赋予R3;将0赋予R7
;将(R0)赋予(DPH );将(DPL )赋予(R1);将DPTR 存的内容送给A ;将(R2)给(DPH );将(R3)给(DPL)
;将A 的内容写入外部RAM ,DPTR 中
;若(R1)≠0FFH ,程序转到GO1执行,若(R1)=0FFH ,顺序执行;R0=(R0)+1;R1=(R1)+1
;若(R1)≠0FFH ,程序转到GO2执行,若(R1)=0FFH ,顺序执行;R2=(R2)+1;R3=(R3)+1
;R7=(R7)-1,若R7≠0,则执行LOOP ,否则,顺序执行
;程序在此处跳动执行;程序结束
7)Project workspace在Target1单击右键,选“Add File to Target”,在project中点击Rebuild all Target files,若无错误,在Debug选项单击“start/stop Debug session”,单击run进行运行。观察PC值,再点击“start/stop Debug session”返回编辑界面。
8)在S1.hex用记事本进行打开,观察记录。
9)再次点击“NewμVision project”命名为S2.asm,按以上步骤操作,输入实验B程序,保存并运行。发现错误,进行修改。定义0~F的ASCII码表“DB”
类型,修改运行。
10)再次单击“NewμVision project”命名S3.asm新建工程,运行无误,添加注释。
2、列写实验A中源程序的PC值和机器码。
PC值依次为:$0x0000-3-5-6-7-8-A
机器码:0D0000009060007810E4F0A3D8FC02000A24
:00000001FF
将储存单元6000H~6010H清零。
3、找出实验B中的错误语句,并改正。
改正后为:在实验B的程序中,出错的地方在于对数字对应的ASC II表定义出错。
可将“{”区域该片如下:
ASCIITab:DB30H,31H,32H
33H,34H,35H
36H,37H,38H
39H,41H,42H
43H,44H,45H
46H
4、实验C添加注释。(见上页实验C程序后面的注释)
5、实验总结。
通过这次试验,使我更加熟悉了uvision的使用方法。Uvision是一款类似于VC6.0的软件。但是它还可以显示出各个寄存器的存储情况,便于程序的调试。而且在程序中编辑过程中要注意大小写等各种问题。
实验二汇编语言源程序调试
一、实验目的
1、掌握MCS-51指令系统传送指令的汇编语言程序设计和调试方法;
2、熟悉用WAVE6000汇编调试软件及在线仿真调试。
二、实验内容
1、编写多字节数据的传送程序,把内部RAM的30H--37H单元赋值为10H-17H,然后传送到外部的RAM的0100H--0107H单元;再将0100H--0107H单元逐一求反后送到内部RAM的38H—3FH单元。
2、程序结构采用循环结构