《单片机原理与接口》实验指导书Word格式.docx

上传人:b****6 文档编号:17196802 上传时间:2022-11-28 格式:DOCX 页数:37 大小:238.69KB
下载 相关 举报
《单片机原理与接口》实验指导书Word格式.docx_第1页
第1页 / 共37页
《单片机原理与接口》实验指导书Word格式.docx_第2页
第2页 / 共37页
《单片机原理与接口》实验指导书Word格式.docx_第3页
第3页 / 共37页
《单片机原理与接口》实验指导书Word格式.docx_第4页
第4页 / 共37页
《单片机原理与接口》实验指导书Word格式.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

《单片机原理与接口》实验指导书Word格式.docx

《《单片机原理与接口》实验指导书Word格式.docx》由会员分享,可在线阅读,更多相关《《单片机原理与接口》实验指导书Word格式.docx(37页珍藏版)》请在冰豆网上搜索。

《单片机原理与接口》实验指导书Word格式.docx

实验程序如下(输入程序时,只输入汇编源程序,不要输入左边的反汇编代码):

反汇编程序代码汇编源程序

ORG0000H

0000021000LJMPMAIN

ORGl000H

10007A06MAIN:

MOVR2,#06H

10027B00MOVR3,#00H

10047C00MOVR4,#00H

10067850MOVR0,#50H

1008ECL1:

MOVA,R4

100926ADDA,@R0

100AFCMOVR4,A

100B08INCR0

100CE4CLRA

100D3BADDCA,R3

100EFBMOVR3,A

100FDAF7DJNZR2,L1

101180FEL2:

SJMPL2

END

4、输入源程序后,按F2功能键,保存源程序(文件名由用户自己命名,注意:

文件名后一定要加上扩展名,扩展名规定为“.ASM”),使用ALT+X退出全屏幕编辑界面,返回集成软件操作界面。

5、在集成软件操作界面中,按F2功能键,输入文件名↙(“↙”——表示按回车键,注意:

只需输入文件名,不需带扩展名,系统默认为*.ASM),汇编程序自动对源程序进行汇编生成浮动目标文件(*.r03)及错误信息文件(*.M)。

汇编无误后,自动生成相应的*.LST文件。

6、汇编完成后,按F3功能键,输入文件名↙(不需带扩展名),汇编程序自动对汇编生成的*.r03文件进行链接,链接信息显示于屏幕上,生成相应的*.HEX可执行文件及链接信息报告文件(*.L)。

7、按F5功能键,输入文件名.HEX↙(此时,一定要带扩展名“.HEX”),PC机开始将程序从磁盘装入到TDN86/51实验系统内存,提示装载完毕(LoadOK)后,使用U命令(本实验输入U0000↙,再输入U1000↙)进行反汇编,检查程序是否正确装入。

当源程序输入有错误或需要调整时,可使用A命令进行修改。

8、用R07XX↙格式命令(本实验为:

“R0750↙”),将题目

(1)中的六个数放入片内RAM区50H~55H单元中,过程如下:

显示信息

用户键入

R0750↙

0750=XX_

32(按空格键)

0751=XX_

41(按空格键)

0752=XX_

01(按空格键)

0753=XX_

56(按空格键)

0754=XX_

11(按空格键)

0755=XX_

03↙

9、将实验系统的运行状态开关(位于实验机箱的右下角)拨至STEP——单步运行位,使用T命令,单步方式运行程序,过程如下:

注释

T=0000↙

屏幕显示寄存器状态

10007A06MOVR2,#06H

T↙(或:

按F4键)

屏幕显示即将执行的指令

10027B00MOVR3,#00H

……

(不断使用T命令单步运行至进入动态停机为止)

10、用R07×

×

格式命令,检查单片机内03H一04H单元——用R0703↙,检查03H单元;

用R0704↙或直接按空格键,检查04H单元。

此即程序运行的结果。

请记录并检查结果是否正确,检查时,请注意十进制数据与十六进制数据的差别。

11、将实验系统的运行状态开关拨至EXEC位,用B命令,在1011处设一个断点,过程如下:

B↙

0:

1011↙

1:

12、用R07XX↙命令,将题目

(2)中的六个数放入片内RAM区50H~55H单元中(仿照步骤8、的过程进行)。

