单片机软件实验1清零实验.docx

上传人:b****5 文档编号:4100010 上传时间:2022-11-27 格式:DOCX 页数:12 大小:104.92KB
下载 相关 举报
单片机软件实验1清零实验.docx_第1页
第1页 / 共12页
单片机软件实验1清零实验.docx_第2页
第2页 / 共12页
单片机软件实验1清零实验.docx_第3页
第3页 / 共12页
单片机软件实验1清零实验.docx_第4页
第4页 / 共12页
单片机软件实验1清零实验.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

单片机软件实验1清零实验.docx

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

单片机软件实验1清零实验.docx

单片机软件实验1清零实验

学号:

班级:

同组人:

指导老师:

报告日期:

软件设计实验1:

清零实验

Ø实验目的:

掌握汇编语言设计和调试方法。

Ø实验内容:

使用AT89C52单片机对单片机内部RAM进行清零操作,实验内容如下:

1.把90H-AFH的内容置为#55H;

2.把90H-9FH的内容清零。

Ø实验问答:

1.清零之后,90H-9FH的内容是什么?

A0H-AFH的内容是什么?

答:

90H-9FH内容:

00H;

A0H-AFH:

#55H

2.累加器A、堆栈指针SP的初始状态是什么?

答:

累加器A:

00H,堆栈指针SP:

07H。

Ø实验程序:

================================================

$NOMOD51

$INCLUDE(80C52.MCU)

;===============================================

;DEFINITIONS

;===============================================

;===============================================

;VARIABLES

;===============================================

;===============================================

;RESETandINTERRUPTVECTORS

;===============================================

;ResetVector

org0000h

jmpStart

;===============================================

;CODESEGMENT

;===============================================

org0100h

Start:

MOVR0,#90H

MOVR3,#20H

LOOP1:

MOV@R0,#55H

INCR0

DJNZR3,LOOP1

MOVR2,#10H

MOVR1,#90H

CLR0:

MOV@R1,#00H

INCR1

DJNZR2,CLR0

;Writeyourcodehere

Loop:

jmpLoop

;===============================================

END

**单个实验报告内容限制在两页之内,采用双面打印,所有报告统一装订;表头内容需要手工签写。

学号:

班级:

同组人:

指导老师:

报告日期:

软件设计实验2:

拆字拼字实验

Ø实验目的:

进一步掌握汇编语言设计和调试方法。

Ø实验内容:

使用AT89C52单片机对单片机内部RAM存储的数据进行拆字和拼字实验,实验内容如下:

1.将40H地址的内容设置为#8AH;

2.将40H地址的内容进行拆分,高字节保存在31H,低字节保存在32H;

3.将31H、32H地址的内容进行合并,保存在30H。

Ø实验问答:

1.运行程序后30H和40H的最终内容是?

答:

都是#8AH

2.如果欲使30H内容为0A8H,程序应如何修改?

答:

将30H值赋予A,再SWAPA,然后将A赋予30H。

Ø实验程序:

================================================

$NOMOD51

$INCLUDE(80C52.MCU)

;===============================================

;DEFINITIONS

;===============================================

;===============================================

;VARIABLES

;===============================================

;===============================================

;RESETandINTERRUPTVECTORS

;===============================================

;ResetVector

org0000h

jmpStart

;===============================================

;CODESEGMENT

;===============================================

org0100h

Start:

MOV40H,#8AH

MOVA,40H

ANL31H,#0FH

ANL32H,#0FH

MOVR1,#32H

XCHDA,@R1

SWAPA

DECR1

XCHDA,@R1;拆分结束

CLRA

MOVR1,#32H

XCHDA,@R1

DECR1

SWAPA

XCHDA,@R1

SWAPA

MOV30H,A;合并结束

;Writeyourcodehere

Loop:

jmpLoop

;===============================================

END

学号:

班级:

同组人:

指导老师:

报告日期:

软件设计实验3:

查找相同数个数实验

Ø实验目的:

熟悉汇编语言编程,掌握判断与跳转语句的使用。

Ø实验内容:

使用AT89C52单片机对单片机内部RAM进行查找相同数,输出其个数的实验,实验内容如下:

1.初始化后,B0H-BFH地址的内容为#00H,将B9H的内容赋值为#01H,将BBH的内容赋值为#01H;

2.在B0H-BFH中查找有几个单元存放的内容是#00H,把个数放在R7中。

Ø实验问答:

1.如需使用第2组工作寄存器的R7,需如何修改程序?

答:

更改起始单元地址,用位操作指令将RS0和RS1分别置为0,1

2.如需从B0H单元开始,查32个单元的内容,需修改程序哪个语句,如何修改?

