实验一

更新时间:2024-04-29 20:38:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验一、数据传送及输入输出接口实验

1、实验目的

1.1 掌握51单片机数据传送指令;

1.2 熟悉51单片机汇编语言程序设计方法; 1.3 掌握Keil 集成开发环境的使用;

1.4 练习51单片机汇编语言程序的编辑、汇编和模拟调试。

2、实验内容

数据传送类程序设计

1)设计数据区清零程序,将片内RAM 20H~5FH单元清零。 2) 设计数据块传送程序,将片内RAM 30H~3FH单元的数据顺序传送到片内RAM 50H~5FH单元。 3)设计数据块传送程序,将片内RAM50H~5FH单元的数据顺序传送到片外RAM 1000H~100FH单元。

3、实验设备

Keil仿真

4、程序流程图

开始 开始 设数据区地址指针 设数据区地址指针R0=20H 设计数器初值 CLR A→A=0 R0=A=0 取源数据区数据 R0+1→R0 送入目的数据区 否 移地址指针 R2=5FH? 是 传送结束? 结束 结束

片内RAM 20H~5FH单元清零程序流程图 数据块传送程序流程图

5、程序清单及程序运行结果

实验1-1 设计数据区清零程序,将片内RAM 20H~5FH单元清零。 ;主程序 ORG 0000H MOV R0,#20H ;设置地址指针 LOOP: CLR A ;清空A里的内容 MOV @R0,A ;将A里的内容送给R0所对应的地址 INC R0 ;R0加1 CJNE R0,#5FH,LOOP ;判断R0是否为5FH,为5FH顺序执行,不为跳转到LOOP RET ;子程序返回指令 END

实验1-2 设计数据块传送程序,将片内RAM 30H~3FH单元的数据顺序传送到片内RAM 50H~5FH单元。 ;主程序 ORG 0000H MOV R0,#30H ;R0为原数据区地址指针 MOV R1,#50H ;R1为目的地址指针 MOV R2,#10H ;R2为数据长度 LOOP: MOV A,@R0 ;将R0对应位置的内容给A MOV @R1,A ;将A的内容给R1对应位置里 INC R0 ;R0加1 INC R1 ;R1加1 DJNZ R2,LOOP ;判断R2减一是否为0,为0则顺序执行,不为0则跳转到LOOP END

实验1-3 设计数据块传送程序,将片内RAM50H~5FH单元的数据顺序传送到片外RAM 1000H~100FH单元。 ;主程序 ORG 0000H MOV R0,#50H ;R0为原数据区地址指针

MOV DPTR,#1000H ;设置1000H为目的数据区地址指针 MOV R1,#10H ;数据长度10H给R1 LOOP: MOV A,@R0 ;将R0对应位置的内容给A MOVX @DPTR,A ;将A里的内容给片外地址指针 INC R0 ;R0加1 INC DPTR ;片外地址指针加1

DJNZ R1,LOOP ;判断R1减一是否为0,为0则顺序执行,不为0则跳转到LOOP END

6、思考题

设计数据块传送程序,将片外RAM的2000H~201FH单元的数据循环传送到片外RAM 1050H~106FH单元。

;主程序 ORG 0000H MOV R0,#2000H ;R0为原数据区地址指针

MOV DPTR,#1050H ;设置1050H为目的数据区地址指针 MOV R1,#20H ;数据长度20H给R1 LOOP: MOVX A,@R0 ;将R0对应位置的内容给A MOVX @DPTR,A ;将A里的内容给片外地址指针 INC R0 ;R0加1 INC DPTR ;片外地址指针加1

DJNZ R1,LOOP ;判断R1减一是否为0,为0则顺序执行,不为0则跳转到LOOP END

本文来源:https://www.bwwdw.com/article/snkg.html

Top