实验一内部RAM数据传送程序设计.docx

上传人:b****5 文档编号:12095583 上传时间:2023-04-17 格式:DOCX 页数:78 大小:208.45KB
下载 相关 举报
实验一内部RAM数据传送程序设计.docx_第1页
第1页 / 共78页
实验一内部RAM数据传送程序设计.docx_第2页
第2页 / 共78页
实验一内部RAM数据传送程序设计.docx_第3页
第3页 / 共78页
实验一内部RAM数据传送程序设计.docx_第4页
第4页 / 共78页
实验一内部RAM数据传送程序设计.docx_第5页
第5页 / 共78页
点击查看更多>>
下载资源
资源描述

实验一内部RAM数据传送程序设计.docx

《实验一内部RAM数据传送程序设计.docx》由会员分享,可在线阅读,更多相关《实验一内部RAM数据传送程序设计.docx(78页珍藏版)》请在冰豆网上搜索。

实验一内部RAM数据传送程序设计.docx

实验一内部RAM数据传送程序设计

实验一内部RAM数据传送程序设计

一、实验目的

1.学习MCS-51微控制器汇编语言的编写。

2.了解51微控制器内部RAM的读写及调试方法。

二、实验设备

用wave模拟软件进行实验.

三、实验原理

51微控制器片内RAM低128字节(00H~7FH)包含工作寄存器区(00H~1FH)、位操作区(20H~2FH)和数据区(30~7FH)。

对该128字节的RAM区,均可采用直接寻址和间接寻址方式,若采用间接寻址用R0或R1作间址寄存器。

特殊功能寄存器占用片内RAM地址空间80H~FFH,对它只能采用直接寻址方式。

数据传送指令是汇编语言程序设计的基本要素,数据块传送也是程序设计的基本技巧之

四、实验内容及要求

试编写程序:

先把内部RAM的(30H~7FH)单元清零,然后将30H-7FH单元内55H的值.

五、实验步骤

1.打开计算机,打开wave软件,进入仿真环境,选择软件模拟器,选择仿真器,仿真头选择,选择CPU。

2.打开“实验程序/8051程序/RAM.asm”程序

3.按照程序注释设置断点。

4.点击工具条的运行按钮,程序运行到第一个断点处,打开窗口-data数据观察窗口,进行观察30H-7FH单元的值。

5.然后再点击运行按钮,程序会运行到第二个断点处,此时,观察30H-7FH单元的值变化。

六、实验报告要求

1.整理实验程序程序,理解程序。

2.如果把程序1中(30H~7FH)单元的内容改为66H,如何修改程序。

3.理解数据指针:

数据块传送若在内部RAM中进行,用什么作数据指针?

若在外部RAM或ROM中进行,用什么作数据指针?

4.存储器和数据存储器的地址空间可以重叠,对此如何解释?

七、实验参考程序

ORG0000H

CLEAR:

MOVR0,#30H;30H送R0寄存器

MOVR6,#50H;4FH送R6寄存器(计数)

CLR1:

MOVA,#00H;00送累加器A

MOV@R0,A;00送到30H-7FH单元

INCR0;R0加1

DJNZR6,CLR1;不到4F个字节再清

NOP;此处设断点观察30H-7FH单元的值

MOVR0,#30H

MOVR6,#50H

LOOP:

MOVA,#55H

MOV@R0,A

INCR0

DJNZR6,LOOP

AJMP$;此处设断点观察30H-7FH单元的值

END

图1

实验二算术运算程序设计

一、实验目的

1.学习单片机算术运算、逻辑运算等指令。

2.练习其指令的使用和编程方法。

二、实验设备

使用WAVE仿真器的软件模拟器进行实验。

三、实验原理

微控制器具有较强的加、减、乘、除等数学运算功能,这些运算可直接对8位无符号二进制数进行运算。

利用溢出标志,还可以把加、减法运算用于有符号数的运算;用十进制调整指令,又可使运算直接用十进制(BCD码)来进行。

应用算术运算指令要注意使用条件,要靠灵活运用指令,进行适当的编程才能得到正确结果。

四、实验内容及要求

1.试编写多字节十进制加法程序:

入口参数:

R0—加数首地址;R1—被加数首地址;R2—字节数;出口参数:

R0—和首地址。

2.试编写双字节无符号整数相乘程序:

入口参数:

(R2R3)被乘数;(R6R7)乘数;出口参数:

(R4R5R6R7)乘积。

五、实验步骤

1.打开计算机,进入wave仿真软件环境,建立项目文件,建立汇编源文件;启动编译、连接;进入调试状态。