13、用GB命令,带断点连续运行程序,过程如下:

GB=1000↙

稍过一会,就会显示单片机的当前状态。

14、重复步骤10、记录并检查运行结果。

15、按实验系统的RESET——复位键(位于实验机箱下方中偏右处),清除断点。

16、仿照步骤8、用R07XX↙命令,将题目(3)中的六个数放入片内RAM区50H~55H单元中。

17、将实验系统的运行状态开关拨至EXEC——连续运行位,用G命令,无断点连续运行程序,过程如下:

G=0000↙

按实验系统复位键(RESET)

18、按实验系统的RESET复位键,中断程序运行。

重复步骤10、记录并检查运行结果。

五、实验报告

按学校规定的格式撰写。

实验2-1分支程序实验

1、加深对分支程序的理解;

2、充分认识分支程序的作用;

3、掌握分支程序的设计方法。

PC机一台+Dais集成开发环境。

三、实验内容及步骤

实验步骤以及实验记录内容参照“实验一”进行。

实验时请与教材中附录A的应用项目源程序对照,逐渐熟悉其中的指令。

1、双分支程序实验

实验应用项目中包含双分支程序结构的T0中断服务程序(注:

不加编号的指令是为了实验而加上去的指令。

实验时应将编号去掉——下文相同之处,不再提示)。

;

⑥T0中断服务程序:

ORG0030H

MOV26H,#0AH

MOV27H,#59H

MOV28H,#59H

MOV29H,#23H

MOV2BH,#60H

MOV2CH,#60H

MOV2DH,#24H

85CLOCK:

PUSHPSW;

保护现场

86PUSHACC

87SETBRS0;

选择工作寄存器组1

88MOVTH0,#3CH;

重装定时器T0初值

89MOVTL0,#0BDH

90INC26H;

0.1s单元加1

91MOVA,26H;

取0.1s单元内容

92CJNEA,#0AH,DONE1;

不等于10,转DONE1

93MOV26H,#00H;

等于10,则清0

94MOVR0,#27H;

指向秒计数单元

95MOVRl,#2BH;

指向秒计数基制单元

96MOVR3,#03H;

循环3次(秒、分、时)

97CLOCK1:

MOVA,@R0;

取计时单元的值

98ADDA,#01H;

计时单元加1

99DAA;

十进制调整

100MOV@R0,A;

送回计时单元

101MOV3BH,@Rl;

取计时基制

102CJNEA,3BH,NEXT3;

不等于计时基制,转出

103MOV@R0,#00H;

相等,则计时单元清0

104INCR0;

计时单元指针加1

105INCR1;

时间基制单元指针加1

106DJNZR3,CLOCK1;

秒、分、时共3次循环

107NEXT3:

ACALLCTRL;

调用控制子程序

108DONE1:

POPACC;

恢复现场

109POPPSW

SJMP$

110RETI;

中断返回

CTRL:

RET

END

要求单步运行程序,每执行一条指令,查看一次调试窗口、寄存器窗口、特殊寄存器窗口、CPU内部数据区窗口,观察(PC)、(26H)、(27H)、(28H)、(29H)、(3BH)、(A)、(R0)、(R1)值的变化情况,理解指令功能、双分支程序结构,并逐步了解指令的程序功能,为弄懂应用项目打下基础。

2、多分支程序实验

【例4-3】请根据R2中存放的转移序号,编写出转向相应处理分支的程序。

R2 

0,转PROG0;

1,转PROG1;

n,转PROGn。

实验程序如下:

ORG0030H

MOVR2,#00H

MOVR3,#00H

LOOP:

INCR3

CJNER3,#04H,GO

SJMP$

GO:

MOVDPTR,#TAB;

指向转移指令表首地址

MOVA,R2;

取转移序号

ADDA,R2;

序号值乘2

JNCNEXT;

乘积小于256,转

INCDPH;

大于等于256,DPTR高8位加1

NEXT:

JMP@A+DPTR;

散转

TAB:

AJMPPROG0;

转移指令表

AJMPPROG1

AJMPPROG2

AJMPPROG3

NOP

PROG0:

NOP

SJMPLOOP

PROG1:

PROG2:

PROG3:

