单片机实验讲义

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一软件实验

1.1 实验目的

通过实验熟悉DAIS软件仿真环境和MCS-51系列单片机指令系统。掌握程序编制、调试方法和技巧。

1.2 实验内容

1、把R1中内容传送至R0中。

2、把内部数据存储器20H单元中的内容传送至内部数据存储器30H单元中。

3、把外部数据存储器2000H单元中的内容传送至内部数据存储器20H单元中。

4、把外部程序存储器2000H单元中的内容传送至内部数据存储器20H单元中。

5、应用MOVC A,@A+PC指令求累加器A的平方值Y(设Y<=255),并把结果送至R7中保存。

6、将(R2R3)和(R4R5)中的双字节无符号数相加,结果存放在40H和41H单元中。

7、设自变量X为一无符号数,存放在内部数据存储器的V AX单元,函数Y存放在FUNC 单元,请编写满足如下关系的程序:

当x>=50时y=x;

当x<50时y=5x。

8、在外部数据存储器从2000H到2030H地址单元中存放有一数据块,请将它们分别传送至3000H单元到3030H单元中。

9、将8051片内的数据存储器20H单元中存放的单字节二进制数,转化为ASCII码,存放在30H31H单元中,(要求将ASCII码转换部分设计为子程序)。

汇编语言程序如下

;1、把R1中内容传送至R0中。

;2、把内部数据存储器20H单元中的内容传送至内部数据存储器30H单元中。

;3、把外部数据存储器2000H单元中的内容传送至内部数据存储器20H单元中。

;4、把外部程序存储器2000H单元中的内容传送至内部数据存储器20H单元中。

org 0000h

mov r1,#22h

mov a,r1 ;1、把R1中内容传送至R0中

mov r0,a

mov 20h,#33h

mov 30h,20h ;2、把内部数据存储器20H单元中的内容传送至内部数据存储器30H单元中

mov dptr,#2000h ;3、把外部数据存储器2000H单元中的内容传送至内部数据存储器20H单元中

mov a,#66h

movx @dptr,a

clr a

movx a,@dptr

mov dptr,#2000h ;4、把外部程序存储器2000H单元中的内容传送至内部数据存储器20H单元中。

clr a

movc a,@a+dptr

sjmp $

org 2000h

db 88h

end

;5、应用MOVC A,@A+dptr指令求累加器A的平方值Y(设Y<=255),并把结果送至R7中保存。

org 0000h

mov a,#3h ;查3的平方值

mov dptr,#tab ;指向平方表的表头

movc a,@a+dptr ;查表指令

sjmp $

tab:db 0,1,4,9,16,25,36,47,64,81,100,121,144,169,196,255;平方表

end

;6、将(R2R3)和(R4R5)中的双字节无符号数相加,结果存放在40H和41H单元中。

org 0000h

clr c

mov r2,#22h

mov r3,#33h

mov r4,#44h

mov r5,#55h

mov a,r3

add a,r5

mov 40h,a

mov a,r2

addc a,r4

mov 41h,a

sjmp $

end

;7、设自变量X为一无符号数,存放在内部数据存储器的V AX单元,函数Y存放在FUNC 单元,请编写满足如下关系的程序:

;当x>=50时y=x;

;当x<50时y=5x。

V AX equ 30H

FUNC equ 40H

org 0000h

mov V AX,#10

mov a,V AX

cjne A,#50,fen1

fen1:jc fen2 ;小于50跳到fen2

sjmp exit1

fen2:mov b,#5

mul ab

exit1:mov func,a

sjmp $

end

;8、在外部数据存储器从2000H到2030H地址单元中存放有一数据块,请将它们分别传送至3000H单元到3030H单元中。

org 0000h

mov dptr,#2000h

mov r2,#31h

loop:movx a,@dptr

mov dph,#30h

movx @dptr,a

inc dpl

mov dph,#20h

djnz r2,loop

sjmp $

end

;9、将8051片内的数据存储器20H单元中存放的单字节二进制数,转化为ASCII码,存放在30H,31H单元中,(要求将ASCII码转换部分设计为子程序)。

org 0000h

mov 20h,#2ah

mov a,20h

anl a,#0fh

acall asc1

mov 30h,a

mov a,20h

anl a,#0f0h

swap a

acall asc1

mov 31h,a

sjmp $

asc1:cjne a,#10,fen1 ;ASCII码转换子程序

fen1:jc fen2

add a,#7h

fen2:add a,#30h

ret

sjmp $

end

相关文档
最新文档