单片机实验报告Word格式文档下载.docx
《单片机实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机实验报告Word格式文档下载.docx(44页珍藏版)》请在冰豆网上搜索。
LJMP
STAR
0100H
STAR:
MOV
SP,#60H
R0,#Address1
DPTR,#Address2
R7,#10H
STAR1:
A,@R0
传送
MOVX
@DPTR,A
INC
R0
DPTR
DJNZ
R7,STAR1
STAR2:
B,@R0
比较
A,@DPTR
CJNE
A,B,STAR3
R7,STAR2
SJMP
$
传送正确
STAR3:
传送错误
END
实验二双字节BCD码(十进制数)加法
熟悉51汇编指令,学会使用星研集成环境软件,能自己编写简单的程序,熟悉BCD码,了解如何调用系统提供的子程序。
从键盘上输入4位被加数、加数,实现双字节BCD码(四位数)的加法,结果显示在数码管上;
熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;
三、实验框图
1、连线说明:
D3区:
CLK
——
B2区:
2M
CS
A3区:
CS5
A0
2、在F4区的键盘上输入4位被加数、加数
3、结果显示在F4区的数码管上
EXTRN
CODE(Display8,GetBCDKey)
Buffer
8字节显示缓冲区
F1
BIT
0D1H
START
START:
CLR
先清除显示,再接收键输入
START1:
R0,#buffer
A,#4
按键次数
LCALL
GetBCDKey
得到双字节十进制数(被加数)
SETB
接收到第一个键,才清除显示
R0,#buffer+4
得到双字节十进制数(加数)
A,buffer+1
ADD
A,buffer+5
DA
A
buffer+5,A
A,buffer
ADDC
A,buffer+4
buffer+4,A
RLC
Display:
PUSH
ACC
显示结果
低位
ACALL
B1toB2
压缩BCD码转换成非压缩BCD码
高位
POP
进位
@R0,#10H
最高二位消隐
R0,#buffer+5
R7,#5
BlackDisplay
将高位0消隐
Display8
START1
将一个字节压缩BCD码转换成二个字节非压缩BCD码
B1toB2:
ANL
A,#0FH
@R0,A
A,#0F0H
SWAP
RET
BlackDisplay:
JNZ
Exit
A,#10H
DEC
R7,BlackDisplay
Exit:
实验三双字节BCD码(十进制数)减法
熟悉51汇编指令,学会使用星研集成环境软件,掌握汇编语言的设计和调试方法。
能看懂程序流程框图,能自己设计程序,熟悉BCD码、补码,了解如何调用系统提供的子程序。
从键盘上输入4位被减数、减数,实现双字节BCD码(四位数)的减法,结果显示在数码管上;
进一步熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;
2、在F4区的键盘上输入4位被减数、减数
五、程序清单
得到双字节十进制数(被减数)
得到双字节十进制数(减数)
A,#9AH
C
SUBB
A,#99H
减数取补
F0,C
借位标志
JC
Display
XCH
A,#00H
最高四位消隐
R0,#buffer+3
R7,#3
JB
F0,Exit1
@R0,#11H
负数标志
Exit1:
实验四四字节十六进制数转十进制数
进一步熟悉51汇编指令,了解十六进制数转十进制数的方法。
从键盘上输入8位十六进制数,实现四字节十六进制数转8位十进制数,并在数码管上显示。
注意输入数据必须在00000000H~05F00000H范围,否则,结果超出8位十进制数,无法正确显示。
2、在F4区的键盘上输入8位十六进制数
CODE(Display8,GetKey)
A,#8
GetKey
得到4字节十六进制数
接收到第一个键后,才清除显示
R0,buffer
R1,buffer+1
R2,buffer+2
R3,buffer+3
B4toD4
转换成十进制数
A,R7
A,R6
A,R5
A,R4
R0,#buffer+7
R7,#7
四字节十六进制数转十进制数:
R0R1R2R3为十六进制,R4R5R6R7为压缩BCD码
B4toD4:
R4,A
R5,A
R6,A
R7,A
B,#32
LOOP:
A,R3
R3,A
A,R2
R2,A
A,R1
R1,A
A,R0
R0,A
A,R5
B,LOOP
实验五双字节BCD码(十进制数)乘法
进一步熟悉51汇编指令,掌握汇编语言的设计和调试方法。
根据程序流程图,自己设计程序,了解如何调用系统提供的子程序。
从键盘上输入4位被乘数、乘数,实现四位十进制数的乘法,结果显示在数码管上。
2、在F4区的键盘上输入4位被乘数、乘数
得到双字节十进制数(被乘数)
D4toB2
转换成二进制数
02H
03H
得到双字节十进制数(乘数)
01H
00H
WordMul
(R0R1)*(R2R3)=R0R1R2R3
双字节十六进制数乘以双字节十六进制数子程序
WordMul:
(R0)(R1)
B,R1
×
(R2)(R3)
MUL
AB
---------------------------
(R3R1H)(R3R1L)
R7,B
(R3R0H)(R3R0L)
B,R0
(R2R1H)(R2R1L)
(R2R0H)(R2R0L)
--------------------------------
R0R1R2R3
A,B
B,R2
B
双字节十进制数转二进制数,R0--指向双字节十进制数,结果在R2R3中
D4toB2:
B,#10
R2,B
A,#0