微机原理及应用实验报告.docx

上传人:b****6 文档编号:6616220 上传时间:2023-01-08 格式:DOCX 页数:33 大小:145.86KB
下载 相关 举报
微机原理及应用实验报告.docx_第1页
第1页 / 共33页
微机原理及应用实验报告.docx_第2页
第2页 / 共33页
微机原理及应用实验报告.docx_第3页
第3页 / 共33页
微机原理及应用实验报告.docx_第4页
第4页 / 共33页
微机原理及应用实验报告.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

微机原理及应用实验报告.docx

《微机原理及应用实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理及应用实验报告.docx(33页珍藏版)》请在冰豆网上搜索。

微机原理及应用实验报告.docx

微机原理及应用实验报告

微机原理及应用实验报告

 

班级:

机械1301班

*******

学号:

**********

座位号:

中南大学机电工程学院

 

实验一单片机仿真开发机操作和MCS-51指令系统应用

一.实验目的

1、熟悉MCS-51单片机仿真开发机和开发调试软件的操作使用和调整;

2、学会编写和输入汇编语言源程序、对输入的源程序进行汇编;

3、掌握程序的调试和运行的各种方法。

二.实验设备

台式微型计算机

MCS-51仿真开发机

THKSCM-2A

三.实验内容及步骤(完成分值:

60分)

本实验秩序运行KeiluVersion2程序,设置为keil为纯软件仿真

1.新建工程项目

2.设置工程文件参数

3.编写新程序事例

4.调试程序直至能够运行出结果。

四.实验程序

AJMPMAIN

ORG0030H

MAIN:

MOVR0,#20H

MOVR2,#0FH

MOVA,#00H

A1:

MOV@R0,A

INCR0

INCA

DJNZR2,A1

MOVR0,#20H;暂停,观察并记录!

MOVDPTR,#7000H

MOVR2,#0FH

A2:

MOVA,@R0

MOVX@DPTR,A

INCR0

INCDPTR

DJNZR2,A2

MOVR0,#030H;断点,观察并记录!

MOVDPTR,#7000H

MOVR2,#0FH

A3:

MOVXA,@DPTR

MOVX@R0,A

INCR0

INCDPTR

DJNZR2,A3

DO:

LJMPDO

END;内部存储器数据块赋值,搬运数据块到外部存储器,再搬运回内部数据存储器。

五、附加题

1.将光标移到想要暂停的地方,MOVR0,#20H所在行,选择“执行到光标处”功能,程序快速执行到光标所在行。

观察运行情况,并记录下表。

R0

R2

A

20H

21H

22H

23H

24H

25H

0x2f

0x00

0x0f

00H

01H

02H

03H

04H

05H

26H

27H

28H

29H

2AH

2BH

2CH

2DH

2EH

06H

07H

08H

09H

0AH

0BH

0CH

0DH

0EH

2.在MOVR0,#0A0H行设置断点,全速执行,暂停后观察并记录以下单元内容

R0

DPL

7000H

7001H

7002H

7003H

7004H

7005H

7006H

0X2F

0FH

00H

01H

02H

03H

04H

05H

06H

7007H

7008H

7009H

700AH

700BH

700CH

700DH

700EH

07H

08H

09H

0AH

0BH

0CH

0DH

0EH

3.画出程序流程图

 

 

N

Y

 

N

Y

 

N

Y

4.修改程序,实现新功能

实现倒序数据转移程序

AJMP

MAIN

ORG0030H

MAIN:

MOVR0,#40H

MOVR2,#0FH

MOVA,#00H

A1:

MOV@R0,A

DECR0

INCA

DJNZR2,A1

MOVR0,#30H

MOVDPTR,#7000H

MOVR2,#0FH

A2:

MOVA,@R0

MOVX@DPTR,A

INCR0

INCDPTR

DJNZR2,A2

MOVR0,#030H

MOVDPTR,#7000H

MOVR2,#0FH

A3:

MOVXA,@DPTR

MOVX@R0,A

INCR0

INCDPTR

DJNZR2,A3

DO:

LJMPDO

END

 

实验二程序设计

一、实验目的

1、掌握MCS-51单片机指令系统及用汇编语言编程技巧;

2、了解和熟悉用MCS-51单片机仿真开发机调试程序的方法。

二、实验内容及步骤(完成分值:

30分/单个程序)

题目1、编写排序程序并上机调试通过。

已知8031内部RAM60H~69H单元中,依次存放了0FH,09H,07H,0CH,03H,0DH,08H,0BH,04H,01H共10个字节无符号数,编程将它们规律排序,最大数放在60H中,最小数放在69H中。

