单片机实验报告.docx

上传人:b****1 文档编号:12771818 上传时间:2023-04-22 格式:DOCX 页数:45 大小:4.20MB
下载 相关 举报
单片机实验报告.docx_第1页
第1页 / 共45页
单片机实验报告.docx_第2页
第2页 / 共45页
单片机实验报告.docx_第3页
第3页 / 共45页
单片机实验报告.docx_第4页
第4页 / 共45页
单片机实验报告.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

单片机实验报告.docx

《单片机实验报告.docx》由会员分享,可在线阅读,更多相关《单片机实验报告.docx(45页珍藏版)》请在冰豆网上搜索。

单片机实验报告.docx

单片机实验报告

单片机实验报告

实验一数据传送(RAM–>XRAM)

一、实验目的

熟悉星研集成环境软件或熟悉KeilC51集成环境软件的使用方法。

熟悉MCS51汇编指令,能自己编写简单的程序,掌握数据传输的方法。

二、实验内容

1、熟悉星研集成环境软件或熟悉KeilC51集成环境软件的安装和使用方法。

2、编写程序,实现内外部数据段的传送、校验。

三、程序框图

四、实验步骤

在内部RAM30H~3FH中输入数据;使用单步、断点方式调试程序,检测外部数据RAM的1000H~100FH中的内容。

熟悉查看特殊功能寄存器、内部数据RAM、外部数据空间的各种方法。

五、程序清单

;将内部RAMAddress1开始的16个字节送到外部RAM从Address2开始的单元里,再作比较。

Address1

DATA

30H

Address2

XDATA

1000H

ORG

0000H

LJMP

STAR

ORG

0100H

STAR:

MOV

SP,#60H

MOV

R0,#Address1

MOV

DPTR,#Address2

MOV

R7,#10H

STAR1:

MOV

A,@R0

;传送

MOVX

@DPTR,A

INC

R0

INC

DPTR

DJNZ

R7,STAR1

MOV

R0,#Address1

MOV

DPTR,#Address2

MOV

R7,#10H

STAR2:

MOV

B,@R0

;比较

MOVX

A,@DPTR

CJNE

A,B,STAR3

INC

R0

INC

DPTR

DJNZ

R7,STAR2

SJMP

$

;传送正确

STAR3:

SJMP

$

;传送错误

END

实验二双字节BCD码(十进制数)加法

一、实验目的

熟悉51汇编指令,学会使用星研集成环境软件,能自己编写简单的程序,熟悉BCD码,了解如何调用系统提供的子程序。

二、实验内容

从键盘上输入4位被加数、加数,实现双字节BCD码(四位数)的加法,结果显示在数码管上;熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;熟悉查看特殊功能寄存器、内部数据RAM、外部数据空间的各种方法。

三、实验框图

四、实验步骤

1、连线说明:

D3区:

CLK

——

B2区:

2M

D3区:

CS

——

A3区:

CS5

D3区:

A0

——

A3区:

A0

2、在F4区的键盘上输入4位被加数、加数

3、结果显示在F4区的数码管上

五、程序清单

EXTRN

CODE(Display8,GetBCDKey)

Buffer

DATA

30H

;8字节显示缓冲区

F1

BIT

0D1H

;PSW.1

ORG

0000H

LJMP

START

ORG

0100H

START:

MOV

SP,#60H

CLR

F1

;先清除显示,再接收键输入

START1:

MOV

R0,#buffer

MOV

A,#4

;按键次数

LCALL

GetBCDKey

;得到双字节十进制数(被加数)

SETB

F1

;接收到第一个键,才清除显示

MOV

R0,#buffer+4

MOV

A,#4

;按键次数

LCALL

GetBCDKey

;得到双字节十进制数(加数)

MOV

A,buffer+1

ADD

A,buffer+5

DA

A

MOV

buffer+5,A

MOV

A,buffer

ADDC

A,buffer+4

DA

A

MOV

buffer+4,A

CLR

A

RLC

A

Display:

PUSH

ACC

;显示结果

MOV

R0,#buffer

MOV

A,buffer+5

;低位

ACALL

B1toB2

;压缩BCD码转换成非压缩BCD码

