实验一、数据传送及输入输出接口实验
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