2.据实验内容要求,在寄存器窗口分别将R0、R1、R2置成20、30、02;在片内数据区(20H~21H),(30H~31H)单元分别置入加数和被加数,用连续或单步的方式运行程序ADD.ASM,检查程序及结果是否正确。

3.实验内容要求,在寄存器窗口分别给R2R3和R6R7设置数据,运行程序“实验程序/8051程序/RAMMUL.ASM”,检查程序及结果是否正确。

六、实验报告要求

1.画出程序框图,整理实验程序。

2.若进行多字节二进制加法,程序1应如何修改?

编写程序,并运行验证。

3.每一实验程序做出3到5组实验数据,验证实验程序及结果是否正确,并记录。

七、实验参考程序

ADD.ASM:

多字节十进制加法程序

ORG0000H

CLRC

LOOP:

MOVA,@R0;取低位加数

ADDCA,@R1;低位相加

DAA;调整

MOV@R0,A;低位和送R0地址

NCR0

INCR1

DJNZR2,LOOP

NOP

END

MUL.ASM:

双字节无符号整数相乘程序

ORG0000H

QKUL:

MOVA,R3

MOVB,R7

MULAB;R3*R7

XCHA,R7;R7=(R3*R7)的低字节

MOVR5,B;R5=(R3*R7)的高字节

MOVB,R2

MULAB;R2*R7

ADDA,R5

MOVR4,A

CLRA

ADDCA,B

MOVR5,A;R5=(R2*R7)的高字节

MOVA,R6

MOVB,R3

MULAB;R3*R6

ADDA,R4

XCHA,R6

XCHA,B

ADDCA,R5

MOVR5,A

MOVPSW.5,C;存CY

MOVA,R2

MULAB;R2*R6

ADDA,R5

MOVR5,A

CLRA

MOVACC.0,C

MOVC,PSW.5;加上一次加法的进位.

ADDCA,B

MOVR4,A

SJMP$

END

实验三数据处理程序设计

一、实验目的

1.学习数据检索的方法和程序设计技巧。

2.学习数据交换及逻辑运算指令的使用。

3.学习数据比较指令的使用,熟悉冒泡法排序编程。

二、实验设备

使用wave软件模拟仿真器

三、实验原理

实际应用当中,多数情况下在进行核心算法之前,要进行数据准备,比如数据检索;按某种规律将一组数据排序;有时还要将一个字节的8位数据打乱,按某种规律重新排序。

当然数据传送也是一种准备,诸多方式的数据准备统称为数据处理。

数据检索:

指在数据区查找关键字的操作。

数据排序:

数据排序的方法很多,本实验以冒泡法为例。

所谓冒泡法是一种相邻数据互换的排序方法,其过程类似水中汽泡上浮。

此方法排序效率较高。

四、实验内容

1.试编写程序:

关键字检索,将实验数据存入50H单元开始的内存区,数据长度存入60H单元,关键字存入61H单元,检索到关键字后,62H单元存入关键字所在的地址;若未检索到,则62H单元内容置0。

2.试编写程序:

拼字程序。

把30H,31H单元的低位内容合并成一个字节,送70H单元。

本程序一般用在读显示缓冲区。

3.试编写程序:

将R5中的单字节8位数据反序排列,原顺序为D7~D0,排序后顺序为D0~D7;结果存入寄存器R6中。

五、实验步骤

1.打开WAVE仿真软件,选择模拟仿真,根据实验内容要求,在窗口/数据窗口/DATA的50H-5EH设置000102030405060708090a0b0e的数据,60H单元置08h,61H单元置05,运行实验程序/8051程序/jiansuo.asm源程序,停止后查看62H单元的值是否为55H,结果是否正确。

2.打开WAVE仿真软件,选择模拟仿真,点击文件/新建文件/在编辑窗口输入程序2的程序,保存为后缀为.asm的文件,然后编译,在窗口/数据窗口/DATA的30h单元置28H,31H单元置置49H值,运行程序后暂停,查看窗口/数据窗口/XDATA的8000H单元的值是否为89H。

3.根据实验内容要求,在窗口/CPU窗口/REG/R5中,将R5赋值,运行程序3,观察窗口/CPU窗口/REG/R6的值是否正确。

六、实验报告要求

1.画出程序框图,整理实验程序。

2.每一实验程序做出3到5组实验数据,验证实验程序及结果是否正确,并记录。

七、实验参考程序

程序1:

关键字检索程序:

ORG0000H

MOVR0,#50H

