《单片机原理及应用》实验指导
控制技术实验室
实验一 熟悉 Keil c51 集成开发环境及常用指令实验
(2 课时,验证型)
一、实验目的
1) 了解 8051 典型应用系统的开发过程,熟悉KeilC51 集成开发环境。
2) 掌握单步执行程序,查看专用寄存器和单片机 RAM 的执行结果。
3) 掌握 8051 的寻址方式及常用指令的使用方法。
二、实验内容
1) 基本指令练习。
2) 数据传送(循环方式) 。
3) 位操作指令。
4) 8051内部 RAM的40H~4FH置初值A0H~AFH,然后将40H~4FH的内容
传送到外部RAM中的 C000H~C00FH单元,再把外部数据 RAM中的
C000H~C00FH单元的内容传送到 8051内部 RAM中的50H~5FH单元。
5) 调试下列程序,熟悉程序调试手段,观测程序运行结果。
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN:
MOV SP,#6FH
MOV R0,#40H
MOV R1,#30H
MOV 30H,#40H
MOV A,#40H
MOV @R0,A ;哪一个存储单元的内容与A中内容相等
INC A
MOV A,@R1 ;A中的内容?哪一个存储单元的内容传给A
PUSH ACC
POP 32H ;SP指针的变化?32H中的内容
MOV A,#5FH
SWAP A ;A中的内容
;上面程序为顺序执行的程序
XUNHUAN1:
MOV R0,#30H
MOV R7,#10H
CLR A ;这3条指令的作用
LOOP1:
MOV @R0,A
INC A
INC R0
DJNZ R7,LOOP1 ;R7的作用
;循环程序执行完之后,指出32H,37H,3BH,
3FH存储单元中的值,为什么?
XUNHUAN2:
MOV R0,#30H
MOV R1,#40H
MOV R2,#10H
LOOP2:
MOV A,@R0
MOV @R1,A
DJNZ R2,LOOP2 ;说明这段程序的功能
;上面程序为2个循环程序
;下面为2个数比较程序,最大值存放在30H,最小值存放在 31H中
PANDUAN1:
MOV 30H,#10H
MOV 31H,#4BH
MOV R0,#30H
MOV R1,#31H
PAN0:
MOV A,@R0
CLR C
SUBB A,@R1
JNC PAN1
MOV A,@R0
MOV 40H,@R1
MOV @R0,40H
MOV @R1,A
PAN1:
NOP ;注意能不能继续往下运行,为什么
END
三、实验步骤
1) 启动计算机。
2) 进入KeilC51集成开发环境。
3) 建立工程项目文件,选择单片机型号:PHILIPS 公司的P80/P87C52X2。
4) 在Keil C51集成开发环境中, 编辑源程序;将源文件添加至工程项目的源文件组
中。
5) 对源文件进行编译,生成目标代码。
6) 运行、调试程序和查看执行结果。
7) 分别采用单步、宏单步、执行到光标处等调试手段,调试用户程序,观察
有关存储器单元中的内容。
8) 修改有关单元中的内容,再观察有关单元中的内容。
四、思考题
1) 说明每段程序分别完成哪些任务。
2) 若比较程序为3个数比较,数据从大到小排列,最大值放在 30H,最小值放
在32H。如果是16个数排序,如何排序,提出编程思路。
五、预习要求
1) 阅读教科书中 8051的指令系统,重点掌握的指令有数据传送、判断跳转指令的
使用方法。
2) 阅读KeilC51集成开发软件说明书,掌握集成开发软件的进入、退出、源文件
的编辑和编译等方法。熟悉各种调试手段。
六、实验报告
1) 将程序加上注释语句,写出程序执行的结果。
2) 回答思考题(第2题的第2个问题选作)。
实验二 8051 程序设计实验
(3 课时,设计型)
一、实验目的
1) 掌握8051汇编语言程序设计基本方法。
2) 掌握8051汇编语言程序的调试方法。
二、实验内容
1) 完成二字节加法程序的设计与调试。
要求:
加数首地址由 R0 指出,被加数和结果的存贮单元首地址由 R1 指出,字节数
由R2指出,地址可以任意指定。
2) 完成 2 个存储单元中的四位 BCD 码十进制数拆分为 4 个存储单元的四位
BCD码十进制数,如下图所示:
要求:
将 30H、31H 中四位 BCD 码十进制数拆分为 4 个存储单元的四位 BCD
码十进 制数,分别 存放在 40H( 个位),41H(十位), 42H(百位 ),43H
(千位)中。
或者由R0指出四位BCD码十进制数存放个位和十位的首地址,R1指出
拆分后4个存储单元的四位BCD码十进制数的个位首地址。
三、实验步骤
1) 针对2个实验内容提出的要求设计相应的程序。
2) 写出实验步骤及调试方法。
四、预习要求
1) 阅读教科书中 8051的指令系统及程序的设计方法,重点掌握算术运算,转移等
指令。
2) 熟悉KeilC51开发环境, 重点掌握连续运行程序的方法和设置断点运行程序的方
法。
3) 写出预习报告。
五、思考题
如何将8位二进制数转换为BCD 码十进制数以及双字节二进制数转换成BCD 码?
六、实验报告
1) 写出实验步骤及调试方法。
2) 整理好执行正确的程序和数据。
3) 对思考题提出自己的基本思路。
百位 千位
千位 个位
个位 十位
0 00
百位 十位
0