《单片机原理与接口》实验指导书本科通信专业使用Word文档下载推荐.docx
- 文档编号:4471203
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:44
- 大小:238.88KB
《单片机原理与接口》实验指导书本科通信专业使用Word文档下载推荐.docx
《《单片机原理与接口》实验指导书本科通信专业使用Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《《单片机原理与接口》实验指导书本科通信专业使用Word文档下载推荐.docx(44页珍藏版)》请在冰点文库上搜索。
若为“>”提示符,则表明系统处于86状态,此时,可通过键盘键入“5”↙(回车),即可转至51状态。
进入TDN86/51系统集成软件操作界面后,按下Fl功能键,进入全屏幕编辑界面,按ALT+F进入文件菜单,选择建立新文件(NEW),即可开始输入源程序。
实验程序如下(输入程序时,只输入汇编源程序,不要输入左边的反汇编代码):
反汇编程序代码汇编源程序
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相连。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机原理与接口 单片机 原理 接口 实验 指导书 本科 通信 专业 使用