MOV

A,buffer+4

;高位

ACALL

B1toB2

POP

ACC

;进位

ACALL

B1toB2

MOV

@R0,#10H

;最高二位消隐

INC

R0

MOV

@R0,#10H

MOV

R0,#buffer+5

MOV

R7,#5

ACALL

BlackDisplay

;将高位0消隐

MOV

R0,#buffer

LCALL

Display8

SJMP

START1

;将一个字节压缩BCD码转换成二个字节非压缩BCD码

B1toB2:

PUSH

ACC

ANL

A,#0FH

MOV

@R0,A

INC

R0

POP

ACC

ANL

A,#0F0H

SWAP

A

MOV

@R0,A

INC

R0

RET

BlackDisplay:

MOV

A,@R0

;将高位0消隐

JNZ

Exit

MOV

A,#10H

MOV

@R0,A

DEC

R0

DJNZ

R7,BlackDisplay

Exit:

RET

END

实验三双字节BCD码(十进制数)减法

一、实验目的

熟悉51汇编指令,学会使用星研集成环境软件,掌握汇编语言的设计和调试方法。

能看懂程序流程框图,能自己设计程序,熟悉BCD码、补码,了解如何调用系统提供的子程序。

二、实验内容

从键盘上输入4位被减数、减数,实现双字节BCD码(四位数)的减法,结果显示在数码管上;进一步熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;熟悉查看特殊功能寄存器、内部数据RAM、外部数据空间的各种方法。

三、程序框图

四、实验步骤

1、连线说明:

D3区:

CLK

——

B2区:

2M

D3区:

CS

——

A3区:

CS5

D3区:

A0

——

A3区:

A0

2、在F4区的键盘上输入4位被减数、减数

3、结果显示在F4区的数码管上

五、程序清单

EXTRN

CODE(Display8,GetBCDKey)

Buffer

DATA

30H

;8字节显示缓冲区

F1

BIT

0D1H

;PSW.1

ORG

0000H

LJMP

START

ORG

0100H

START:

MOV

SP,#60H

CLR

F1

;先清除显示,再接收键输入

START1:

MOV

R0,#buffer

MOV

A,#4

;按键次数

LCALL

GetBCDKey

;得到双字节十进制数(被减数)

SETB

F1

;接收到第一个键,才清除显示

MOV

R0,#buffer+4

MOV

A,#4

;按键次数

LCALL

GetBCDKey

;得到双字节十进制数(减数)

MOV

A,#9AH

CLR

C

SUBB

A,buffer+5

MOV

buffer+5,A

MOV

A,#99H

CLR

C

SUBB

A,buffer+4

MOV

buffer+4,A

;减数取补

MOV

A,buffer+1

ADD

A,buffer+5

DA

A

MOV

buffer+5,A

MOV

A,buffer

ADDC

A,buffer+4

DA

A

MOV

buffer+4,A

MOV

F0,C

;借位标志

JC

Display

MOV

A,#9AH

SUBB

A,buffer+5

MOV

buffer+5,A

MOV

A,#99H

SUBB

A,buffer+4

XCH

A,buffer+5

ADD

A,#00H

DA

A

XCH

A,buffer+5

ADDC

A,#00H

DA

A

MOV

buffer+4,A

Display:

MOV

R0,#buffer

;显示结果

MOV

A,buffer+5

;低位

ACALL

B1toB2

;压缩BCD码转换成非压缩BCD码

MOV

A,buffer+4

;高位

ACALL

B1toB2

MOV

@R0,#10H

;最高四位消隐

INC

R0

MOV

@R0,#10H

INC

R0

MOV

@R0,#10H

INC

R0

MOV

@R0,#10H

MOV

R0,#buffer+3

MOV

R7,#3

ACALL

BlackDisplay

;将高位0消隐

MOV

R0,#buffer

LCALL

Display8

SJMP

START1

BlackDisplay:

MOV

A,@R0

;将高位0消隐

JNZ

Exit

MOV

A,#10H

MOV

@R0,A

DEC

R0

DJNZ

R7,BlackDisplay

Exit:

JB

F0,Exit1

INC

R0

MOV

@R0,#11H

