资源描述
《单片机原理和接口》
试验指导书
梁炳东 编
广东海洋大学
9月
目 录
试验1 试验系统认识试验 1
试验2-1 分支程序试验 5
试验2-2 循环程序试验 8
试验3-1 查表程序试验 10
试验3-2 中止试验 12
试验4-1 并行口试验 14
试验4-2 串行口试验 17
试验5-1 A/D试验 20
试验5-2 D/A试验 22
试验6-1 应用项目综合试验(1) 25
试验6-2 应用项目综合试验(2) 27
附录A TDN86/51系统集成软件MD51使用说明 28
试验1 试验系统认识试验
一、试验目标
1、了解TDN86/51教学试验系统结构。
2、学习并掌握试验系统基础操作。
3、掌握TDN86/51系统集成软件使用方法。
二、试验设备
TDN86/51教学试验系统一台。
三、试验内容
编程计算n个数据和,即Y = X1 + X2 + X3 + …… + Xn ,
其中X1、X2、X3、……、Xn分别存放在片内RAM区50H一55H单元中,n = 6,求和结果Y放在片内RAM区 03H (高位),04H(低位)单元中。
题目: (1)32H + 41H + 01H + 56H + 11H + 03H = 00DEH
(2)95H + 01H + 02H + 44H + 48H + 12H = 0136H
(3)54H + F6H + 1BH + 20H + 04H + C1H = 024AH
要求试验前,进行试验预习,读懂试验程序,并对程序中每条指令加上注解。同时,研习本指导书附录A,充足了解TDN86/51系统集成软件功效、操作方法和每条调试指令使用方法。
四、试验步骤
1、使用串行通信电缆将试验系统和PC微机相连(通常在试验室中设备已连接好,无需再连)。
2、按下试验机箱电源键,开启试验系统;将试验机箱“86∕51”选择开关(在试验机箱下方中偏右处)拨至“51”位置(使机箱用于进行51系列单片机试验)。
3、 开启PC机电源,双击PC机桌面上MD51快捷方法图标或进入MD51. EXE应用程序所在目录,运行该程序(双击MD51. EXE),进入TDN86/51系统集成软件引导界面(具体说明参见附录A)。依据系统所使用通信端口,选择键入1或2(通常是使用COM1,键入“1”),并回车,便可进入TDN86/51系统集成软件操作界面。
假如屏幕光标不响应回车命令,可按试验系统复位键(在试验机箱下方中偏右处)进行系统复位即可。
若屏幕出现提醒符为“—”,则表示已进入“51”状态。
若为“>”提醒符,则表明系统处于86状态,此时,可经过键盘键入“5”↙(回车),即可转至51状态。
进入TDN86/51系统集成软件操作界面后,按下Fl功效键,进入全屏幕编辑界面,按ALT + F进入文件菜单,选择建立新文件(NEW),即可开始输入源程序。
试验程序以下(输入程序时,只输入汇编源程序,不要输入左边反汇编代码):
反汇编程序代码 汇编源程序
ORG 0000H
0000 021000 LJMP MAIN
ORG l000H
1000 7A06 MAIN: MOV R2, #06H
1002 7B00 MOV R3, #00H
1004 7C00 MOV R4, #00H
1006 7850 MOV R0, #50H
1008 EC L1: MOV A, R4
1009 26 ADD A, @R0
100A FC MOV R4, A
100B 08 INC R0
100C E4 CLR A
100D 3B ADDC A, R3
100E FB MOV R3, A
100F DAF7 DJNZ R2, L1
1011 80FE L2: SJMP L2
END
4、输入源程序后,按F2功效键,保留源程序(文件名由用户自己命名,注意:文件名后一定要加上扩展名,扩展名要求为 “.ASM”),使用ALT + X退出全屏幕编辑界面,返回集成软件操作界面。
5、在集成软件操作界面中,按F2功效键,输入文件名 ↙(“↙”——表示按回车键,注意:只需输入文件名,不需带扩展名,系统默认为 *.ASM),汇编程序自动对源程序进行汇编生成浮动目标文件(*.r03)及错误信息文件(*.M)。汇编无误后,自动生成对应*.LST文件。
6、汇编完成后,按F3功效键,输入文件名 ↙(不需带扩展名),汇编程序自动对汇编生成*.r03文件进行链接,链接信息显示于屏幕上,生成对应 *.HEX可实施文件及链接信息汇报文件(*.L)。
7、按F5功效键,输入文件名.HEX ↙(此时,一定要带扩展名“.HEX”),PC机开始将程序从磁盘装入到TDN86/51试验系统内存,提醒装载完成(Load OK)后,使用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 ↙
屏幕显示寄存器状态
1000 7A06 MOV R2,#06H
T↙( 或:按F4键)
屏幕显示立即实施指令
1002 7B00 MOV R3,#00H
T↙( 或:按F4键)
屏幕显示立即实施指令
……
……
(不停使用T命令单步运行至进入动态停机为止)
10、用R07××格式命令,检验单片机内03H一04H单元——用R0703↙,检验03H单元;用R0704↙或直接按空格键,检验04H单元。此即程序运行结果。请统计并检验结果是否正确,检验时,请注意十进制数据和十六进制数据差异。
11、将试验系统运行状态开关拨至EXEC位,用B命令,在1011处设一个断点,过程以下:
屏幕显示信息
用户键入
—
B ↙
0:
1011↙
1:
↙
—
12、用R07XX ↙命令,将题目(2)中六个数放入片内RAM区50 H ~ 55H单元中(仿照步骤8、过程进行)。
13、用GB 命令,带断点连续运行程序,过程以下:
显示信息
用户键入
—
GB = 1000 ↙
—
稍过一会,就会显示单片机目前状态。
14、反复步骤10、统计并检验运行结果。
15、按试验系统RESET——复位键(在试验机箱下方中偏右处),清除断点。
16、仿照步骤8、用R07XX ↙命令,将题目(3)中六个数放入片内RAM区50 H ~ 55H单元中。
17、将试验系统运行状态开关拨至EXEC——连续运行位,用G 命令,无断点连续运行程序,过程以下:
显示信息
用户键入
—
G =0000 ↙
—
按试验系统复位键(RESET)
18、按试验系统RESET复位键,中止程序运行。反复步骤10、统计并检验运行结果。
五、试验汇报
按学校要求格式撰写。
试验2-1 分支程序试验
一、试验目标
1、加深对分支程序了解;
2、充足认识分支程序作用;
3、掌握分支程序设计方法。
二、试验设备
PC机一台 + Dais集成开发环境。
三、试验内容及步骤
试验步骤和试验统计内容参考“试验一”进行。试验时请和教材中附录A应用项目源程序对照,逐步熟悉其中指令。
1、 双分支程序试验
试验应用项目中包含双分支程序结构T0中止服务程序(注:不加编号指令是为了试验而加上去指令。试验时应将编号去掉——下文相同之处,不再提醒)。
; ⑥T0中止服务程序:
ORG 0030H
MOV 26H,#0AH
MOV 27H,#59H
MOV 28H,#59H
MOV 29H,#23H
MOV 2BH,#60H
MOV 2CH,#60H
MOV 2DH,#24H
85 CLOCK: PUSH PSW ; 保护现场
86 PUSH ACC
87 SETB RS0 ; 选择工作寄存器组1
88 MOV TH0, #3CH ; 重装定时器T0初值
89 MOV TL0, #0BDH
90 INC 26H ; 0.1s单元加1
91 MOV A, 26H ; 取0.1s单元内容
92 CJNE A, #0AH, DONE1 ; 不等于10, 转DONE1
93 MOV 26H, #00H ; 等于10, 则清0
94 MOV R0, #27H ; 指向秒计数单元
95 MOV Rl, #2BH ; 指向秒计数基制单元
96 MOV R3, #03H ; 循环3次(秒、分、时)
97 CLOCK1:MOV A, @R0 ; 取计时单元值
98 ADD A, #01H ; 计时单元加1
99 DA A ; 十进制调整
100 MOV @R0, A ; 送回计时单元
101 MOV 3BH, @Rl ; 取计时基制
102 CJNE A, 3BH, NEXT3 ; 不等于计时基制, 转出
103 MOV @R0, #00H ; 相等, 则计时单元清0
104 INC R0 ; 计时单元指针加1
105 INC R1 ; 时间基制单元指针加1
106 DJNZ R3, CLOCK1 ; 秒、分、时共3次循环
107 NEXT3: ACALL CTRL ; 调用控制子程序
108 DONE1: POP ACC ; 恢复现场
109 POP PSW
SJMP $
110 RETI ; 中止返回
CTRL: RET
END
要求单步运行程序,每实施一条指令,查看一次调试窗口、寄存器窗口、特殊寄存器窗口、CPU内部数据区窗口,观察(PC)、(26H)、(27H)、(28H)、(29H)、(3BH)、(A)、(R0)、(R1)值改变情况,了解指令功效、双分支程序结构,并逐步了解指令程序功效,为弄懂应用项目打下基础。
2、 多分支程序试验
【例4-3】请依据R2中存放转移序号,编写出转向对应处理分支程序。
R2 = 0, 转PROG0;
R2 = 1, 转PROG1;
……
R2 = n, 转PROGn。
试验程序以下:
ORG 0030H
MOV R2,#00H
MOV R3,#00H
LOOP: INC R3
CJNE R3,#04H,GO
SJMP $
GO: MOV DPTR, #TAB ; 指向转移指令表首地址
MOV A, R2 ; 取转移序号
ADD A, R2 ; 序号值乘2
JNC NEXT ; 乘积小于256, 转
INC DPH ; 大于等于256, DPTR高8位加1
NEXT: JMP @A+DPTR ; 散转
TAB: AJMP PROG0 ; 转移指令表
AJMP PROG1
AJMP PROG2
AJMP PROG3
NOP
PROG0:NOP
SJMP LOOP
PROG1:NOP
SJMP LOOP
PROG2:NOP
SJMP LOOP
PROG3:NOP
SJMP LOOP
要求单步运行程序,每实施一条指令,查看一次调试窗口、寄存器窗口、特殊寄存器窗口、CPU内部数据区窗口,观察(R2)、(R3)、(DPTR)、(A)、(PC)值改变情况,了解指令功效、多分支程序结构和领会程序设计方法。
思索:若将转移指令表中AJMP改为LJMP,要求实现相同功效,则怎样修改程序?
四、试验汇报
按学校要求格式撰写试验汇报。对试验结果进行分析,对试验中碰到问题加以说明。
试验2-2 循环程序试验
一、试验目标
1、加深对循环程序了解;
2、充足认识循环程序作用;
3、掌握循环程序设计方法。
二、试验设备
PC机一台 + Dais集成开发环境。
三、试验内容和步骤
试验步骤参考“试验一”进行。试验和应用项目相关内容时请和教材中附录A应用项目源程序对照,逐步熟悉其中指令。
1、 “先实施后判定”循环程序试验
“先实施后判定”循环程序是一进入循环程序,先实施循环体,然后依据循环结束条件判定是否结束循环。若不满足结束条件,则继续实施循环体;若满足结束条件,则进行结束处理,退出循环。其特点是循环体最少被实施一次。
题目:已知单片机内部RAMBLOCK单元开始有一个无符号数据块,块长在LEN单元,请用“先实施后判定”循环方法编出求数据块中各数累加和并存入SUM单元程序。
解:试验程序以下:
ORG 0030H
LEN EQU 20H
SUM EQU 21H
BLOCK EQU 22H
CLR A ;A清零
MOV R2, LEN ; 块长度送R2
MOV R1, #BLOCK ; 块起始地址送R1
INC R2 ; 块长加1
SJMP CHECK
LOOP: ADD A,@R1 ; 求累加和
INC R1 ;数据块指针加1
CHECK: DJNZ R2, LOOP ; 若未完,则转LOOP
MOV SUM, A ; 累加完成,保留结果
SJMP $ ; 动态停机
END
要求单步运行程序,每实施一条指令,查看一次调试窗口、寄存器窗口、特殊寄存器窗口、CPU内部数据区窗口,观察(R2)、(R1)、(A)、(PC)、(SUM)值改变情况,了解指令功效、先实施后判定循环程序结构和领会程序设计方法。
2、 “先判定后处理”循环程序试验
“先判定后处理”循环程序将循环程序控制部分放在循环入口处,先依据循环结束条件判定是否结束循环。若满足结束条件,则直接进行结束处理,退出循环;若不满足结束条件,则反复实施循环体,其特点是:若一开始就满足循环结束条件,则一次也不实施循环体,即循环次数有可能为0。
题目:已知单片机内部RAMBLOCK单元开始有一个无符号数据块,块长在LEN单元,请用“先判定后处理”循环方法编出求数据块中各数累加和并存入SUM单元程序。
解:试验程序以下:
ORG 0100H
LEN EQU 20H
SUM EQU 21H
BLOCK EQU 22H
CLR A ;A清零
MOV R2, LEN ; 块长度送R2
MOV R1, #BLOCK ; 块起始地址送R1
LOOP: ADD A,@R1 ; 求累加和
INC R1 ;数据块指针加1
DJNZ R2, LOOP ; 若未完,则转LOOP
MOV SUM, A ; 累加完成,保留结果
SJMP $ ; 动态停机
END
要求单步运行程序,每实施一条指令,查看一次调试窗口、寄存器窗口、特殊寄存器窗口、CPU内部数据区窗口,观察(R2)、(R1)、(A)、(PC)、(SUM)值改变情况,了解指令功效、先判定后处理循环程序结构和领会程序设计方法。
思索:实际应用时将怎样选择上述两种方法?
3、延时程序:
若单片机晶振频率为6MHz,则下列程序将延时多长时间?
DELAY: MOV R7,#02H
D1: MOV R6,#0FFH
D2: DJNZ R6,D2
DJNZ R7,D1
RET
四、试验汇报
按学校要求格式撰写试验汇报。对试验结果进行分析,对试验中碰到问题加以说明。
试验3-1 查表程序试验
一、试验目标
1、加深对查表程序了解;
2、充足认识循环程序作用;
3、掌握循环程序设计方法。
二、试验设备
PC机一台 + Dais集成开发环境。
三、试验内容和步骤
试验步骤参考“试验一”进行。试验和应用项目相关内容时请和教材中附录A应用项目源程序对照,逐步熟悉其中指令。
1、 使用MOVC A,@A+DPTR指令查表
题目:有一变量存放在片内 RAM 20H 单元,其取值范围为:00H~05H。要求编制一段程序,依据变量值求其平方值,并存入片内 RAM 21H 单元。
算法:在程序存放器一片存放单元中建立起该变量平方表。用数据指针 DPTR 指向平方表首址,则变量和数据指针之和地址单元中内容就是变量平方值。
试验程序以下:
ORG 0030H
LJMP MAIN
ORG 1000H
MAIN: MOV 20H, #00H
LOOP: MOV DPTR,#TABLE
MOV A,20H
CJNE A,#06H,NEXT
SJMP $
NEXT: MOVC A,@A+DPTR
MOV 21H,A
INC 20H
SJMP LOOP
ORG H
TABLE:DB 00,01,04,09,16,25
END
要求单步运行程序,每实施一条指令,查看一次调试窗口、寄存器窗口、特殊寄存器窗口、CPU内部数据区窗口,观察(20H)、(A)、(21H)、(PC)值改变情况,了解MOVC A,@A+DPTR查表指令功效、查表程序结构和领会查表程序设计方法。
2、 使用MOVC A,@A+PC指令查表
题目:将16个两位十六进制数转换成 ASCII 码:设地址指针 R0指向待转换十六进制数,R2中存放字节数,R1指向要存放 ASCII 码起始地址。
算法:在程序存放器一片存放单元中建立起十六进制数ASCII 码表。使用查表指令MOVC A,@A+PC,经过查表方法将十六进制数转换为ASCII 码。
试验程序以下:
ORG 0030H
MOV R0, #20H ;赋初值
MOV R2, #10H
MOV R1, #30H
MOV A, #00H
SETDAT:MOV @R0, A ;设置待转换十六进制数
ADD A, #11H
INC R0
DJNZ R2, SETDAT
MOV R0, #20H ;重赋初值
MOV R2, #10H
HTASC: MOV A, @R0 ; 取十六进制 数低 4 位
ANL A, #0FH
ADD A, #16 ;偏移量修正
MOVC A, @A+PC ;查表
MOV @R1, A ;存 ASCII 码
INC R1
MOV A, @R0 ;取十六进制数高 4 位
SWAP A
ANL A, #0FH
ADD A, #07 ;偏移值修正
MOVC A, @A+PC
MOV @R1, A
INC R0 ;指向下一单元
INC R1
DJNZ R2, HTASC ;未完,继续
SJMP $ ;完成,动态停机
ASCTAB: DB 30H,31H,32H,33H,34H,35H,36H,37H
DB 38H,39H,41H,42H,43H,44H,45H,46H
END
要求单步运行程序,每实施一条指令,查看一次调试窗口、寄存器窗口、特殊寄存器窗口、CPU内部数据区窗口,观察(PC)、(R0)、(R1)、(R2)、(A)值改变情况,了解MOVC A,@A+PC查表指令功效、查表程序结构和领会查表程序设计方法。
思索:在使用MOVC A,@A+PC查表指令时,怎样确定偏移量修正值?
四、试验汇报
按学校要求格式撰写试验汇报。对试验结果进行分析,对试验中碰到问题加以说明。
试验3-2 中止试验
一、试验目标
1、掌握单片机和外设传送信息方法;
2、掌握查询方法编程方法;
3、掌握中止系统初始化编程。
二、试验设备
TDN86/51教学试验系统一台。
三、试验内容和步骤
1、查询方法
题目:生产控制过程中有一台机器正在工作,单片机经过查询其工作状态,并从I/O端口输出控制信号和状态信号。假如机器正常工作(KK1-=1)时,绿色发光二极管不停地闪烁,一旦出现故障(KK1-=0,按下KK1),则绿色发光二极管熄灭,停止工作,同时红色发光二极管不停地闪烁,故障排除后(KK1-=1),继续工作(绿色发光二极管闪烁)。用单片机实现这一控制过程。
参考程序以下:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN: MOV P1,#0FFH
L: JNB P3.3,L2
L1: CPL P1.3
SETB P1.4
ACALL DLY
JB P3.3,L1
L2: SETB P1.3
CPL P1.4
ACALL DLY
AJMP L
DLY: MOV R3,#0FFH
D0: MOV R2,#88H
D1: DJNZ R2,D1
DJNZ R3,D0
RET
END
试验操作步骤:
(1)连接电路:将单片机和KK1-相连,依据题目要求和所给程序将P1.3、P1.4分别和绿色、红色LED相连。
(2)输入源程序并检验无误,经汇编、连接后装入系统。
(3)用G=0000↙运行程序,按下和放开KK1-仔细观察红、绿灯改变。
(4)按RESET键终止运行,返回监控。
思索:试估算延时程序延时时间。
2、中止方法
要求:有故障(有奇数次下降沿)时控制红色发光二极管亮和绿色发光二极管灭;假如故障排除(有偶数次下降沿)时控制绿色发光二极管亮和红色发光二极管灭。
参考程序以下:
ORG 0000H
LJMP MAIN
ORG 0013H
CPL P1.3
CPL P1.4
RETI
ORG 0030H
MAIN: MOV P1,#0F0H
SETB IT1
SETB EA
SETB EX1
SJMP $
END
试验操作步骤:
(1)连接电路:将单片机和KK1-相连,依据题目要求和所给程序将P1.3、P1.4分别和绿、红色LED相连。
(2)输入源程序并检验无误,经汇编、连接后装入系统。
(3)用G=0000↙运行程序,数次按下KK1-仔细观察红、绿灯改变。
(4)按RESET键终止运行,返回监控。
思索:试编写能实现中止表示有故障,中止表示正常控制程序。
四、试验汇报
要求按学校要求格式撰写汇报,并要求:
1、读懂程序功效,并逐条加上注解。
2、写出试验过程和试验结果。并进行分析和总结。
试验4-1 并行口试验
一、试验目标
1、掌握单片机并行口结构、工作原理和使用方法;
2、掌握单片机并行接口芯片结构、工作原理和使用方法;
3、掌握单片机并行接口扩展方法。
二、试验设备
TDN86/51教学试验系统一台。
三、试验内容
试验应用项目中,单片机和6个共阴LED数码管接口电路,参考教材“第8章 MCS-51 单片机并行接口”相关内容。
四、试验步骤
1、在TDN86/51教学试验系统机箱上搭建图1所表示电路。
图1 应用项目中单片机和6位LED接口电路
2、试验以下程序,检验数码管上是否显示出时间为06:19:00。
(试验时将指令前编号去掉)
;②主程序:
9 ORG 0050H
10 MAIN: MOV A, #03H ; 8155初始化命令字
11 MOV DPTR, #8000H ; 8155命令口地址
12 MOVX @DPTR, A ; 向8155写入命令字
MOV 27H, #00H ;向计时单元写入06:19:00
MOV 28H, #19H
MOV 29H, #06H
22 LOOP: LCALL DISP ; 调用显示子程序
23 LJMP LOOP ; 循环
; ……
; ⑤显示子程序:
50 DISP: MOV R0, #4FH ; 准备向缓冲区放数
51 MOV A, 27H ; 取秒值
52 ACALL PUTT ; 放秒值
53 MOV A, 28H ; 取分值
54 ACALL PUTT ; 放分值
55 MOV A, 29H ; 取小时值
56 ACALL PUTT ; 放小时值
57 MOV R0, #4AH ; 指向显示缓冲区首地址
58 MOV R2, #0DFH ; 从左边第一位开始显示
59 DISP1: MOV DPTR, #8002H ; 字形口地址
60 MOV A, #00H ; 熄灭码
61 MOVX @DPTR, A ; 关显示
62 MOV A, @R0 ; 取显示缓冲区中数
63 MOV DPTR, #SEGTAB ; 指向字形码表首
64 MOVC A, @A+DPTR ; 查表, 找字形码
65 MOV DPTR, #8002H ; 字形口地址
66 MOVX @DPTR, A ; 送出字形码
67 MOV A, R2 ; 取字位码
68 MOV DPTR, #8001H ; 字位口地址
69 MOVX @DPTR, A ; 显示一位数据
70 MOV R3, #00H ; 计数延时初值
71 DISP2: DJNZ R3, DISP2 ; 延时一段时间(1ms)
72 INC R0 ; 修改显示缓冲区指针
73 RR A ; 为显示下一位做准备
74 MOV R2, A ; 存字位码
75 JB ACC.7, DISP1 ; 不到最终一位, 则继续
76 RET ; 显示完6位, 返回
77 PUTT: MOV R1, A ; 暂存
78 ACALL PUTT1 ; 低4位先放入缓冲区
79 MOV A, R1 ; 取出原数
80 SWAP A ; 高4位放入低4位中
81 PUTT1:ANL A, #0FH ; 屏蔽高4位
82 MOV @R0, A ; 放进显示缓冲区
83 DEC R0 ; 缓冲区地址指针减1
84 RET
……
;⑧字形码表:
135 SEGTAB:DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH
136 DB 07H, 7FH, 6FH
; ……
五、试验汇报
要求按学校要求格式撰写汇报,并要求写出试验过程和试验结果。并进行分析和总结。
试验4-2 串行口试验
一、试验目标
1、掌握单片机串行口结构、工作原理和使用方法;
2、掌握单片机串行接口编程方法;
3、掌握利用串行口实现双机通信编程方法。
二、试验设备
TDN86/51教学试验系统一台。
三、试验内容和步骤
1、单片机串行口自发自收通信:把单片机片内RAM30H~3FH中数据经过串行口发出,再从串行口接收,存放到片内40H~4FH单元中。试验程序以下:
ORG 0000H
LJMP MAIN
ORG 0023H
LJMP L4
ORG 1000H
MAIN: MOV TMOD, #20H
MOV TH1, #0F2H
MOV TL1, #0F2H
SETB TR1
MOV SCON, #50H
MOV PCON, #00H
SETB EA
SETB ES MOV R1, #30H
MOV SBUF, @R1
INC R1
MOV R0, #40H
L1: SJMP L1
L2: MOV A, SBUF
CLR RI
MOV @R0, A
INC R0
CJNE R0, #50H, L3
CLR ES
RETI
L3: MOV SBUF, @R1
INC R1
RETI
L4: JB RI, L2
CLR TI
RETI
END
试验操作步骤:
(1)按图2所表示接好线路。
图2 串行口试验接线图
(2)输入试验程序并检验无误,经汇编、链接后装入系统。
(3)用R0730命令将待传送数据放入片内RAM30H~3FH中。数据内容由读者任选。
(4)用R0740命令将入片内RAM40H~4FH单元清0。
(5)用G=0000命令连续运行程序,稍后按下试验机箱RESET键终止程序运行。
(6)用R0740命令检验片内RAM 40H~4FH单元中接收到是否正确。
2、把二台单片机串行口三根线连接好。假设一台为接收,另一台为发送。编写发送和接收通信程序。要求把甲机内部RAM 30H为首址单元内一组数据向乙机发送。乙机接收一组数据放在内部RAM 40H为首址单元内。甲、乙两机选择振荡频率为6MHz,波特率为2400。
试验参考程序以下:
发送程序:
ORG 0000H
LJMP MAIN
ORG 1000H
MAIN: MOV TMOD,#20H
MOV TH1,#0F4H
MOV TL1,#0F4H
MOV PCON,#80H
SETB TR1
MOV SCON,#0D0H
MOV R0,#30H
SEND: MOV A,@R0
MOV SBUF,A
JF: JBC TI,NEXT
SJMP JF
NEXT: INC R0
CJNE R0,#3FH,SEND
SJMP $
END
接收程序:
ORG 0000H
LJMP MAIN
ORG 1000H
MAIN: MOV TMOD,#20H
MOV TH1,#0F4H
MOV TL1,#0F4H
MOV PCON,#80H
SETB TR1
MOV SCON,#0D0H
MOV R0,#40H
JR: JBC RI,SS
SJMP JR
SS: MOV A,SBUF
MOV @R0,A
INC R0
CJNE R0,#4FH,JR
SJMP $
END
试验操作步骤:
(1)连接电路:将甲机TXD和乙机RXD相连、甲机RXD和乙机TXD相连、甲机GND和乙机GND相连便可进行双机通信。
(2)输入源程序并检验无误,经汇编、链接后装入系统。
(3)先运行接收方程序,再运行发送方程序,在运行发送程序前,先给程序中指定片内RAM单元赋值。
(4)检验接收方是否接收到正确数据,假如没有,检验硬件连接及程序,直到正确为止。
四、试验汇报
要求按学校要求格式撰写汇报,并要求:
1、读懂程序功效,并逐条加上注解。
2、写出试验过程和试验结果。并进行分析和总结。
试验5-1 D/A试验
一、试验目标
1、深入了解DAC0832结构和功效。
2、掌握DAC0832在51系列单片机中使用方法。
二、试验设备
TDN86/51教学试验系统一台。
三、试验电路
试验电路图3所表示,图中当WR和P2.7有效时选中DAC0832,所以可取7FFFH 为DAC0832片选地址。
图3 D /A 转换试验电路
四、试验内容
1、产生锯齿波,周期约为2ms。
试验程序以下:
ORG 0000H
0000 021000 LJMP MAIN
ORG 1000H
1000 907FFF MAIN: MOV DPTR,#7FFFH
1003 E4 CLR A
1004 F0 A1: MOVX @TPTR,A
1005 04 INC A
1006 80FC SJMP A1
END
2、产生三角波,周期约为4ms。
试验程序以下:
ORG 0000H
0000 021000 LJMP MAIN
ORG 1000H
1000 907FFF MAIN: MOV DPTR,#7FFFH
1003 E4 CLR A
1004 F0 L1: MOVX @DPTR,A
1005 04 INC A
1006 84FFFB CJNE A,#0FFH,L1
1009 14 DEC
展开阅读全文