要求单步运行程序,每执行一条指令,查看一次调试窗口、寄存器窗口、特殊寄存器窗口、CPU内部数据区窗口,观察(R2)、(R3)、(DPTR)、(A)、(PC)值的变化情况,理解指令功能、多分支程序结构以及领会程序设计方法。

思考:

若将转移指令表中AJMP改为LJMP,要求实现相同的功能,则如何修改程序?

四、实验报告

按学校规定的格式撰写实验报告。

对实验的结果进行分析,对实验中遇到的问题加以说明。

实验2-2循环程序实验

1、加深对循环程序的理解;

2、充分认识循环程序的作用;

3、掌握循环程序的设计方法。

三、实验内容和步骤

实验步骤参照“实验一”进行。

实验与应用项目有关的内容时请与教材中附录A的应用项目源程序对照,逐渐熟悉其中的指令。

1、“先执行后判断”循环程序实验

“先执行后判断”循环程序是一进入循环程序,先执行循环体,然后根据循环结束条件判断是否结束循环。

若不满足结束条件,则继续执行循环体;

若满足结束条件,则进行结束处理,退出循环。

其特点是循环体至少被执行一次。

已知单片机内部RAM的BLOCK单元开始有一个无符号数据块,块长在LEN单元,请用“先执行后判断”循环方式编出求数据块中各数累加和并存入SUM单元的程序。

解:

LENEQU20H

SUMEQU21H

BLOCKEQU22H

CLRA;

A清零

MOVR2,LEN;

块长度送R2

MOVR1,#BLOCK;

块起始地址送R1

INCR2;

块长加1

SJMPCHECK

ADDA,@R1;

求累加和

INCR1;

数据块指针加1

CHECK:

DJNZR2,LOOP;

若未完,则转LOOP

MOVSUM,A;

累加完成,保存结果

SJMP$;

动态停机

END

要求单步运行程序,每执行一条指令,查看一次调试窗口、寄存器窗口、特殊寄存器窗口、CPU内部数据区窗口,观察(R2)、(R1)、(A)、(PC)、(SUM)值的变化情况,理解指令功能、先执行后判断循环程序结构以及领会程序设计方法。

2、“先判断后处理”循环程序实验

“先判断后处理”循环程序将循环程序的控制部分放在循环的入口处,先根据循环结束条件判断是否结束循环。

若满足结束条件,则直接进行结束处理,退出循环;

若不满足结束条件,则反复执行循环体,其特点是:

若一开始就满足循环结束条件,则一次也不执行循环体,即循环次数有可能为0。

已知单片机内部RAM的BLOCK单元开始有一个无符号数据块,块长在LEN单元,请用“先判断后处理”循环方式编出求数据块中各数累加和并存入SUM单元的程序。

ORG0100H

DJNZR2,LOOP;

要求单步运行程序,每执行一条指令,查看一次调试窗口、寄存器窗口、特殊寄存器窗口、CPU内部数据区窗口,观察(R2)、(R1)、(A)、(PC)、(SUM)值的变化情况,理解指令功能、先判断后处理循环程序结构以及领会程序设计方法。

实际应用时将如何选用上述两种方法?

3、延时程序:

若单片机的晶振频率为6MHz,则下列程序将延时多长时间?

DELAY:

MOVR7,#02H

D1:

MOVR6,#0FFH

D2:

DJNZR6,D2

DJNZR7,D1

RET

实验3-1查表程序实验

1、加深对查表程序的理解;

1、使用MOVCA,@A+DPTR指令查表

有一变量存放在片内RAM的20H单元,其取值范围为:

00H~05H。

要求编制一段程序,根据变量值求其平方值,并存入片内RAM的21H单元。

算法:

在程序存储器的一片存储单元中建立起该变量的平方表。

用数据指针DPTR指向平方表的首址,则变量与数据指针之和的地址单元中的内容就是变量的平方值。

LJMPMAIN

ORG1000H

MAIN:

MOV20H,#00H

MOVDPTR,#TABLE

MOVA,20H

CJNEA,#06H,NEXT

NEXT:

MOVCA,@A+DPTR

MOV21H,A

INC20H

ORG2000H

TABLE:

DB00,01,04,09,16,25