结果应该是0FH,0DH,0CH,0BH,09H,08H,07H,04H,03H,01H。

题目2、编写多字节加法程序并上机调试通过。

8031内部RAM22H、21H、20H单元中,分别存放了3字节无符号被加数0FFH、0FFH、0FFH(低字节在低地址),在32H、31H、30H单元中分别存放3字节无符号加数22H、22H、22H(低字节在低地址),求两数之和,并将结果存入内部RAM23H、22H、21H、20H单元中(低字节在低地址)。

结果应该是01H、22H、22H、21H。

四、参考实验程序

题目1

ORG0000H

LJMPmain

ORG0100H

main:

...将10个随机数送入内部RAM的50~59H单元

NOP;可在此处设置断点

ACALLSELSORT;调用排序子程序

HERE:

AJMPHERE;可在此处设置断点,观察每次排序结果

NOP

;排序子程序

DATEQU60H;排序数据首地址

NEQU10;排序个数

SELSORT:

MOVR0,#DAT

MOVR2,#N-1

LOOP:

MOVB,@R0

MOVA,R0

MOVR3,A

INCA

MOVR1,A

MOVA,R2

MOVR4,A

LOOP1:

MOVA,@R1

CLRC

SUBBA,B

JCLOOP2;改为JNC即可逆序排列

MOVB,@R1

MOVA,R1

MOVR3,A

LOOP2:

INCR1

DJNZR4,LOOP1

MOVA,R3

MOVR1,A

MOVA,@R1

XCHA,@R0

XCHA,@R1

INCR0

DJNZR2,LOOP

RET

END

 

题目2

ORG0000H

LJMPmain

ORG0100H

main:

MOVR0,#20H

MOV@R0,#0FFH

INCR0

MOV@R0,#0FFH

INCR0

MOV@R0,#0FFH

MOVR0,#30H

MOV@R0,#22H

INCR0

MOV@R0,#22H

INCR0

MOV@R0,#22H

ACALLMULTADD;调用多字节加法子程序

HERE:

AJMPHERE;可在此处设置断点,观察结果

NOP

;N字节无符号数加法子程序([R0]+[R1])=([R0])

;入口:

R0,R1,R2

;占用资源:

ACC,B

;堆栈需求:

2字节

;出口:

R0存放结果高地址

MULTADD:

MOVR0,#20H;地址1

MOVR1,#30H;地址2

MOVR2,#03H;加法字节数

NSUB:

CLRC

NSUB1:

MOVA,@R0

ADDCA,@R1

MOV@R0,A

INCR0

INCR1

DJNZR2,NSUB1

CLRA

ADDCA,#00H;把进位位C加到高8位去

MOV@R0,A

RET

END

五、附加题

1.画出题目1的程序流程图。

 

Y

N

N

N

Y

N

Y

2.将题目1的排序算法进行改变,采用另一种排序算法进行排序。

ORG0000H

LJMPmain

ORG0100H

MAIN:

...;将10个随机数送入

LOOP2:

MOVA,@R0

MOV50H,@R1

CJNEA,50H,BIG;做减法。

BIG:

JNCLESS;是0则跳转

LJMPLOOP3

LESS:

XCHA,@R1;交换60与61中的内容

XCHA,@R0

LOOP3:

INCR1

CJNER1,#6AH,LOOP2;

INCR0

MOV51H,R0

MOVR1,51H

INCR1

CJNER0,#69H,LOOP2;以此类推,直到剩最后两个数比较完。

SJMP$

END

3.画出题目2的程序流程图。

 

N

Y

 

4.改为编写多字节减法程序。

ORG0000H

LJMPmain

ORG0100H

main:

MOVR0,#20H

MOV@R0,#0FFH

INCR0

MOV@R0,#0FFH

INCR0

MOV@R0,#0FFH

MOVR0,#30H

MOV@R0,#22H

INCR0

MOV@R0,#22H

INCR0

MOV@R0,#22H

ACALLMULTADD;调用多字节加法子程序

HERE:

AJMPHERE;可在此处设置断点,观察结果

NOP

;N字节无符号数加法子程序([R0]+[R1])=([R0])

;入口:

R0,R1,R2

;占用资源:

ACC,B

;堆栈需求:

2字节

;出口:

R0存放结果高地址

MULTADD:

MOVR0,#20H;地址1

MOVR1,#30H;地址2

MOVR2,#03H;加法字节数

NSUB:

CLRC

NSUB1:

MOVA,@R0

