单片机导论实验讲义(章专)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章单片机软件实验
实验一内存操作
1.实验目的
①掌握数据传送指令;
②掌握各种数据传送指令的寻址方式;
③熟练运用keil 环境对汇编程序进行调试;
④掌握数据传送、复制等程序的设计与调试方法。
2.预习要求
①理解数据传送指令和循环指令的使用;
②理解如何对内部寄存器、内部RAM、外部RAM的读写;
③理解各种寻址方式,尤其是较为抽象的变址寻址及相对寻址的方式;
④认真预习本实验内容,自行编写程序,填写实验报告。
3.实验设备
计算机1台;
4.基础型实验内容
①下列程序的功能是给外部RAM8000~80FFH的256个单元的内容赋值,赋值的内
容取决于程序中A的赋值。在Keil环境运行该程序,并观察寄存器及内存单元的变化。
设置块起始地址
设置块长度
当前地址内容清零
地址加1
否
是否清除完?
是
结束
ORG 0000H
START EQU 8000H
MAIN: MOV DPTR, #START ;起始地址
MOV R0,#0 ;设置256字节计数值
MOV A,#1H
Loop: MOVX @DPTR,A
INC DPTR ;指向下一个地址
DJNZ R0,Loop ;计数值减1
NOP
SJMP $
END
②下列程序将3000H起始的256个字节存储块移动到4000H起始的256个字节存储块,
在Keil环境运行如下程序,观察寄存器及存储单元的变化。
设置块的源地
设置块的目标地址
设置移动长度
从源地址取数
保存到目标地址
源地址加1
目标地址加1
是否移动完?
结束
ORG 0000H
MOV DPTR,#3000H
MOV A,#01H
MOV R5,#O
LOOP: MOVX @DPTR,A
INC DPTR
DJNZ R5,LOOP
MOV R0,#30H
MOV R1,#00H
MOV R2,#40H
MOV R3,#00H
MOV R7,#0
LOOP1: MOV DPH,R0
MOV DPL,R1
MOVX A,@DPTR
MOV DPH,R2
MOV DPL,R3
MOVX @DPTR,A
INC R1
INC R3
DJNZ R7,LOOP1
SJMP $
END
5.设计型实验内容
①在keil环境修改内部RAM 30H ~3FH的内容分别为#00H-#0FH,设计程序实现将内
部RAM30H-3FH到40H-4FH的数据块拷贝。
②在keil环境修改内部RAM 30H ~3FH的内容分别为#00H-#0FH,设计程序实现将片
内30H~3FH单元的内容复制到片外1030H~103FH中。
③在keil环境修改内部RAM 30H ~3FH的内容分别为#00H-#0FH,设计程序实现将内
部RAM30H ~3FH内容逆序拷贝到外部数据XRAM:0000H ~000FH中。使用单步、断点方式调试程序,查看特殊功能寄存器、内部数据RAM、外部数据空间的变化。
实验二数制及代码转换
1.实验目的
①了解微机系统中的数制与代码表示方法;
②掌握计算机中使用的各种代码转换方法;
③掌握实现分支、循环的指令及其程序的编写方法;
2.预习要求
①理解十进制数、十六进制数的数制表示方法;
②理解BCD码、ASCII码编码方式;
③如何实现十六进制数与BCD码之间的转换;
④如何实现ASCII码与BCD码之间的转换。
3.实验设备
计算机1台。
4.基础型实验内容
①以下程序完成单字节的ASCII码到十六进制数转换,完成空白处程序填写,并在
Keil环境运行程序,观察寄存器及内存单元的变化。
RESULT EQU 30H
ORG 0000H
MOV A,#41H ;“A”的ASCII码
CLR C
SUBB A, 31H ; 转换为十六进制值A
MOV RESULT,A
LJMP $
END
②以下程序完成单字节的BCD码到十六进制数转换,,在Keil环境运行程序,观察寄
存器及内存单元的变化。
RESULT EQU 30H
ORG 0000H
MOV A,#23H(把16进制的数23放到A累加器中。0010 0011 H)
MOV R0,A(把A中的数传到寄存器R0中,R0=0010 0011 H)
ANL A,#0F0H(字母开头的16进制数前面要加一个0,0010 0011与1111 0000按位与,得到A:0010 0000 H,20H)
SWAP A(半交换得到A:02H)
MOV B,#0AH(B=A=02H)
MUL AB(A与B逐位相乘,得到0000 0100 H,即是B是0H,A是4 H) MOV RESULT,A ;转换高位(RESULT=4H)
MOV A,R0
MOV B,#0FH
ADD A,RESULT