要求单步运行程序,每执行一条指令,查看一次调试窗口、寄存器窗口、特殊寄存器窗口、CPU内部数据区窗口,观察(20H)、(A)、(21H)、(PC)值的变化情况,理解MOVCA,@A+DPTR查表指令功能、查表程序结构以及领会查表程序设计方法。

2、使用MOVCA,@A+PC指令查表

将16个两位十六进制数转换成ASCII码:

设地址指针R0指向待转换的十六进制数,R2中存放字节数,R1指向要存放的ASCII码的起始地址。

在程序存储器的一片存储单元中建立起十六进制数的ASCII码表。

使用查表指令MOVCA,@A+PC,通过查表的方法将十六进制数转换为ASCII码。

ORG0030H

MOVR0,#20H;

赋初值

MOVR2,#10H

MOVR1,#30H

MOVA,#00H

SETDAT:

MOV@R0,A;

设置待转换的十六进制数

ADDA,#11H

INCR0

DJNZR2,SETDAT

MOVR0,#20H;

重赋初值

HTASC:

MOVA,@R0;

取十六进制数低4位

ANLA,#0FH

ADDA,#16;

偏移量修正

MOVCA,@A+PC;

查表

MOV@R1,A;

存ASCII码

INCR1

MOVA,@R0;

取十六进制数高4位

SWAPA

ADDA,#07;

偏移值修正

MOVCA,@A+PC

MOV@R1,A

INCR0;

指向下一单元

INCR1

DJNZR2,HTASC;

未完,继续

SJMP$;

完成,动态停机

ASCTAB:

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

DB38H,39H,41H,42H,43H,44H,45H,46H

要求单步运行程序,每执行一条指令,查看一次调试窗口、寄存器窗口、特殊寄存器窗口、CPU内部数据区窗口,观察(PC)、(R0)、(R1)、(R2)、(A)值的变化情况,理解MOVCA,@A+PC查表指令功能、查表程序结构以及领会查表程序设计方法。

在使用MOVCA,@A+PC查表指令时,如何确定偏移量修正值?

实验3-2中断实验

1、掌握单片机与外设传送信息的方式;

2、掌握查询方式的编程方法;

3、掌握中断系统的初始化编程。

1、查询方式

生产控制过程中有一台机器正在工作,单片机通过查询其工作状态,并从I/O端口输出控制信号和状态信号。

如果机器正常工作(KK1-=1)时,绿色发光二极管不停地闪烁,一旦出现故障(KK1-=0,按下KK1),则绿色发光二极管熄灭,停止工作,同时红色发光二极管不停地闪烁,故障排除后(KK1-=1),继续工作(绿色发光二极管闪烁)。

用单片机实现这一控制过程。

参考程序如下:

ORG0000H

LJMPMAIN

ORG0030H

MOVP1,#0FFH

L:

JNBP3.3,L2

L1:

CPLP1.3

SETBP1.4

ACALLDLY

JBP3.3,L1

L2:

SETBP1.3

CPLP1.4

AJMPL

DLY:

MOVR3,#0FFH

D0:

MOVR2,#88H

D1:

DJNZR2,D1

DJNZR3,D0

RET

实验操作步骤:

(1)连接电路:

将单片机的

与KK1-相连,根据题目要求和所给程序将P1.3、P1.4分别与绿色、红色LED相连。

(2)输入源程序并检查无误,经汇编、连接后装入系统。

(3)用G=0000↙运行程序,按下和放开KK1-仔细观察红、绿灯的变化。

(4)按RESET键终止运行,返回监控。

试估算延时程序的延时时间。

2、中断方式

要求:

有故障(

有奇数次下降沿)时控制红色发光二极管亮和绿色发光二极管灭;

如果故障排除(

有偶数次下降沿)时控制绿色发光二极管亮和红色发光二极管灭。

ORG0013H

CPLP1.3

RETI

MOVP1,#0F0H

SETBIT1

SETBEA

SETBEX1

SJMP$

与KK1-相连,根据题目要求和所给程序将P1.3、P1.4分别与绿、红色LED相连。

(3)用G=0000↙运行程序,多次按下KK1-仔细观察红、绿灯的变化。

试编写能实现

中断表示有故障,

中断表示正常的控制程序。

要求按学校规定的格式撰写报告,并要求:

1

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

当前位置:首页 > 初中教育 > 理化生

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

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