硬件综合实验 (第一讲) 厦门大学软件学院 曾文华 2006年6月12日
第一部分 TDN86/88十六位微机教学实验系统介绍
TDN86/88系统概述 西安唐都科教仪器公司制造 TDN86/88十六位微机教学实验系统+PC微机(图1-1) 实验系统=8088系统单元+接口实验单元 实验系统硬件构成(表1-1、图1-2) 集成操作软件 PC示波器功能
TDN86/88系统概述(续) 两种实验方式:单元电路跨接方式、实验元件零连线方式 系统扩展功能:表1-2 系统实验项目 (1)、8259A中断控制器实验 (2)、8255并行接口实验 (3)、8253定时/计数器实验 (4)、8237DMA传送实验 (5)、8251串行通讯接口实验 (6)、串行通讯应用实验 (7)、A/D转换实验 (8)、D/A转换实验 (9)、存储器扩展实验 (10)、键盘与显示器实验 (11)、步进电机控制实验 (12)、计算机控制综合应用实验
27512 62256
TDN86/88系统的主要配置 表2-1
系统扩展选件 表2-2
扩展实验系统的安装 图2-3
系统总线 表3-1 XD0-XD7:数据总线 XA0-XA19:地址总线 OPCLK:时钟信号线(1.193MHz) ALE:地址锁存信号线 IOY7:I/O接口待扩展信号线(片选信号) IOY0:I/O接口待扩展信号线(片选信号) XIOW:I/O写信号线 XIOR:I/O读信号线 XMER:存储器读信号线 XMEW:存储器写信号线 HOLD:总线请求信号线(DMA用) HLDA:总线请求应答信号线(DMA用) RESET:复位信号线 MY4-MY7:存储器待扩展信号线(片选信号)
集成操作软件 运行/计算机硬件基础实验/目录下的MD86.EXE文件 图4-1:集成操作软件引导界面 图4-2:集成软件操作界面
MD86.EXE的常用命令 F5(Load):从PC机(当前目录)中装入可执行文件,如A9-1.EXE CS:IP=0000H:2000H U2000 U G=2000
DEBUG调试命令 A:进入小汇编 从CS:IP=0000H:2000H开始(表4-4) B:断点设置 可以设置10个断点(表4-5) M:数据块搬移 R:寄存器或片内RAM区显示与修改 T:单步运行指定的程序 U:反汇编
第二部分 TDN86/88十六位微机实验内容
实验一 系统认识实验
实验目的 掌握TDN86/88教学实验系统的基本操作
实验设备 TDN86/88十六位微机教学实验系统 PC微机
实验内容 1、系统认识实验 从3500H内存单元开始建立0~15共16个数据 程序:A1-1.ASM 编辑、汇编、连接 -> A1-1.EXE 将A1-1.EXE装入TDN86/88实验系统的内存 F5命令(CS:IP=0000H:2000H) 运行程序: (1)、单步:T=0000:2000 (2)、连续:G=0000:2000 (3)、断点:设置断点(B命令)、断点方式的连续运行(GB) 检查结果:D=0000:3500
STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE START: MOV DI,3500H ; 从3500H开始 MOV CX,0010H ; 16个数据 MOV AX,0000H SAHF ; 00H -> AH A1: MOV [DI],AL INC DI INC AX DAA LOOP A1 A2: JMP A2 CODE ENDS END START
实验内容(续) 2、系统操作练习 将内存3500H单元开始的0~15共16个数据传递到3600H单元开始的数据区中 程序:A1-2.ASM 编辑、汇编、连接 -> A1-2.EXE 将A1-2.EXE装入TDN86/88实验系统的内存 F5(CS:IP=0000H:2000H) 送数据( 0~15 )到3500H开始的单元(E命令) 运行程序: 单步:T=0000:2000 连续:G=0000:2000 断点:设置断点(B命令)、断点方式的连续运行(GB) 检查结果:D=0000:3600
STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE START: MOV SI,3500H MOV DI,3600H MOV CX,0008H ;每次传送2个字节数据 A1: MOV AX,[SI] MOV [DI],AX INC SI INC DI DEC CX JNZ A1 A2: JMP A2 CODE ENDS END START
实验二~实验八(略)
实验九 中断特性及8259应用编程实验
实验目的 掌握TDN86/88教学实验系统的中断特性 掌握8259中断控制器的工作原理 掌握8259中断控制器的应用编程 掌握8259级联方式的使用方法 学习在接口实验单元上构造连接实验电路的方法
实验设备 TDN86/88十六位微机教学实验系统 PC微机
实验内容 1、实验系统中的8259A芯片 图9-4 实验系统初始化后,0号(IR0)、4号(IR4)中断源分别提供给实时时钟、与PC联机的串口通讯(中断矢量见下表)
主片,在实验箱左边
实时 时钟
实验内容(续) 2、接口实验单元中的级联实验用8259A芯片 图9-5 3、接口实验单元中的R-S触发器 图9-6
从片,在实验箱中间
微动开关 负脉冲输出 正脉冲输出
实验内容(续) 4、8259A实验之一:单片方式、单个中断源 图9-7 程序:A9-1.ASM(功能:每次响应外部中断----按下单脉冲按钮----,显示“7”,10次后程序停止) 编辑、汇编、连接 -> A9-1.EXE 将A9-1.EXE装入TDN86/88实验系统的内存 F5(CS:IP=0000H:2000H) INT10H中断调用 (1)、AH=00、AL=01:清屏 (2)、AH=01、AL=数据的ASCII:写一个数据到显示器上 相当于2号功能 (3)、AH=06、DS:BX=字符串首地址(字符串尾用00H填充):显示一字符串 相当于9号功能
微动开关2的正脉冲输出
STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE START: PUSH DS MOV AX,0000H MOV DS,AX MOV AX,OFFSET IRQ7 ADD AX,2000H MOV SI,003CH MOV [SI],AX MOV SI,003EH CLI POP DS 送中断向量(0000H:IRQ7+2000H)到中断向量表中
IN AL,21H AND AL,7FH ; 01111111=7FH ,IR7 OUT 21H,AL ; 中断允许 MOV CX,000AH ;10次结束 A1: CMP CX,0000H JNZ A2 IN AL,21H OR AL,80H ; 10000000=80H ,IR7 OUT 21H,AL ; 中断屏蔽 STI HLT A2: STI JMP A1
IRQ7: MOV AX,0137H ;中断服务子程序 INT 10H ;显示’7 ’ MOV AX,0120H INT 10H ;显示空格 DEC CX MOV AL,20H OUT 20H,AL CLI IRET CODE ENDS END START
实验内容(续) 5、8259A实验之二:单片方式、两个中断源 图9-8 程序:A9-2.ASM(功能:主程序显示“MAIN”,按下单脉冲按钮KK1+和KK2+分别显示“6”和“7”,并且KK1+(IR6)可以终止KK2+(IR7),即高级别的中断请求可以终止低级别的中断请求) 13H=00010011 -> ICW1(书上P214) 08H -> ICW2 (IR0的中断号为8号) 09H -> ICW4 (书上P217) 3DH=00111101 -> OCW1 (奇地址21H) 3FH 编辑、汇编、连接 -> A9-1.EXE 将A9-1.EXE装入TDN86/88实验系统的内存 F5(CS:IP=0000H:2000H)
STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS DATA SEGMENT TABLE DB 4DH,41H,49H,4EH,20H,00H ;‘MAIN ’ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX PUSH DS MOV AX,0000H MOV AX,OFFSET IRQ6 ADD AX,2000H MOV SI,0038H MOV [SI],AX MOV SI,003AH 送中断向量(0000H:IRQ6+2000H)到中断向量表中
MOV AX,OFFSET IRQ7 ADD AX,2000H MOV SI,003CH MOV [SI],AX MOV AX,0000H MOV SI,003EH POP DS 送中断向量(0000H:IRQ7+2000H)到中断向量表中
MOV AL,13H ; 13H=00010011 -> ICW1(书上P214) OUT 20H,AL MOV AL,08H ; ICW2 (IR0的中断号为8号) OUT 21H,AL MOV AL,09H ;ICW4 (书上P217) MOV AL,3DH ;3DH=00111101 OCW1 (奇地址21H) STI A1: MOV CX,0007H ;7次结束 MOV AX,010DH INT 10H A2: MOV AH,06H MOV BX,OFFSET TABLE CALL DALLY LOOP A2 JMP A1 显示换行 显示’MAIN ‘
IRQ6: STI ;中断服务子程序 CALL DALLY MOV AX,0136H INT 10H ;显示’6 ’ MOV AL,20H OUT 20H,AL IRET IRQ7: STI ;中断服务子程序 MOV AX,0137H INT 10H ;显示’7 ’
DALLY: PUSH CX ;延时程序 PUSH AX MOV CX,0040H A3: MOV AX,056CH A4: DEC AX JNE A4 LOOP A3 POP AX POP CX RET CODE ENDS END START
改进的程序A9-2M.ASM STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS DATA SEGMENT TABLE DB 4DH,41H,49H,4EH,20H,00H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX PUSH DS MOV AX,0000H MOV AX,OFFSET IRQ6 ADD AX,2000H MOV SI,0038H MOV [SI],AX MOV SI,003AH MOV AX,OFFSET IRQ7 MOV SI,003CH MOV SI,003EH POP DS
MOV AL,13H OUT 20H,AL MOV AL,08H OUT 21H,AL MOV AL,09H MOV AL,3DH STI A1: MOV CX,0007H MOV AX,010DH INT 10H A2: MOV AH,06H MOV BX,OFFSET TABLE CALL DALLY LOOP A2 JMP A1
IRQ6: STI MOV AX,0136H INT 10H MOV AX,0142H MOV AX,0120H CALL DALLY MOV AX,0145H MOV AL,20H OUT 20H,AL IRET 显示’6B ‘ 显示’6E ‘
IRQ7: STI MOV AX,0137H INT 10H MOV AX,0142H MOV AX,0120H CALL DALLY MOV AX,0145H MOV AL,20H OUT 20H,AL IRET 显示’7B ‘ 显示’7E ‘
DALLY: PUSH CX PUSH AX MOV CX,0040H A3: MOV AX,056CH A4: DEC AX JNE A4 LOOP A3 POP AX POP CX RET CODE ENDS END START
实验内容(续) 6、8259A实验之三:级联方式 图9-9 程序:A9-3.ASM(功能:每次响应外部中断----按下单脉冲按钮----,显示“7”,10次后程序停止) 11H=00010001 -> ICW1(主片级联方式) 08H -> ICW2 (主片IR0的中断号为8号) 80H=10000000 -> ICW3 (主片) 1DH=00011101 -> ICW4 (主片) 7DH=01111101 -> OCW1(奇地址21H) 7FH 11H=00010001 -> ICW1(从片级联方式) 30H -> ICW2 (从片IR0的中断号为30H号) 07H=00000111 -> ICW3 (从片的INT接到主片的IR7) 09H=00001001 -> ICW4 (从片) 7FH=01111111 -> OCW1 (奇地址01H) 00DCH、 00DDH、 00DEH、 00DFH:从片IR7的中断向量指针(中断矢量地址) 00DCH=37H*4 编辑、汇编、连接 -> A9-1.EXE 将A9-1.EXE装入TDN86/88实验系统的内存 F5(CS:IP=0000H:2000H)
主片 从片
STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE START: CLI MOV AL,11H ;主片ICW1 OUT 20H,AL MOV AL,08H ;主片ICW2 OUT 21H,AL MOV AL,80H ;主片ICW3=80H=10000000 MOV AL,1DH ;主片ICW4 MOV AL,7DH ;主片OCW1=7DH=01111101
MOV AL,11H ;从片ICW1 OUT 00H,AL MOV AL,30H ;从片ICW2 OUT 01H,AL MOV AL,07H ;从片ICW3=07H=00000111 MOV AL,09H ;从片ICW4 MOV AL,7FH ;从片OCW1=7FH=01111111 PUSH DS
MOV AX,0000H MOV DS,AX MOV AX,OFFSET IRQ7 ADD AX,2000H MOV SI,00DCH MOV [SI],AX MOV SI,00DEH POP DS A1: STI HLT JMP A1 送中断向量(0000H:IRQ7+2000H)到中断向量表中
IRQ7: MOV AX,0137H ;中断服务子程序 INT 10H ;显示’7 ’ MOV AX,0120H INT 10H ;显示空格 MOV AL,20H OUT 00H,AL ;从片的偶地址 OUT 00H,AL IRET CODE ENDS END START
将主片OCW1改为7FH=01111111 A9-3M.ASM MOV AL,11H OUT 20H,AL MOV AL,08H MOV AL,1DH MOV AL,7FH 主片初始化 主片OCW1=7FH=01111111
实验十 8255并行接口应用实验
实验目的 掌握8255的各种工作方式及其应用 学习在TDN86/88系统接口实验单元上构造实验电路
实验设备 TDN86/88十六位微机教学实验系统 PC微机
实验内容 1、实验系统中的8255芯片 图10-3 A口:60H B口:61H C口:62H 控制口:63H
实验内容(续) 2、接口实验单元中的开关和发光二极管电路 图10-4
实验内容(续) 3、8255实验之一:A口方式0输出(发光二极管);B口方式0输入(开关) 图10-5 程序:A10-1.ASM 82H=10000010 -> 控制口 从B口读开关状态 IN AL,61H 向A口送读入的开关状态 OUT 60H,AL
STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE START: MOV AL,82H OUT 63H,AL A1: IN AL,61H OUT 60H,AL JMP A1 CODE ENDS END START
实验内容(续) 4、8255实验之二:A口方式0输出(发光二极管);B口方式1输入(开关),PC2=STBB,PC0=IRQ7,PC2=INTEB 图10-6 程序:A10-2.ASM 86H=10000110 -> 控制口 05H=00000101 -> 控制口 PC2=1 中断服务程序: 1、从B口读开关状态 IN AL,61H 2、向A口送读入的开关状态 OUT 60H,AL
STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE START: CLI MOV AL,86H OUT 63H,AL MOV AL,05H PC2=1 PUSH DS MOV AX,0000H MOV DS,AX MOV AX,OFFSET IRQ7 ADD AX,2000H MOV SI,003CH MOV [SI],AX MOV SI,003EH POP DS 送中断向量(0000H:IRQ7+2000H)到中断向量表中
IN AL,21H AND AL,7FH ;7FH=01111111,IRQ7 OUT 21H,AL A1: STI HLT JMP A1 IRQ7: IN AL,61H ;中断服务子程序 OUT 60H,AL ;从PB输入,然后送到PA MOV AL,20H OUT 20H,AL IRET CODE ENDS END START
实验十一 8253定时/计数器应用实验
实验目的 熟悉8253在TDN86/88系统中的典型接法 掌握8253的工作方式及应用编程
实验设备 TDN86/88十六位微机教学实验系统 PC微机
实验内容 1、实验系统中的8253芯片 图11-3 T0( 40H ):到8259A的IRQ0,实时时钟中断
实验内容(续) 2、8253实验之一:T2方式0,用于事件计数,计数值=5,发出中断请求,显示“M” 图11-4 程序:A11-1.ASM
STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE START: IN AL,21H AND AL,7FH ;OCW1=01111111 OUT 21H,AL MOV AL,90H 10 01 000 0 OUT 43H,AL A1: MOV AL,05H OUT 42H,AL HLT STI JMP A1
MOV AX,014DH ;中断服务子程序 INT 10H ;显示’M’ MOV AX,0120H INT 10H ;显示空格 MOV AL,20H OUT 20H,AL IRET CODE ENDS END START
上面的程序没有送中断向量这段程序,因此需要: 在0000:003CH单元填入IR7中断向量,即0000:003CH=12 20 00 00(即‘0000:2012’,中断服务子程序的第1条指令位置为0000:2012)
增加送中断向量的程序 A11-1M.ASM 送中断向量(0000H:IRQ7+2000H)到中断向量表中 STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE START: PUSH DS MOV AX,0000H MOV DS,AX MOV AX,OFFSET IRQ7 ADD AX,2000H MOV SI,003CH MOV [SI],AX MOV SI,003EH POP DS 送中断向量(0000H:IRQ7+2000H)到中断向量表中
实验内容(续) 3、8253实验之二:T0方式2,产生IRQ0中断,显示“0”-“9” 图11-5 程序:A11-2.ASM
已经接好,不需要另外接线
STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE START: PUSH DS MOV AX,0000H MOV DS,AX MOV AX,OFFSET IRQ0 ADD AX,2000H MOV SI,0020H MOV [SI],AX MOV SI,0022H POP DS 送中断向量(0000H:IRQ0+2000H)到中断向量表中
MOV AL,0FCH ;OCW1=11111100 OUT 21H,AL MOV AL,15H ;00 01 010 1;通道0、方式2、 ;低8位、BCD OUT 43H,AL MOV AL,0FFH ;改变AL的值将改变显示的间隔时间 OUT 40H,AL MOV DL,30H ;’0’的ASCII A1: STI JMP A1
IRQ0: MOV AH,01H MOV AL,DL CMP AL,3AH JNZ A2 MOV AL,0DH INT 10H MOV AL,30H A2: INT 10H INC AX MOV DL,AL MOV AX,0120H CALL DALLY MOV AL,20H OUT 20H,AL IRET ;中断服务子程序
DALLY: PUSH AX MOV CX,0100H A3: MOV AX,0560H A4: DEC AX JNZ A4 LOOP A3 POP AX RET CODE ENDS END START ;延时子程序
改变显示间隔时间的程序 A11-2M.ASM MOV AL,15H OUT 43H,AL MOV AL,0FH ;从0FFH改为0FH
实验内容(续) 4、8253实验之三:T2方式3,产生方波 图11-6 程序:A11-3.ASM
STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS DATA SEGMENT TABLE DB 33H, 33H, 3DH, 33H, 26H, 26H, 26H, 26H, 2DH, 2DH, 26H, 2DH, 33H DB 33H, 33H, 33H, 33H, 33H, 4DH, 45H, 3DH, 3DH, 3DH, 45H, 4DH, 45H DB 45H, 45H, 45H, 45H, 45H, 45H, 45H, 33H, 33H, 3DH, 33H, 26H, 26H DB 26H, 28H, 2DH, 2DH, 26H, 26H, 33H, 33H, 33H, 33H, 45H, 3DH, 39H DB 39H, 39H, 52H, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 2DH, 2DH DB 26H, 26H, 26H, 26H, 26H, 26H, 28H, 28H, 2DH, 28H, 26H, 26H, 26H DB 26H, 2DH, 28H, 26H, 2DH, 2DH, 33H, 3DH, 4DH, 45H, 45H, 45H, 45H DB 45H, 45H, 45H, 45H, 33H, 33H, 3DH, 33H, 26H, 26H, 26H, 28H, 2DH DB 2DH, 26H, 2DH, 33H, 33H, 33H, 33H, 33H, 33H, 45H, 3DH, 39H, 39H DB 39H, 52H, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 00H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA MOV DS,AX MOV BX,OFFSET TABLE MOV AL,[BX] MOV AH,00H A1: MOV DL,25H MUL DL PUSH AX MOV AL,0B7H 10 11 011 1 OUT 43H,AL POP AX OUT 42H,AL MOV AL,AH INC BX TEST AL,0FFH JZ A3 MOV CX,77FFH A2: PUSH AX LOOP A2 JMP A1 A3: MOV BX,OFFSET TABLE CODE ENDS END START
实验注意事项 1、请遵守实验室管理制度 2、请爱护实验室的设备 3、请接好线后,再打开实验箱电源 4、运行MD86.EXE后,请选择串行口2 5、实验完成后,请关闭实验箱电源,并将接线拔下,收好,放入袋子里 6、在插上实验接线、拔下实验接线时,请注意不要将实验板上的排针弄弯、搞断 7、实验时如有异常情况,请及时与实验指导教师联系
实验注意事项(续) 8、实验示例程序名称如下: A1-1.EXE:实验一(一) A1-2.EXE:实验一(二) A9-2M.EXE:实验九(二)修改后的----显示7B 7E 6B 6E A9-3.EXE:实验九(三) A10-1.EXE:实验十(一) A10-2.EXE:实验十(二) A11-1.EXE:实验十一(一) A11-1M.EXE:实验十一(二)修改后的---- 不需要通过E命令输入中断服务程序首地址 A11-2.EXE:实验十一(二) A11-3.EXE:实验十一(三)
实验注意事项(续) A12-1.EXE:实验十二(一) A12-2.EXE:实验十二(二) A13-1.EXE:实验十三
实验注意事项(续) 9、目录8688中的其他程序: MD86.EXE:TDN86/88实验系统集成操作软件 MASM.EXE:宏汇编工具 LINK.EXE:连接工具
实验指导书格式要求
实验指导书格式要求(续)
谢 谢!