MOVR1,60H

LOOP:

MOVA,@R0

CJNEA,61H,LOOP1

MOV62H,R0

SJMPHERE

LOOP1:

INCR0

DJNZR1,LOOP

NEXT:

MOV62H,#00H

HERE:

SJMPHERE

END

程序2:

拼字程序

ORG0000H

AJMPMAIN

ORG0030H

MAIN:

NOP

PZCX:

MOVA,30H;读30H单元内容到A

ANLA,#0FH;屏蔽了A的高位

SWAPA;高低位交换

MOVB,A;暂时存放在B中

MOVA,31H;读31H的内容到A

ANLA,#0FH;屏蔽了A的高位

ORLA,B;A和B进行或操作

MOVDPTR,#8000H

MOVX@DPTR,A;结果送入8000H

WAIT:

SJMPWAIT

END

程序3:

单字节8位数据反序排列

ORG0000H

AJMPMAIN

ORG0030H

MAIN:

MOVR2,#08H

MOVA,R5

MOVR7,A

LOOP:

MOVA,R7

RLCA

MOVR7,A

MOVA,R6

RRCA

MOVR6,A

DJNZR2,LOOP

AJMP$

END

实验四数制转换程序设计

一、实验目的

1.学习ASCII码与十六进制互换算法及程序设计方法。

2.学习十六进制与BCD码互换算法及程序设计方法。

二、实验设备

Wave软件模拟仿真器。

三、实验原理

人们在日常生活中习惯使用十进制,而计算机键盘和显示常采用二进制编码的十进制数(即BCD码)或ASCII码。

因此各种代码之间的转换是回避不了的。

学习程序设计就应该掌握数字之间的转换。

1.十六进制数与ASCII码的转换依据下面对应关系进行:

十六进制数012……9AB……F

ASCII码303132……394142……46

2.单字节16进制数转换成10进制数,依据的算法是:

将16进制数除以100,商作百位数,将余数除以10,商作十位数,余数即个位数。

四、实验内容

1.多位十六进制数转换成ASCII码:

入口参数:

R0十六进制数地址指针;R2字节数;出口参数:

(R1)转换后ASCII码的地址指针。

2.八位二进制数转换成压缩BCD码:

入口参数:

R2存放八位二进制数;出口参数:

寄存器R3R4中存放压缩BCD码。

五、实验步骤

1.根据实验内容,分别在片内数据区和寄存器区赋值,运行程序1,查看程序及结果是否正确。

2.根据实验内容,分别在片内数据区和寄存器区赋值,运行程序2,查看程序及结果是否正确。

六、实验报告要求

1.画出程序框图,编写程序。

2.将程序1中@A+PC变址寻址方式改为@A+DPTR变址方式,修改程序并运行验证。

3.每一实验程序做出3到5组实验数据,验证实验程序及结果是否正确,并记录。

4.比较两种变址寻址方式的编程方法有何差别?

七、实验参考程序

程序1:

多位十六进制数转换成ASCII码

ORG0000H

AJMPSTART

ORG0030H

START:

MOVA,@R0

ANLA,#0FH

MOVDPTR,#TAB

MOVCA,@A+DPTR;查表得低四位ASCII码

MOV@R1,A

INCR1

MOVA,@R0

SWAPA

ANLA,#0FH

MOVDPTR,#TAB

MOVCA,@A+DPTR;查表得高四位ASCII码

MOV@R1,A

INCR0

INCR1

DJNZR2,START;没转换完继续

AJMP$

NOP

TAB:

DB30H,31H,32H,33H,34H,35H,36H,37H,38H,39H

DB41H,42H,43H,44H,45H,46H

END

程序2:

八位二进制数转换成BCD码的程序:

ORG0000H

AJMPSTART

ORG0100H

START:

MOVA,R2

MOVB,#100

DIVAB

ANLA,#0FH

MOVR3,A

MOVA,B

MOVB,#10

DIVAB

ANLA,#0FH

SWAPA

MOVR4,A

MOVA,B

ANLA,#0FH

ORLA,R4

MOVR4,A

AJMP$

END

实验五P1口控制实验

一、实验目的

1.学习51微控制器P1口的使用方法。

2.学习软件延时程序的设计方法。

二、实验设备

1.用到的模块有“PMC-2018051模块”、“503LED显示模块”。

2.8P的数据线一根。

三、实验原理

51微控制器的P1口是一个准双向口,作通用的I/O口使用,本实验就是将P1口分别作为输出进行练习。

实验原理参看附图。

四、实验内容

