单片机实验报告1lbsv20.docx

上传人:b****5 文档编号:3198198 上传时间:2022-11-20 格式:DOCX 页数:26 大小:514.19KB
下载 相关 举报
单片机实验报告1lbsv20.docx_第1页
第1页 / 共26页
单片机实验报告1lbsv20.docx_第2页
第2页 / 共26页
单片机实验报告1lbsv20.docx_第3页
第3页 / 共26页
单片机实验报告1lbsv20.docx_第4页
第4页 / 共26页
单片机实验报告1lbsv20.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

单片机实验报告1lbsv20.docx

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

单片机实验报告1lbsv20.docx

单片机实验报告1lbsv20

东南大学仪器科学与工程学院学院

实验报告

课程名:

单片机应用系统设计

实验名称:

单片机课程设计实验报告

(一)

院(系):

仪器科学与工程学院专业:

测控技术与仪器

评定成绩:

审阅教师:

目录

 

一、软件实验一数据传送实验··························3

 

二、软件实验二多字节十进制加法实验···················5

 

三、软件实验三多字节十进制加法实验···················8

 

四、硬件实验一I/O口输入/输出及控制实验··············11

 

五、硬件实验二数据输入/输出口扩展实验················20

软件实验一数据传送实验

一、实验目的

1.熟悉单片机仿真开发器的使用

2.掌握编程方法;掌握8051内部RAM的数据操作

二、内容

内部RAM40H到4FH单元置数A0H到AFH,然后将40H到4FH中内容送到内部RAM50H到5FH中。

编辑、编译、运行程序,检查内部RAM中的结果。

三、程序代码

ORG0000H

RESET:

AJMPMAIN

ORG003FH

MAIN:

MOVR0,#40H

MOVR2,#10H

MOVA,#0A0H

A1:

MOV@R0,A

INCR0

INCA

DJNZR2,A1

MOVR0,#40H

MOVR1,#50H

MOVR2,#10H

A2:

MOVA,@R0

MOV@R1,A

INCR0

INCR1

DJNZR2,A2

A3:

SJMPA3

四、分析以上程序,运行程序后(暂停),检查并记录相关单元内容。

答:

运行程序后,内部RAM40H到4FH单元中的存储内容A0H~AFH,被传送到了内部RAM50H到5FH中。

五、修改程序,将所置的数改为00H到1FH,置数单元和传送单元为别改为内部RAM的40H到5FH和60H到7FH

答:

实验修改程序如下:

ORG0000H

RESET:

AJMPMAIN

ORG003FH

MAIN:

MOVR0,#40H

MOVR2,#20H;修改

MOVA,#00H;修改

A1:

MOV@R0,A

INCR0

INCA

DJNZR2,A1

MOVR0,#40H

MOVR1,#60H;修改

MOVR2,#20H;修改

A2:

MOVA,@R0

MOV@R1,A

INCR0

INCR1

DJNZR2,A2

A3:

SJMPA3

软件实验二多字节十进制加法实验

一、实验目的

掌握MCS-51汇编语言程序设计方法

二、内容

多字节十进制加法。

加数存储单元首地址由R0指出,被加数和结果的存储单元首地址由R1指出,字节数由R2指出。

编辑、编译、运行程序,检查内部RAM中的结果。

三、程序代码

加数存储单元为:

31H、30H,被加数存储单元为:

21H、20H,结果存储单元为22H、21H、20H。

ORG0000H

RESET:

AJMPMAIN

ORG0100H

MAIN:

MOVSP,#60H

MOVR0,#31H

MOV@R0,#22H

DECR0

MOV@R0,#33H

MOVR1,#21H

MOV@R1,#44H

DECR1

MOV@R1,#55H

MOVR2,#02H

ACALLDACE

HERE:

SJMPHERE

DACE:

CLRC

DAL:

MOVA,@R0

ADDCA,@R1

DAA

MOV@R1,A

INCR0

INCR1

DJNZR2,DAL

CLRA

MOVACC.0,C

MOV@R1,A

RET

四、分析以上程序

五、运行程序后暂停,检查并记录

加数存储单元为:

31H、30H,被加数存储单元为:

21H、20H,结果存储单元为22H、21H、20H。

 

六、修改加数和被加数(十进制),重复以上过程

ORG0000H

RESET:

AJMPMAIN

ORG0100H

MAIN:

MOVSP,#60H

MOVR0,#31H

MOV@R0,#40H;修改

DECR0

MOV@R0,#30H;修改

MOVR1,#21H

MOV@R1,#20H;修改

DECR1

MOV@R1,#10H;修改

MOVR2,#02H

ACALLDACE

HERE:

SJMPHERE

DACE:

CLRC

DAL:

MOVA,@R0

ADDCA,@R1

DAA

MOV@R1,A

INCR0

INCR1

DJNZR2,DAL

CLRA

MOVACC.0,C

MOV@R1,A

RET

七、填写下列单元地址及内容

加数单元地址(31H)(30H)

加数单元地址(21H)(20H)

结果单元地址(22H)(21H)(20H)

 

加数数值(22H)(33H)

加数数值(44H)(55H)

结果数值(00H)(66H)(88H)