ADDCA,@R1

MOV@R0,A

INCR0

INCR1

DJNZR2,NSUB1

CLRA

ADDCA,#00H;把进位位C加到高8位去

MOV@R0,A

RET

END

 

实验三定时/计数器实验

一、实验目的

1、掌握MCS-51单片机内部定时/计数器的功能与特点,工作方式选择和编程方法,中断功能的使用和中断服务程序的设计;

2、了解和熟悉MCS-51单片机实验板的功能。

二、实验内容及步骤(完成分值:

60分/单个程序)

本实验需要用到单片机最小应用系统(F1区)和十六位逻辑电平显示模块(I4区)。

用P1口做输出口,接十六位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。

三、参考流程图、电路图、参考程序

 

程序:

Tickequ5000;100us记数次数,5000x100us=0.5s,十六进制#1388H

T100usequ156;100us时间常数(12MHz)

C100usequ5h;100us记数单元,05H、06H

org0000H

ljmpStart

org000BH

LJMPT0Int

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

ORG0100H

Start:

movTMOD,#02h;方式2,定时器

movTH0,#T100us;100us时间常数(12MHz)

movTL0,#T100us;100us时间常数(12MHz)

movIE,#10000010b;EA=1,IT0=1

setbTR0;开始定时

movp1,#0FEH;由于电路原因,输出高电平为灭灯。

movC100us,#HIGH(Tick);05H<-#13H,初始化100us记数单元

movC100us+1,#LOW(Tick);06H<-#88H,初始化100us记数单元

Loop:

ljmpLoop

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

ORG0300H

T0Int:

pushPSW

mova,C100us+1;100us高位记数单元06H

jnzGoon

decC100us;100us低位记数单元05H

Goon:

decC100us+1

mova,C100us;100us低位记数单元05H

orla,C100us+1

jnzExit;100us记数单元不为0,返回

movC100us,#HIGH(Tick);05H<-#13H,100us记数单元为0则初始化100us记数单元

movC100us+1,#LOW(Tick);06H<-#88H,100us记数单元为0则初始化100us记数单元

MOVA,P1;100us记数单元为0,位移!

RLA

MOVP1,A

Exit:

popPSW

reti

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

End

五、附加题

1.修改程序,实现新功能

奇数偶数交换点亮

Tickequ5000

T100usequ156

C100usequ5h

org0000H

ljmpStart

org000BH

LJMPT0Int

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

ORG0100H

Start:

movTMOD,#02h

movTH0,#T100us

movTL0,#T100us

movIE,#10000010b

setbTR0

movp1,#0AAH

movC100us

movC100us+1

Loop:

ljmpLoop

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

ORG0300H

T0Int:

pushPSW

mova,C100us+1

jnzGoon

decC100us

Goon:

decC100us+1

mova,C100us

orla,C100us+1

jnzExit

movC100us,#HIGH(Tick)

movC100us+1,#LOW(Tick)

MOVA,P1

RLA

MOVP1,A

Exit:

popPSW

reti

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

End

2.用MCS-51单片机的内部定时器定时中断,编写一段电子秒表程序,在静态数码管上实现显示。

TCNTAEQU30H;

TCNTBEQU31H

SECEQU32H

KEYCNTEQU33H

SP1BITP3.5

ORG00H

LJMPSTART

ORG0BH

LJMPINT_T0

START:

MOVKEYCNT,#00H

MOVSEC,#00H

MOVA,SEC

MOVB,#10

DIVAB

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP0,A

MOVA,B

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP2,A

MOVTMOD,#02H;

SETBET0

SETBEA

WT:

JBSP1,WT

LCALLDELY10MS

JBSP1,WT

INCKEYCNT

MOVA,KEYCNT

CJNEA,#01H,KN1

SETBTR0

MOVTH0,#06H

MOVTL0,#06H

MOVTCNTA,#00H

MOVTCNTB,#00H

LJMPDKN

KN1:

CJNEA,#02H,KN2

CLRTR0

LJMPDKN

KN2:

CJNEA,#03H

MOVSEC,#00H

MOVA,SEC

MOVB,#10

DIVAB

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP0,A

MOVA,B

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVP2,A

MOVKEYCNT,#00H

DKN:

JNBSP1,$

LJMPWT

DELY10MS:

MOVR6,#20

D1:

MOVR7,#248

DJNZR7,$

DJNZR6,D1

RET

INT_T0:

INCTCNTA

MOVA,TCNTA

CJNEA,#100,NEXT

MOVTCNTA,#00H

INCTCNTB