试编写程序:

设P1口做输出,接8个发光二极管,使其从左到右循环点亮,显示出流水灯效果。

五、实验步骤

1.把实验用到的模块:

“PMC-2018051模块”、“503LED显示模块”安装到对应的位置上。

2..把实验模块插放到相应的实验挂箱上,确保无误后,用1根8P排线,将“PMC-2018051模块”的JP1插座和“503LED显示模块”J1上。

3.将WAVE仿真器头插在8051模块的紧锁插座内,通讯线接在计算机上。

4.检查模块及接线无误后,打开屏上电源,控制器单元的开关,打开仿真器电源。

5.打开计算机上的wave软件,运行“实验程序/8051程序/p1test2.asm”源程序。

6.观察上的发光二极管的亮灭变化情况。

六、实验报告要求

1.画出程序框图,编写程序。

2.试回答:

延时时间怎么计算。

七、实验参考程序

ORG0000H

AJMPMAIN

ORG0100H

MAIN:

MOVA,#01h

LOOP:

MOVP1,A

ACALLDELAY

RLA

CJNEA,#00H,LOOP

AJMPMAIN

DELAY:

MOVR3,#5

A4:

MOVR4,#200

A3:

MOVR5,#250

DJNZR5,$

DJNZR4,A3

DJNZR3,A4

RET

END

实验六P1口输入输出实验

一、实验目的

1.学习51微控制器P1口的使用方法。

2.学习软件延时程序的设计方法。

二、实验设备

1.用到的模块有“PMC-2018051模块”、“PMC-2主控制单元”的“开关量输出模块”、“开关量输入模块”。

2.一号导线8根。

三、实验原理

51微控制器的P1口是一个准双向口,作通用的I/O口使用,本实验就是将P1口分别作为输入和输出进行练习。

作输入时,把开关作为输入装置,由P1口读取开关状态。

作输出时,控制LED发光二极管。

四、实验内容

试编写程序:

P1.0~P1.3作输入,读取开关S1~S4状态;P1.4~P1.7作输出,连接LED1~LED4,根据开关S1~S4的状态,分别控制LED1~LED4的亮灭。

五、实验步骤

1.实验用到的模块:

“PMC-2控制器单元”,“PMC-2018051模块”。

2.把实验模块插放到相应的实验挂箱上,确保无误后,用四根一号导线,将8051模块的P1.0、P1.1、P1.2、P1.3分别接在接在开关量输出模块的(在控制器单元上)S1、S2、S3、S4;再用四根1号导线将8051模块的P1.4、P1.5、P1.6、P1.7分别接在开关量输入模块(在控制器单元上)的L1、L2、L3、L4。

3.将WAVE仿真器头插在8051模块的紧锁插座内,通讯线接在计算机上。

4.检查模块及接线无误后,打开屏上电源,控制器单元的开关,打开仿真器电源。

5.打开计算机上的wave软件,运行“实验程序/8051程序/p1test1.asm文件。

6.拨动S1、S2、S3、S4观察L1、L2、L3、L4上的发光二极管的亮灭是否随之变化。

六、实验报告要求

1.画出程序框图,编写程序。

2.试回答:

51微控制器的P1~P3口的位结构有什么不同?

七、实验参考程序

ORG0000H

AJMPMAIN

ORG0100H

MAIN:

MOVP1,#0FFH

MOVA,P1

SWAPA

ANLA,#0F0H

MOVP1,A

ACALLDELAY

AJMPMAIN

DELAY:

MOVR3,#10

A4:

MOVR4,#200

A3:

MOVR5,#250

DJNZR5,$

DJNZR4,A3

DJNZR3,A4

RET

END

实验七8255的输出实验

一、实验目的

1.学习可编程I/O接口芯片8255的性能及硬件设计方法。

2.掌握可编程I/O接口芯片8255的程序设计方法。

3.了解8255扩展接口的三种工作方式。

二、实验说明

1.实验中用到的模块有“PMC-2018051模块”、“204译码模块”“PMC-2主控制器单元”的“8255A模块”和“开关量的输入模块”。

2.一号导线四根。

三、实验原理

8255是一个通用的可编程并行I/O接口芯片,它具有3个8位的并行I/O口,分别称为PA口、PB口和PC口,其中PC口又分为高4位和低4位。

由于8255与微控制器系统总线直接相连,又可以通过编程方便地将各个口设置成输入或输出,所以在微控制器的I/O扩展中,8255通常被人们首选。

对8255的编程也是通过对一些命令字的设定来实现。