答:

将循环计数标志置为#20H

Ø实验程序:

================================================

$NOMOD51

$INCLUDE(80C52.MCU)

;===============================================

;DEFINITIONS

;===============================================

;===============================================

;VARIABLES

;===============================================

;===============================================

;RESETandINTERRUPTVECTORS

;===============================================

;ResetVector

org0000h

jmpStart

;===============================================

;CODESEGMENT

;===============================================

org0100h

Start:

MOVR2,#0FH

MOVR1,#0B0H

LOOP1:

MOV@R1,#00H

INCR1

DJNZR2,LOOP1

MOVR0,#0B9H

MOV@R0,#01H

MOVR1,#0BBH

MOV@R1,#01H;初始化结束

MOVR2,#10H;15次循环

MOVR1,#0B0H

MOVR7,#00H

RESEARCH:

CJNE@R1,#00H,NEXT

INCR7

NEXT:

INCR1

DJNZR2,RESEARCH

;Writeyourcodehere

Loop:

jmpLoop

;===============================================

END

学号:

班级:

同组人:

指导老师:

报告日期:

软件设计实验4:

二进制转ASCII实验

Ø实验目的:

熟悉ASCII的编码原理,学习其与二进制之间的转换。

Ø实验内容:

1.将#9FH转为相应的ASCII;

2.将结果存放到30H、31H地址;

3.查表的方式实现。

Ø实验问答:

1.简述ASCII、BCD码与二进制之间的关系。

BCD:

使用16进制的前10个进行编码,用四位二进制数表示十进制数

ASCII:

标准信息编码,用二进制表示字符的规定,每一个字符对应一个二进制数

2.简述MOVC两条指令,并说明其作用及区别。

MOVCA,@A+DPTR:

以DPTR为基址以A为变址进行寻址,用于查表

MOVCA,@A+PC:

以PC为基址以A为变址进行寻址,PC指向下一条指令,用于查表

Ø实验程序:

================================================

$NOMOD51

$INCLUDE(80C52.MCU)

;===============================================

;DEFINITIONS

;===============================================

;===============================================

;VARIABLES

;===============================================

;===============================================

;RESETandINTERRUPTVECTORS

;===============================================

;ResetVector

org0000h

jmpStart

;===============================================

;CODESEGMENT

;===============================================

org0100h

Start:

MOVA,#9FH

SWAPA

ANLA,#0FH

ACALLCHECK

MOV30H,A

MOVA,#9FH

ANLA,#0FH

ACALLCHECK

MOV31H,A

SJMP$

CHECK:

INCA

MOVCA,@A+PC

RET

TABLE:

DB30H,31H,32H,33H,34H,35H,36H,37H,38H,39H

DB41H,42H,43H,44H,45H,46H

;Writeyourcodehere

Loop:

jmpLoop

;===============================================

END

学号:

班级:

同组人:

指导老师:

报告日期:

软件设计实验5:

数据块传送实验

Ø实验目的:

掌握外部扩展RAM中的数据操作。

Ø实验内容:

1.对2040H地址开始的100个字节进行赋值,值为#5AH;

2.将2040H地址开始的20个字节传送到以0030H开始的目的地址。

Ø实验问答:

3.简述MOVX两组指令,并说明其作用及区别。

答:

MOVXA,@Ri:

片外RAM8位地址送入累加器

MOVXA,@DPTR:

片外RAM16位地址送入累加器

MOVX@Ri,A:

累加器送入片外RAM8位地址

MOVX@DPTR,A:

累加器送入片外RAM16位地址

 

4.单片机访问外部RAM时,使用了哪几个控制信号引脚?

答:

WR,RD,ALE

Ø实验程序:

================================================

$NOMOD51

$INCLUDE(80C52.MCU)

;===============================================

;DEFINITIONS

;===============================================

;===============================================

;VARIABLES

;===============================================

;===============================================

;RESETandINTERRUPTVECTORS

;===============================================

;ResetVector

org0000h

jmpStart

;===============================================

;CODESEGMENT

;===============================================

org0100h

Start:

MOVR0,#64H

MOVDPTR,#2040H

MOVA,#5AH

L1:

MOVX@DPTR,A

INCDPTR

DJNZR0,L1

MOVR0,#14H

MOVDPTR,#2040H

MOVR1,#30H

MOVP2,#00H

L2:

MOVXA,@DPTR

MOVX@R1,A

INCDPTR

INCR1

DJNZR0,L2

;Writeyourcodehere

Loop:

jmpLoop

;===============================================

END

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

当前位置:首页 > 小学教育 > 数学

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

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