MOVA,TCNTB

CJNEA,#4,NEXT

MOVTCNTB,#00H

INCSEC

MOVA,SEC

CJNEA,#100,DONE

MOVSEC,#00H

DONE:

MOVA,SEC

MOVB,#10

DIVAB

MOVDPTR,#TABLEMOVCA,@A+DPTR

MOVP0,A

MOVA,B

MOVDPTR,#TABLEMOVCA,@A+DPTR

MOVP2,A

NEXT:

RETI

TABLE:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

END

 

实验四动态显示实验

一、实验目的

1、掌握七段LED数码管显示器工作原理,以及用动态扫描方法编程实现8位LED数码管显示的方法;

2、进一步了解和熟悉MCS-51单片机实验板的功能。

二、实验内容及步骤(完成分值:

60分/单个程序)

本实验需要用到单片机最小应用系统(F1区)和动态扫描显示模块(I2区)。

1.用8P排线将单片机最小应用系统(F1区)的P2口和动态扫描显示的位选JD1I相连,用8P排线将单片机最小应用系统(F1区)的P0口和动态扫描显示模块的段码JD0I相连。

2.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:

缺口朝上。

3.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加源程序,进行编译,直到编译无误。

4.全速运行程序,直至显示效果为稳定的“123456”。

四、参考流程图、电路图、实验程序

电路接线图

程序:

ORG0000H

AJMPMAIN

ORG0080H

MAIN:

MOVP2,#0FFH

MOVP0,#7DH;显示6

CLRP2.0;选中第一个数码管

LCALLDELAY;调用延时

;MOVP0,#0FFH;关显示

SETBP2.0

MOVP0,#6DH;显示5

CLRP2.1;选中第二个数码管

LCALLDELAY

;MOVP0,#0FFH

SETBP2.1

 

MOVP0,#066H;显示4

CLRP2.2;选中第三个数码管

LCALLDELAY

;MOVP0,#0FFH

SETBP2.2

 

MOVP0,#4FH;显示3

CLRP2.3;选中第四个数码管

LCALLDELAY

;MOVP0,#0FFH

SETBP2.3

 

MOVP0,#5BH;显示2

CLRP2.4;选中第五个数码管

LCALLDELAY

;MOVP0,#0FFH

SETBP2.4

 

MOVP0,#06H;显示1

CLRP2.5;选中第六个数码管

LCALLDELAY

;MOVP0,#0FFH

SETBP2.5

;CLRP2.6;选中第七个数码管

;MOVP0,#21H;显示6

;LCALLDELAY

;MOVP0,#0FFH

;SETBP2.6

;CLRP2.7;选中第八个数码管

;MOVP0,#7AH;显示7

;LCALLDELAY

;SETBP2.7

;MOVP0,#0FFH

AJMPMAIN;重新开始

DELAY:

;延时子程序

MOVR7,#20H

D1:

MOVR6,#30H

D2:

DJNZR6,D2

DJNZR7,D1

RET

;DISTAB:

DB3FH,06H,5BH,4FH

;DB66H,6DH,7DH,07H

;DB7FH,6FH,77H,7CH

;DB39H,5EH,79H,71H

END

五、附加题(完成分值:

20分/单个附加题,附加题要求当场给指导老师检查结果,否则无效。

1.修改程序,稳定循环显示“GOOD”、“HELLO”、“CSU”、“D510”,程序如何修改?

ORG0000H

AJMPMAIN

ORG0080H

MAIN:

MOVR1,#7FH

MOVR2,#7FH

MOVR3,#7FH

MOVR4,#7FH

LOOP1:

MOVP2,#0FFH

MOVP0,#3FH

CLRP2.0

LCALLDELAY

;MOVP0,#0FFH

SETBP2.0

MOVP0,#3FH

CLRP2.1;选中第二个数码管

LCALLDELAY

;MOVP0,#0FFH

SETBP2.1

 

MOVP0,#03FH

CLRP2.2;选中第三个数码管

LCALLDELAY

;MOVP0,#0FFH

SETBP2.2

 

MOVP0,#7DH

CLRP2.3;选中第四个数码管

LCALLDELAY

;MOVP0,#0FFH

SETBP2.3

DJNZR1,LOOP1

LOOP2:

MOVP2,#0FFH

MOVP0,#3FH

CLRP2.0;选中第一个数码管

LCALLDELAY;调用延时

;MOVP0,#0FFH;关显示

SETBP2.0

MOVP0,#38H

CLRP2.1;选中第二个数码管

LCALLDELAY

;MOVP

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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