在做实验前,应详细阅读8255器件手册,才能有较大收获。

实验原理及接线图见图7-1:

8255的端口地址:

8255控制字地址为8403H

8255A口地址为8400H

8255B口地址为8401H

8255C口地址为8402H

四、实验内容及要求

编写程序:

设定用8255的方式0,PA口输出方式,接4个指示灯,让四个灯循环点亮。

五、实验步骤

1.实验中用到的模块有“PMC-2018051模块”“204译码模块”,将其插到相应的位置上。

2.将切换模块的SW1拨到ON一端,SW2的7、8接ON,1-6接OFF端、WS3全ON、SW4全OFF,将“PMC-2控制器单元”上的“8255A模块”的PA0、PA1、PA2、PA3用一号导线分别接在“开关量的输入模块”的L1、L2、L3、L4上,将“204译码模块”的J1、J2短接2、3,J3短接1、2。

3.将WAVE仿真器头插在8051模块的紧锁插座内,通讯线接在计算机上。

4.检查模块及接线无误后,打开屏上电源,控制器单元的开关,打开仿真器电源。

5.打开计算机上的wave软件,运行“实验程序/8051程序/8255.asm文件”。

6.观察L1、L2、L3、L4上的发光二极管的亮灭是否轮流循环点亮。

六、实验报告要求

1.画出程序框图,整理实验程序。

2.编写程序,设定从PC0~PC3口读入4个开关通断状态,然后由PC4~PC7口输出,发光管指出4个开关的状态。

七、实验参考程序

;*****8255PA口输出测试程序******

COM8255EQU8403H

PA8255EQU8400H

PB8255EQU8401H

PC8255EQU8402H

ORG0000H

AJMPMAIN

ORG0100H

MAIN:

MOVDPTR,#COM8255

MOVA,#80H

MOVX@DPTR,A;送控制字,设置PA口为工作模式00,输出方式

MOVA,#01H

AA:

MOVDPTR,#PA8255

MOVX@DPTR,A;送01到A口,点亮PA.1一个灯

ACALLDELAY

RLA

CJNEA,#00H,AA;依次点亮PA.1、PA.2、PA.3、PA.4上的灯

MOVA,#01H

AJMPAA

;******延时0.5秒子程序******

DELAY:

MOVR3,#5

A4:

MOVR4,#200

A3:

MOVR5,#250

DJNZR5,$

DJNZR4,A3

DJNZR3,A4

RET流程图:

END

实验八8255的输入输出实验

一、实验目的

1.学习可编程I/O接口芯片8255的性能及硬件设计方法。

2.掌握可编程I/O接口芯片8255的程序设计方法。

3.了解8255扩展接口的三种工作方式。

二、实验说明

1.实验中用到的模块有“PMC-2018051模块”、“204译码模块”、“503LED显示模块”、“504开关量模块”。

2.两根8p的数据线。

三、实验原理

8255是一个通用的可编程并行I/O接口芯片,它具有3个8位的并行I/O口,分别称为PA口、PB口和PC口,其中PC口又分为高4位和低4位。

由于8255与微控制器系统总线直接相连,又可以通过编程方便地将各个口设置成输入或输出,所以在微控制器的I/O扩展中,8255通常被人们首选。

对8255的编程也是通过对一些命令字的设定来实现。

在做本实验前,应详细阅读8255器件手册,才能有较大收获。

实验原理图可参看附图。

在实验系统中8255的端口地址:

8255控制字地址为8403H

8255PA口地址为8400H

8255PB口地址为8401H

8255PC口地址为8402H

四、实验内容及要求

编写程序:

设定用8255的方式0,PB口输入方式接8个开关量,PC口输出方式接8个指示灯,让开关控制灯的亮灭。

五、实验步骤

1.实验中用到的模块有“PMC-2018051模块”、“204译码模块”、“503LED显示模块”、“504开关量模块”将其找出并插到相应的位置上。

2.将切换模块的SW1全拨到ON一端,SW2的7、8接ON,1-6接OFF端、SW3全ON、SW4全OFF,用8P的数据线将“PMC-2控制器单元”上的“8255A模块”的J1插座连在“504开关量模块”的J1上,“8255A模块”的J2插座连在“503LED显示模块”的J1上,将“204译码模块”的J1、J2短接2、3,J3短接1、2。

3.将WAVE仿真器头插在8051模块的紧锁插座内,通讯线接在计算机上。

4.检查模块及接线无误后,打开屏上电源,控制器单元的开关,打开仿真器电源。

5.打开计算机上的wave软件,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1