八、按以上步骤,验证作业中程序设计的习题

运行结果见修改程序后。

加数单元地址(31H)(30H)

加数单元地址(21H)(20H)

结果单元地址(22H)(21H)(20H)

加数数值(40H)(30H)

加数数值(20H)(10H)

结果数值(00H)(60H)(40H)

 

软件实验三十进制数排序实验

一、目的

掌握十进制数排序方法

二、内容

本程序用的是“冒泡排序”法,是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在数列的最后面。

再进行下一轮比较,找出第二大数据,知道全部数据有序,即从小到大排序。

三、程序代码

SIZEEQU10

ARRAYEQU50H

MOV50H,#9

MOV51H,#7

MOV52H,#2

MOV53H,#8

MOV54H,#4

MOV55H,#6

MOV56H,#0

MOV57H,#3

MOV58H,#1

MOV59H,#5

CHANCEEQU0

SORT:

MOVR0,#ARRAY

MOVR7,#SIZE-1

CLRCHANCE

GOOD:

MOVA,@R0

MOVR2,A

INCR0

MOVB,@R0

CJNEA,B,NOTEQUAL

SJMPNEXT

NOTEQUAL:

JCNEXT

SETBCHANCE

XCHA,@R0

DECR0

XCHA,@R0

INCR0

NEXT:

DJNZR7,GOOD

JBCHANCE,SORT

LJMP$

END

四、分析以上程序

五、运行程序后(暂停),检查并记录相关单元内容

程序运行后结果为00,01,02,03,04,05,06,07,08,09从小到大排序。

六、修改需排序的十进制数,重复以上过程

将数据修改为:

02,04,08,09,12,14,16,13,89,77后,运行程序,结果为

02,04,08,09,12,13,14,16,77,89。

七、修改程序,按照从大到小的顺序排序

答:

将原程序中的“JNCNEXT”修改为“JNCNEXT”

SIZEEQU10

ARRAYEQU50H

MOV50H,#9

MOV51H,#7

MOV52H,#2

MOV53H,#8

MOV54H,#4

MOV55H,#6

MOV56H,#0

MOV57H,#3

MOV58H,#1

MOV59H,#5

CHANCEEQU0

SORT:

MOVR0,#ARRAY

MOVR7,#SIZE-1

CLRCHANCE

GOOD:

MOVA,@R0

MOVR2,A

INCR0

MOVB,@R0

CJNEA,B,NOTEQUAL

SJMPNEXT

NOTEQUAL:

JNCNEXT;修改

SETBCHANCE

XCHA,@R0

DECR0

XCHA,@R0

INCR0

NEXT:

DJNZR7,GOOD

JBCHANCE,SORT

LJMP$

END

●程序运行后结果为09,08,07,06,05,04,03,02,01,00,从大到小排序。

硬件实验一I/O口输入/输出及控制实验

、I/O口输入/输出实验

一、目的:

学习单片机I/O口的使用方法;学习延时子程序的编写和使用

二、内容

1.I/O口输出:

P1口做输出口,接八只发光二极管,编写程序使发光二极管循环点亮。

2.I/O口输入/输出:

P1.0、P1.1作输入口接两个拨动开关;P1.2、P1.3作输出口,接两个发光二极管。

编写程序读取开关状态,将此状态在发光二极管显示出来。

编写程序时应注意P1.0、P1.1作为输入口是应先置1,才能正确读入值。

三、实验步骤

1、I/O口输出硬件连接

连线

连接孔1

连接孔2

1

P1.0

L0

2

P1.1

L1

3

P1.2

L2

4

P1.3

L3

5

P1.4

L4

6

P1.5

L5

7

P1.6

L6

8

P1.7

L7

MCS51的P1口循环点灯

 

2、I/O口输入/输出硬件连接

连线

连接孔1

连接孔2

1

K4

P1.0

2

K5

P1.1

3

P1.3

L4

4

P1.3

L4

MCS51的P1口输入/输出

 

3.实验说明

(1)对于MCS51,P1是准双向口。

它作为输出口时与一般的双向口使用方法相同;但准双向口用作输入口时,因其结构特点必须先对它置“1”,否则读入的数据容易产生错误。

(2)8051的延时子程序的延时计算问题,对于程序

Delay:

MOVR6,#0H

MOVR7,#0H

DelayLoop:

DJNZR6,DelayLoop

DJNZR7,DelayLoop

RET

查指令表可知MOV和DJNZ指令均需要两个机器周期,在12MHz晶振时,一个机器周期时间为:

12/12MHz=1ms,该延时子程序延时:

(256*255+2)*2*12/12

130ms。

 

4.分别连接硬件并执行相关程序,记录结果。

四、提高要求

修改I/O口输出程序,改成先1,3,5,7灯亮,再2,4,6,8灯亮。

 

五、程序框图

六、程序代码

1.I/O口输出(P1口循环点灯)汇编版.asm

LOOP:

MOVA,#01H

MOVR2,#8

OUTPUT:

MOVP1,A

RLA

CALLDELAY

DJNZR2,OUTPUT

LJ

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

当前位置:首页 > 幼儿教育 > 唐诗宋词

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

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