1、 《单片机原理和接口》 试验指导书 梁炳东 编 广东海洋大学 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使用说明
2、 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 + 11
3、H + 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”选择开关(
4、在试验机箱下方中偏右处)拨至“51”位置(使机箱用于进行51系列单片机试验)。 3、 开启PC机电源,双击PC机桌面上MD51快捷方法图标或进入MD51. EXE应用程序所在目录,运行该程序(双击MD51. EXE),进入TDN86/51系统集成软件引导界面(具体说明参见附录A)。依据系统所使用通信端口,选择键入1或2(通常是使用COM1,键入“1”),并回车,便可进入TDN86/51系统集成软件操作界面。 假如屏幕光标不响应回车命令,可按试验系统复位键(在试验机箱下方中偏右处)进行系统复位即可。 若屏幕出现提醒符为“—”,则表示已进入“51”状态。 若为“>”提醒符,则表明系统处于8
5、6状态,此时,可经过键盘键入“5”↙(回车),即可转至51状态。 进入TDN86/51系统集成软件操作界面后,按下Fl功效键,进入全屏幕编辑界面,按ALT + F进入文件菜单,选择建立新文件(NEW),即可开始输入源程序。 试验程序以下(输入程序时,只输入汇编源程序,不要输入左边反汇编代码): 反汇编程序代码 汇编源程序 ORG 0000H 0000 021000 LJMP MAIN ORG l000H 1000 7A06 MAIN: MOV R2, #06H 1002 7B00
6、 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 L
7、2: SJMP L2 END 4、输入源程序后,按F2功效键,保留源程序(文件名由用户自己命名,注意:文件名后一定要加上扩展名,扩展名要求为 “.ASM”),使用ALT + X退出全屏幕编辑界面,返回集成软件操作界面。 5、在集成软件操作界面中,按F2功效键,输入文件名 ↙(“↙”——表示按回车键,注意:只需输入文件名,不需带扩展名,系统默认为 *.ASM),汇编程序自动对源程序进行汇编生成浮动目标文件(*.r03)及错误信息文件(*.M)。汇编无误后,自动生成对应*.LST文件。 6、汇编完成后,按F3功效键,输入文件名 ↙(不需带扩展名),汇编程序自动对汇编生成*.r03文件
8、进行链接,链接信息显示于屏幕上,生成对应 *.HEX可实施文件及链接信息汇报文件(*.L)。 7、按F5功效键,输入文件名.HEX ↙(此时,一定要带扩展名“.HEX”),PC机开始将程序从磁盘装入到TDN86/51试验系统内存,提醒装载完成(Load OK)后,使用U命令(本试验输入U0000 ↙,再输入U1000 ↙)进行反汇编,检验程序是否正确装入。当源程序输入有错误或需要调整时,可使用A命令进行修改。 8、用R07XX ↙格式命令(本试验为:“R0750 ↙”),将题目(1)中六个数放入片内RAM区50H ~ 55H单元中,过程以下: 屏幕显示信息 用户键入 — R0
9、750 ↙ 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键) 屏幕显示立即实施指令
10、 1002 7B00 MOV R3,#00H T↙( 或:按F4键) 屏幕显示立即实施指令 …… …… (不停使用T命令单步运行至进入动态停机为止) 10、用R07××格式命令,检验单片机内03H一04H单元——用R0703↙,检验03H单元;用R0704↙或直接按空格键,检验04H单元。此即程序运行结果。请统计并检验结果是否正确,检验时,请注意十进制数据和十六进制数据差异。 11、将试验系统运行状态开关拨至EXEC位,用B命令,在1011处设一个断点,过程以下: 屏幕显示信息 用户键入 — B ↙ 0: 1011↙ 1: ↙ —
11、 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 命令,无断点连续运行
12、程序,过程以下: 显示信息 用户键入 — G =0000 ↙ — 按试验系统复位键(RESET) 18、按试验系统RESET复位键,中止程序运行。反复步骤10、统计并检验运行结果。 五、试验汇报 按学校要求格式撰写。 试验2-1 分支程序试验 一、试验目标 1、加深对分支程序了解; 2、充足认识分支程序作用; 3、掌握分支程序设计方法。 二、试验设备 PC机一台 + Dais集成开发环境。 三、试验内容及步骤 试验步骤和试验统计内容参考“试验一”进行。试验时请和教材中附录A应用项目源程序对照,逐步熟悉其中指令。 1、 双分
13、支程序试验 试验应用项目中包含双分支程序结构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 ; 选择工作寄存
14、器组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 ;
15、循环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
16、 ; 时间基制单元指针加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)值改变情况,了解
17、指令功效、双分支程序结构,并逐步了解指令程序功效,为弄懂应用项目打下基础。 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 ; 取转
18、移序号 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
19、 SJMP LOOP 要求单步运行程序,每实施一条指令,查看一次调试窗口、寄存器窗口、特殊寄存器窗口、CPU内部数据区窗口,观察(R2)、(R3)、(DPTR)、(A)、(PC)值改变情况,了解指令功效、多分支程序结构和领会程序设计方法。 思索:若将转移指令表中AJMP改为LJMP,要求实现相同功效,则怎样修改程序? 四、试验汇报 按学校要求格式撰写试验汇报。对试验结果进行分析,对试验中碰到问题加以说明。 试验2-2 循环程序试验 一、试验目标 1、加深对循环程序了解; 2、充足认识循环程序作用; 3、掌握循环程序设计方法。 二、试
20、验设备 PC机一台 + Dais集成开发环境。 三、试验内容和步骤 试验步骤参考“试验一”进行。试验和应用项目相关内容时请和教材中附录A应用项目源程序对照,逐步熟悉其中指令。 1、 “先实施后判定”循环程序试验 “先实施后判定”循环程序是一进入循环程序,先实施循环体,然后依据循环结束条件判定是否结束循环。若不满足结束条件,则继续实施循环体;若满足结束条件,则进行结束处理,退出循环。其特点是循环体最少被实施一次。 题目:已知单片机内部RAMBLOCK单元开始有一个无符号数据块,块长在LEN单元,请用“先实施后判定”循环方法编出求数据块中各数累加和并存入SUM单元程序。 解:试验
21、程序以下: 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 ; 累加完成,保留结
22、果 SJMP $ ; 动态停机 END 要求单步运行程序,每实施一条指令,查看一次调试窗口、寄存器窗口、特殊寄存器窗口、CPU内部数据区窗口,观察(R2)、(R1)、(A)、(PC)、(SUM)值改变情况,了解指令功效、先实施后判定循环程序结构和领会程序设计方法。 2、 “先判定后处理”循环程序试验 “先判定后处理”循环程序将循环程序控制部分放在循环入口处,先依据循环结束条件判定是否结束循环。若满足结束条件,则直接进行结束处理,退出循环;若不满足结束条件,则反复实施循环体,其特点是:若一开始就满足循环结束条件,则一次也不实施循环体,即循环次数有可能为0。
23、题目:已知单片机内部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 ; 若未完,
24、则转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
25、D2 DJNZ R7,D1 RET 四、试验汇报 按学校要求格式撰写试验汇报。对试验结果进行分析,对试验中碰到问题加以说明。 试验3-1 查表程序试验 一、试验目标 1、加深对查表程序了解; 2、充足认识循环程序作用; 3、掌握循环程序设计方法。 二、试验设备 PC机一台 + Dais集成开发环境。 三、试验内容和步骤 试验步骤参考“试验一”进行。试验和应用项目相关内容时请和教材中附录A应用项目源程序对照,逐步熟悉其中指令。 1、 使用MOVC A,@A+DPTR指令查表 题目:有一变量存放在片内 RAM 20H 单
26、元,其取值范围为: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
27、 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 码起始地址。 算法
28、在程序存放器一片存放单元中建立起十六进制数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 HTA
29、SC: 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
30、 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
31、R0)、(R1)、(R2)、(A)值改变情况,了解MOVC A,@A+PC查表指令功效、查表程序结构和领会查表程序设计方法。 思索:在使用MOVC A,@A+PC查表指令时,怎样确定偏移量修正值? 四、试验汇报 按学校要求格式撰写试验汇报。对试验结果进行分析,对试验中碰到问题加以说明。 试验3-2 中止试验 一、试验目标 1、掌握单片机和外设传送信息方法; 2、掌握查询方法编程方法; 3、掌握中止系统初始化编程。 二、试验设备 TDN86/51教学试验系统一台。 三、试验内容和步骤 1、查询方法 题目:生产控制过程中有一台机器正在工
32、作,单片机经过查询其工作状态,并从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
33、 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-仔细观察红、绿灯改变。
34、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
35、 END 试验操作步骤: (1)连接电路:将单片机和KK1-相连,依据题目要求和所给程序将P1.3、P1.4分别和绿、红色LED相连。 (2)输入源程序并检验无误,经汇编、连接后装入系统。 (3)用G=0000↙运行程序,数次按下KK1-仔细观察红、绿灯改变。 (4)按RESET键终止运行,返回监控。 思索:试编写能实现中止表示有故障,中止表示正常控制程序。 四、试验汇报 要求按学校要求格式撰写汇报,并要求: 1、读懂程序功效,并逐条加上注解。 2、写出试验过程和试验结果。并进行分析和总结。 试验4-1 并行口试验 一、试验目标
36、1、掌握单片机并行口结构、工作原理和使用方法; 2、掌握单片机并行接口芯片结构、工作原理和使用方法; 3、掌握单片机并行接口扩展方法。 二、试验设备 TDN86/51教学试验系统一台。 三、试验内容 试验应用项目中,单片机和6个共阴LED数码管接口电路,参考教材“第8章 MCS-51 单片机并行接口”相关内容。 四、试验步骤 1、在TDN86/51教学试验系统机箱上搭建图1所表示电路。 图1 应用项目中单片机和6位LED接口电路 2、试验以下程序,检验数码管上是否显示
37、出时间为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
38、 ; 循环 ; …… ; ⑤显示子程序: 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
39、 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 DP
40、TR, #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 ; 暂
41、存 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 ;
42、…… 五、试验汇报 要求按学校要求格式撰写汇报,并要求写出试验过程和试验结果。并进行分析和总结。 试验4-2 串行口试验 一、试验目标 1、掌握单片机串行口结构、工作原理和使用方法; 2、掌握单片机串行接口编程方法; 3、掌握利用串行口实现双机通信编程方法。 二、试验设备 TDN86/51教学试验系统一台。 三、试验内容和步骤 1、单片机串行口自发自收通信:把单片机片内RAM30H~3FH中数据经过串行口发出,再从串行口接收,存放到片内40H~4FH单元中。试验程序以下: ORG 0000H LJMP MAIN ORG
43、 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
44、 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)用R074
45、0命令将入片内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
46、 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: MO
47、V 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相连便可进行双机通信。 (
48、2)输入源程序并检验无误,经汇编、链接后装入系统。 (3)先运行接收方程序,再运行发送方程序,在运行发送程序前,先给程序中指定片内RAM单元赋值。 (4)检验接收方是否接收到正确数据,假如没有,检验硬件连接及程序,直到正确为止。 四、试验汇报 要求按学校要求格式撰写汇报,并要求: 1、读懂程序功效,并逐条加上注解。 2、写出试验过程和试验结果。并进行分析和总结。 试验5-1 D/A试验 一、试验目标 1、深入了解DAC0832结构和功效。 2、掌握DAC0832在51系列单片机中使用方法。 二、试验设备 TDN86/51教学试验系统一台。
49、三、试验电路 试验电路图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
50、 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






