单片机导论实验讲义(章专)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档