;负数标志

Exit1:

RET

B1toB2:

PUSH

ACC

ANL

A,#0FH

MOV

@R0,A

INC

R0

POP

ACC

ANL

A,#0F0H

SWAP

A

MOV

@R0,A

INC

R0

RET

BlackDisplay:

MOV

A,@R0

JNZ

Exit

MOV

A,#10H

MOV

@R0,A

DEC

R0

DJNZ

R7,BlackDisplay

Exit:

RET

END

实验四四字节十六进制数转十进制数

一、实验目的

进一步熟悉51汇编指令,了解十六进制数转十进制数的方法。

二、实验内容

从键盘上输入8位十六进制数,实现四字节十六进制数转8位十进制数,并在数码管上显示。

注意输入数据必须在00000000H~05F00000H范围,否则,结果超出8位十进制数,无法正确显示。

三、程序框图

四、实验步骤

1、连线说明:

D3区:

CLK

——

B2区:

2M

D3区:

CS

——

A3区:

CS5

D3区:

A0

——

A3区:

A0

2、在F4区的键盘上输入8位十六进制数

3、结果显示在F4区的数码管上

五、程序清单

EXTRN

CODE(Display8,GetKey)

Buffer

DATA

30H

;8字节显示缓冲区

F1

BIT

0D1H

;PSW.1

ORG

0000H

LJMP

START

ORG

0100H

START:

MOV

SP,#60H

CLR

F1

;先清除显示,再接收键输入

START1:

MOV

R0,#buffer

MOV

A,#8

;按键次数

LCALL

GetKey

;得到4字节十六进制数

SETB

F1

;接收到第一个键后,才清除显示

MOV

R0,buffer

MOV

R1,buffer+1

MOV

R2,buffer+2

MOV

R3,buffer+3

ACALL

B4toD4

;转换成十进制数

Display:

MOV

R0,#buffer

;显示结果

MOV

A,R7

;低位

ACALL

B1toB2

;压缩BCD码转换成非压缩BCD码

MOV

A,R6

ACALL

B1toB2

MOV

A,R5

ACALL

B1toB2

MOV

A,R4

;高位

ACALL

B1toB2

MOV

R0,#buffer+7

MOV

R7,#7

ACALL

BlackDisplay

;将高位0消隐

MOV

R0,#buffer

LCALL

Display8

SJMP

START1

;四字节十六进制数转十进制数:

R0R1R2R3为十六进制,R4R5R6R7为压缩BCD码

B4toD4:

CLR

A

MOV

R4,A

MOV

R5,A

MOV

R6,A

MOV

R7,A

MOV

B,#32

LOOP:

CLR

C

MOV

A,R3

RLC

A

MOV

R3,A

MOV

A,R2

RLC

A

MOV

R2,A

MOV

A,R1

RLC

A

MOV

R1,A

MOV

A,R0

RLC

A

MOV

R0,A

MOV

A,R7

ADDC

A,R7

DA

A

MOV

R7,A

MOV

A,R6

ADDC

A,R6

DA

A

MOV

R6,A

MOV

A,R5

ADDC

A,R5

DA

A

MOV

R5,A

MOV

A,R4

ADDC

A,R4

DA

A

MOV

R4,A

DJNZ

B,LOOP

RET

B1toB2:

PUSH

ACC

ANL

A,#0FH

MOV

@R0,A

INC

R0

POP

ACC

ANL

A,#0F0H

SWAP

A

MOV

@R0,A

INC

R0

RET

BlackDisplay:

MOV

A,@R0

;将高位0消隐

JNZ

Exit

MOV

A,#10H

MOV

@R0,A

DEC

R0

DJNZ

R7,BlackDisplay

Exit:

RET

END

 

 

实验五双字节BCD码(十进制数)乘法

一、实验目的

进一步熟悉51汇编指令,掌握汇编语言的设计和调试方法。

根据程序流程图,自己设计程序,了解如何调用系统提供的子程序。

二、实验内容

从键盘上输入4位被乘数、乘数,实现四位十进制数的乘法,结果显示在数码管上。

三、程序框图

四、实验步骤

1、连线说明:

D3区:

CLK

——

B2区:

2M

D3区:

CS

——

A3区:

CS5

D3区:

A0

——

A3区:

A0

2、在F4区的键盘上输入4位被乘数、乘数

3、结果显示在F4区的数码管上

五、程序清单

EXTRN

CODE(Display8,GetBCDKey)

Buffer

DATA

30H

;8字节显示缓冲区

F1

BIT

0D1H

;PSW.1

ORG

0000H

LJMP

START

ORG

0100H

START:

MOV

SP,#60H

CLR

F1

;先清除显示,再接收键输入

START1:

MOV

R0,#buffer

MOV

A,#4

;按键次数

LCALL

GetBCDKey

;得到双字节十进制数(被乘数)

MOV

R0,#buffer

ACALL

D4toB2

;转换成二进制数

PUSH

02H

PUSH

03H

SETB

F1

;接收到第一个键,才清除显示

MOV

R0,#buffer

MOV

A,#4

;按键次数

LCALL

GetBCDKey

;得到双字节十进制数(乘数)

MOV

R0,#buffer

ACALL

D4toB2

;转换成二进制数

POP

01H

POP

00H

ACALL

WordMul

;(R0R1)*(R2R3)=R0R1R2R3

ACALL

B4toD4

;转换成十进制数

Display:

MOV

R0,#buffer

;显示结果

MOV

A,R7

;低位

ACALL

B1toB2

;压缩BCD码转换成非压缩BCD码

MOV

A,R6

ACALL

B1toB2

MOV

A,R5

ACALL

B1toB2

MOV

A,R4

;高位

ACALL

B1toB2

MOV

R0,#buffer+7

MOV

R7,#7

ACALL

BlackDisplay

;将高位0消隐

MOV

R0,#buffer

LCALL

Display8

SJMP

START1

;双字节十六进制数乘以双字节十六进制数子程序

WordMul:

MOV

A,R3

;(R0)(R1)

MOV

B,R1

;×(R2)(R3)

MUL

AB

;---------------------------

XCH

A,R3

;(R3R1H)(R3R1L)

MOV

R7,B

;(R3R0H)(R3R0L)

MOV

B,R0

;(R2R1H)(R2R1L)

MUL

AB

;(R2R0H)(R2R0L)

ADD

A,R7

;--------------------------------

MOV

R7,A

;R0R1R2R3

CLR

A

ADDC

A,B

XCH

A,R1

MOV

B,R2

MUL

AB

ADD

A,R7

XCH

A,R2

PUSH

ACC

MOV

A,B

ADDC

A,R1

MOV

R1,A

CLR

A

RLC

A

XCH

A,R0

POP

B

MUL

AB

ADD

A,R1

MOV

R1,A

MOV

A,R0

ADDC

A,B

MOV

R0,A

RET

;双字节十进制数转二进制数,R0--指向双字节十进制数,结果在R2R3中

D4toB2:

MOV

A,@R0

ANL

A,#0FH

XCH

A,@R0

ANL

A,#0F0H

SWAP

A

MOV

B,#10

MUL

AB

ADD

A,@R0

INC

R0

MOV

B,#10

MUL

AB

MOV

R2,B

MOV

R3,A

MOV

A,@R0

ANL

A,#0FH

XCH

A,@R0

ANL

A,#0F0H

SWAP

A

ADD

A,R3

XCH

A,R2

ADDC

A,#0

MOV

B,#10

MUL

AB

XCH

A,R2

MOV

B,#10

MUL

AB

ADD

A,@R0

MOV

R3,A

MOV

A,R2

ADDC

A,B

MOV

R2,A

RET

B1toB2:

PUSH

ACC

ANL

A,#0FH

MOV

@R0,A

INC

R0

POP

ACC

ANL

A,#0F0H

SWAP

A

MOV

@R0,A

INC

R0

RET

BlackDisplay:

MOV

A,@R0

;将高位0消隐

JNZ

Exit

MOV

A,#10H

MOV

@R0,A

DEC

R0

DJNZ

R7,BlackDisplay

B4toD4:

CLR

A

MOV

R4,A

MOV

R5,A

MOV

R6,A

MOV

R7,A

MOV

B,#32

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1