微型计算机原理与接口技术实验-学生用.doc
微型计算机原理与接口技术实 验 指 导 书 信息工程学院电子信息 1Dais-8086H+实验平台系统介绍1.1 系统组成Dais系列微机仿真实验系统由管理CPU、目标CPU 和通用电路、接口实验电路与稳压电源组成,通过RS232C串行接口与PC微机相连,系统硬件主要内容如下:CPU管理CPU 、目标CPU 8032/78E438/STC系列单片机系统存储器监控管理程序在管理CPU的FLASH中、RAM 61256二片64K、BPRAM 6125632K。接口芯片与单元实验8251、8253、8255、8259、ADC0809、DAC0832、164、74LS273、74LS244、电子发声单元,电机控制单元, 开关与发光二极管、单脉冲触发器、继电器控制等外设接口打印接口,RS232C串口、51仿真接口显示器6位LED、二路双踪示波器键盘32键自定义键盘EPROM编程器对EPROM 2764/27128快速读出系统电源1.2 系统功能与特点自带键盘、显示器,能独立运行,也可以PC机为操作平台。两种工作方式任意选择。系统采用紧耦合多CPU技术,用STC89C58作为系统管理CPU,8032 / 78E438 / STC系列单片机作为目标机仿真与实验CPU,其软硬件资源100%出借。目标CPU采用主频为11.0592MHz,支持扩展仿真即RAM仿真,亦支持ROM仿真即FLASH下载式仿真。在ROM仿真模式下,可实现对P0、P2的I/O口功能。配有二片61C256静态存储器构成系统的64K程序空间,地址X围为0000H0FFFFH,还配一片61C25632K作为用户设置的断点区BPRAM。通过RS232通信接口,在Windows集成软件的支持下,利用上位机丰富的软件硬件资源,实现用户程序的编辑、编译、调试运行,提高实验效率。具有最丰富的调试手段,系统全面支持硬件断点,可无限制设置断点,同时具有单步、宏单步、连续运行与无限制暂停等功能,100%保护用户现场,返回监控。向用户提供ISA总线接口与PARK板接口,为研发与创新实验的实施创造了必备的拓展环境。1.3 系统资源分配实验系统寻址X围定义如下:空间地址器件选用用途与说明0000H7FFFH6116监控程序空间0000H0FFFFHPROM目标机程序空间0000H0FFFFH实验接口电路数据与IO空间系统已定义的I/O地址如下本学期实验所用的端口地址:接口芯片口地址用途74LS2730FFDDH字位口74LS2730FFDCH字形口74LS2450FFDEH键入口8255A口0FFD8HEP总线8255B口0FFD9HEP地址8255C口0FFDAHEP控制8255口0FFDBH控制字2 安装与使用电源连接:通过随机所配的三芯电源线接入AC220V电网。打开电源开关系统应显示闪动的“P.,假如否应按下RESET键,如仍不显示闪动的“P.,应立即切断电源,检查后重新进展或与本公司驻当地销售服务中心联系。系统功能自检在闪动的“P.状态下按键:MOVEEXEC,系统以连续方式运行“8字循环右移程序,假如6位LED出现跑“8显示,说明系统已进入正常工作状态,可按RESET键返“P.待令。2.2 快捷使用2.2.1 Windows环境在桌面上点击图标然后选择以实验系统所插串口一致的选项,点击“确定便进入Dais集成调试环境。点击工具条中“图标,在打开对话框中双击LED51.asm文件,进入实验源程序的编辑窗口。点击工具条中“图标,进展源文件的编译、装载,在出现编译成功的对话框后点击“OK框自动进入源文件调试状态。在工具条中点击所需的运行方式:“单步、“宏单步、“运行。假如需要以断点方式运行,可直接点击源语句行前的“图标来完成所需断点的设置与去除,然后再点击“图标进入断点运行状态。系统一旦进入运行状态后假如需终止该程序的运行请点击“图标退出当前操作返回待令状态。软件实验本节共编了9个软件实验,通过这些程序的调试使学生熟悉8088/86的指令系统,了解程序设计过程,掌握汇编语言设计方法以与如何使用实验系统提供的调试手段来排除程序错误。实验一程序设计实验一1、清零程序一、实验目的 掌握8088汇编语言程序设计和调试方法,熟悉键盘操作。二、实验内容 把RAM区内4000H40FFH单元的内容清零。三、程序流程四、实验步骤 用连续或单步方式运行程序,检查400040FFH中执行程序前后的内容变化。五、实验思考 假使把4000H40FFH中的内容改成FFh,如何修改程序。六、实验程序CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3000HS1: MOV BX,4000H MOV AX,0000HMOV CX,0080HL1: MOV BX,AXINC BX INC BX LOOP L1 JMP $CODE ENDS END S12、拆字程序一、实验目的掌握汇编语言设计和调试方法。二、实验内容把4000H的内容拆开,高位送4001H低位,低位送4002H低位,4001H、4002H高位清零,一般本程序用于把数据送显示缓冲区时用。三、程序流程四、实验步骤用连续或单步方式运行程序,检查40004002H中内容变化情况。五、实验程序CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3020HS2: MOV BX,4000H MOV AL,BXMOV AH,AL MOV CL,4SHR AH,CL INC BX MOV BX,AH AND AL,0FH INC BX MOV BX,AL JMP $CODE ENDS END S23、拼字程序一、实验目的进一步掌握汇编语言设计和调试方法。二、实验内容把4000H、4001H的低位分别送入4002H上下四位,一般本程序用于把显示缓冲区的数据取出拼装成一个字节。三、实验流程四、实验步骤单步或连续运行程序,检查4002h内容变化情况。五、实验程序CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3040HS3: MOV BX,4000H MOV AX,BX AND AL,0FH MOV CL,4SHL AL,CL【】 ;屏蔽高4位OR AL,AH ADD BX,2MOV BX,AL JMP $CODE ENDSEND S3实验报告要求:1、 将程序补充完整;2、 详细注释所有程序。3、 完成实验思考4、 注明实验现象与结论。实验二 程序实验二4、数据区移动一、实验目的掌握RAM中的数据操作。二、实验内容把4100H源RAM区首地址内的16字节数据传送到4200H目标RAM区。三、设计思想程序要求把内存中一数据区称为源数据块传送到另一存储区称为目的数据块。源数据块和目的数据块在存储器中可能有三种情况,如如下图:对于两个数据别离的情况,如图a,数据的传送从数据块的首地址开始,或者从数据块的末地址开始均可。但对于有局部重叠的情况,如此要加以分析,否如此重叠局部会因“搬移而遭破坏。可以得出如下结论:当源数据首址目的块首址时,从数据块首址开始传送数据。当源数据首址目的块首址时,从数据块末址开始传送数据。四、程序流程五、实验步骤运行程序,检查4100410Fh中内容是否和4200420Fh中内容完全一致。六、实验程序CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3060HS4: MOV CX,0010H MOV SI,4100HMOV DI,4200H CMP SI,DIJA A42 ADD SI,CX ADD DI,CXA41: DEC SI DEC DI MOV AL,SI MOV DI,AL LOOP A41 JMP $A42: MOV AL,SI MOV DI,AL INC SI INC DILOOP A42 JMP $CODE ENDS END S45、数据排序实验一、实验目的熟悉8088指令系统,掌握程序设计方法。二、实验内容编写并调试一个排序子程序,其方法为用冒泡法将RAM中的几个单元字节无符号的正整数,按从小到大的次序重新排列。三、程序流程四、实验步骤从第一个数开始,依次把相邻的两个数进展比拟,即第N-2个数与第N-1个数比拟,第N-1个数与N个数比拟等等;假如第N-1个数不大于第N个数,如此两者交换,否如此不交换,直到N个数的相邻两个数都比拟完为止。此时。N个数中的最小数将被排在N个数的最后。对剩下的N-1个数重复第步,找到N-1个数中的最小数。重复第步,直到N个数全部排序好为止。五、实验步骤在4000H400AH中通过键盘命令输入不等的10个数,运行本实验程序后检查4000H400AH中内容是否按从大到小排列。在和PC机联机时,用连续单步方式,可很清楚地看出数据排序时数据移动变化情况。六、实验思考编一程序把4000H400AH中内容按从大到小排列。七、实验程序CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3090HS5: MOV CX,000AHA53: MOV BX,4000H PUSH CXA52: MOV AX,BX【 】 ;两数比拟 JC A51A54: INC BX LOOP A52 POP CX LOOP A53 JMP $A51: XCHG AL,AH MOV BX,AX JMP A54CODE ENDS END S56、找“零个数一、实验目的熟悉汇编语言编程,掌握串操作指令的使用。二、实验内容在4000400Fh中查出有几个字节是00,把个数放在4100h中。三、程序流程四、实验步骤在4000400Fh的几个单元中填入零,运行本程序后检查4100h中是几个单元数。五、实验思考修改程序,查找其他内容。如0FFH等六、实验程序CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 30B0HS6: MOV BX,4100H ;COUNT MOV AX,0000MOV BX,AX MOV CX,0010H MOV DI,4000H CLDA62: SCASB【】 ;是0如此转移计数A63: LOOP A62 JMP $A61: INC BYTE PTR BXJMP A63CODE ENDS END S6实验报告要求: 1、将程序补充完整; 2、详细注释所有程序。实验三 程序实验三7、二进制转换到BCD一、实验要求将给定的一个二进制数,转换成二进制编码的十进制BCD码。二、实验目的掌握简单的数值转换算法,根本了解数值的各种表达方法。三、实验说明计算机中的数值有各种表达方式,这是计算机的根底。掌握各种数制之间的转换是一种根本功。本实验将转换结果存入4000h为起始地址的三个单元。四、程序流程五、实验思考如何将BCD转换成二进制码?六、实验程序code segment assume cs:code org 1000hStart: mov bx,4000h mov ax,123 mov cl,100 div cl mov bx,al ;除以100, 得百位数 mov al,ah mov ah,0 mov cl,10 div cl【 】 ;余数除以10, 得十位数【 】 ;余数为个位数 jmp $code ends end Start8、 多分支程序一、实验目的掌握汇编语言的编程,熟悉程序散转的设计方法。二、实验内容多分支结构相当于一个多路开关,在程序设计中通常是根据某存放器或某单元的内容进展程序转移。在设计多分支转移程序时,如果分支太多,如此平均转移速度太慢,本实验采用转移地址表实现多分支转移,可以提高平均转移速度。编写程序,根据送入的数据转移运行。三、程序流程四、编程提示LED数码管0F的字行代码:0123456789ABCDEF灭C0F9A4B0999282F880908883C6A1868EFFLED数码管的字位代码:字位123456代码201008040201五、实验步骤在4000h中分次输入00,01,020F,每次运行程序后观察数码管上数字循环情况。六、实验程序CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3130HS8: JMP A81TAB DW LED0,LED1,LED2,LED3,LED4,LED5,LED6,LED7 DW LED8,LED9,LEDA,LEDB,LEDC,LEDD,LEDE,LEDFA81: MOV BX,OFFSET TAB MOV SI,4000HMOV AL,SI AND AL,0FHSHL AL,1 MOV AH,00H ADD BX,AX JMP BXLED0: MOV AL,0C0H JMP LEDXLED1: MOV AL,0F9H JMP LEDXLED2: MOV AL,0A4H JMP LEDXLED3: MOV AL,0B0H JMP LEDXLED4: MOV AL,99H JMP LEDXLED5: MOV AL,92H JMP LEDXLED6: MOV AL,82H JMP LEDXLED7: MOV AL,0F8H JMP LEDXLED8: MOV AL,80H JMP LEDXLED9: MOV AL,90H JMP LEDXLEDA: MOV AL,88H JMP LEDXLEDB: MOV AL,83H JMP LEDXLEDC: MOV AL,0C6H JMP LEDXLEDD: MOV AL,0A1H JMP LEDXLEDE: MOV AL,86H JMP LEDXLEDF: MOV AL,8EH JMP LEDXLEDX: MOV DX,0FFDCH OUT DX,AL MOV CL,20H MOV DX,0FFDDHLEDX1: MOV AL,CL OUT DX,AL PUSH CX CALL DLL POP CX ROR CL,1 JMP LEDX1DLL: MOV BX,0020HDL1: DEC BX CMP BX,0000 JZ DL3 MOV CX,04FFH LOOP $ JMP DL1DL3: RETCODE ENDS END S8实验报告要求:1、将程序补充完整;2、详细注释所有程序。9、显示子程序一、实验目的熟悉LED显示器的显示过程。二、实验内容编写程序,依次闪动显示“dais88、“good。三、程序流程四、实验步骤连续运行程序,观察数码管显示情况。五、实验程序CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 31E0HS9: JMP START9ZXK EQU 0FFDCHZWK EQU 0FFDDHLED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3HBUF DB ?,?,?,?,?,?START9: MOV CX,0005H ;"dais 88" ON/OFFLED,COUNTA90: PUSH CXA91: MOV BX,OFFSET BUF MOV AX,0A0DH MOV BX,AX ADD BX,2 MOV AX,0501H MOV BX,AX ADD BX,2 MOV AX,0808H MOV BX,AX MOV CX,0050H ;ONLED,TIMEA92: PUSH CX CALL DIS POP CX LOOP A92MOV CX,0003H MOV AX,1010HMOV BX,OFFSET BUFA93: MOV BX,AX INC BX INC BX LOOP A93 MOV CX,0020H ;OFFSET,TIMEA94: PUSH CX CALL DIS POP CX LOOP A94 POP CX LOOP A90;- MOV CX,0005H ;"good" ON/OFFLED-COUNTA99: PUSH CXA95: MOV BX,OFFSET BUFMOV AX,0009H MOV BX,AXADD BX,2 MOV AX,0D00H MOV BX,AX ADD BX,2 MOV AX,1010H MOV BX,AX MOV CX,0050H ;ONLED-TIMEA96: PUSH CX CALL DIS POP CX LOOP A96MOV CX,0003H MOV AX,1010HMOV BX,OFFSET BUFA97: MOV BX,AX INC BX INC BX LOOP A97 MOV CX,0020H ;OFFSET-TIMEA98: PUSH CX CALL DIS POP CX LOOP A98 POP CX LOOP A99 JMP START9;-DIS: MOV CL,20H MOV BX,OFFSET BUFDIS1: MOV AL,BX PUSH BX MOV BX,OFFSET LED XLAT POP BX MOV DX,ZXK OUT DX,AL MOV AL,CL MOV DX,ZWK OUT DX,AL PUSH CX MOV CX,0100HDELAY: LOOP $POP CX CMP CL,01H JZ EXITINC BX SHR CL,1 JMP DIS1EXIT: MOV AL,00H MOV DX,ZWK OUT DX,AL RETCODE ENDS END S9知识补充:LEDLight Emitting Diode数码管的工作原理由7段发光二极管按数字“8排列组成LED数码管,主要用于显示数码09,也可以显示AF等字符。LED数码管有共阳极和共阴极两种结构。共阳极,Di=0时灯亮;共阴极,Di=1时灯亮。字型编码不同。将一个数码在一个LED数码管上显示出来,需要驱动数码管。这需要两个条件,一是通过字形代码端口输出字形代码对应的LED的显示代码,二是通过位型代码端口输出位型代码。数码管段选码字形码:LED显示器上显示某个字符时,必须在它的8位段选线上加上相应的电平组合,即一个8位数据该字符的段选码。通常段选码的编码规如此:D7D6D5D4D3D2D1D0dpgfedcba这样的程序片段是: mov bx,1 BX要显示的数字这里假设为1 mov al,ledtbbx 换码为显示代码:ALLEBTBBX mov dx,port 假设port表示与数码管相接的端口地址 out dx,al 输出显示 系统已定义的I/O地址如下:接口芯片口地址用途74LS273FFDDH字位口/键扫口74LS273FFDCH字形口74LS245FFDEH键入口LED静态显示接口电路连接图LED动态显示接口电路连接图实验箱方式实验箱键扫显示控制电路、字形/字位/键值表键扫显示控制电路字形表代码D7D6D5D4D3D2D1D0字形HhgfedcbaC0110000000F9111110011A4101001002B0101100003991001100149210010010582100000106F811111000780100000008901001000098810001000A8010000000BC611000110CC011000000D8610000110E8E10001110FFF111111110C00001100P.8910001001H7F01111111.BF10111111-字位表G5G4G3G2G1G0未用201008040201键值表0708090A101214160405060B111315170102030C181A1C1E000F0E0D191B1D1F硬件实验硬件实验可使学生能进一步掌握8088微机系统扩展和输入输出程序的设计方法,熟悉对扩展系统的软件、硬件设计、调试方法和技巧。实验四 简单I/O口扩展一、实验目的学习微机系统中扩展简单I/O口的硬件实现与编程方法。二、实验内容利用74LS244作为输入口,读取开关状态,通过74LS273驱动发光二极管显示出来。三、程序流程四、实验电路五、实验步骤74LS244的输入端PI0PI7接K1K8,74LS273的输出端PO0PO7接L1L8。按图连接138译码输入端A.B.C,138使能控制输入端G与位于地址线A0引出孔所在位置下方的使能控制输出端G作对应连接,该端的寻址X围为0FFE0H0FFFFH。把I/O IN、I/O OUT区的D0D7用排线或8芯扁平线与数据总线区D0D7任一接口相连。完成程序设计,实验程序在Inter8088实验系统环境中实现编译、连接、装载成功后,通过Inter8088实验系统环境中的连续运行命令,实现程序运行。或通过实验箱键盘输入程序起始地址,按EXEC键运行已经装载成功的程序。拨动K1K8,观察L1L8是否对应点亮。六、实验程序【 】 ;初始化 ORG 3380H P4:【 。 ;取出244状态 。】 ;送273驱动发光二极管 JMP P4CODE ENDS END P4七、实验思考题修改程序,使发光二极管依次移位闪亮。注意设置合理的延时。实验报告要求1. 244和273地址如何计算得出;2. 写出实验程序并标出注释;3. 讨论实验现象并进展理论分析;4. 做出实验总结,完成实验思考题。实验五 定时/计数器:8253方波一、实验目的学习8253芯片和微机接口的方法,掌握8253定时器计数器的工作方式和编程原理。二、实验内容8253是一种可编程定时/计数器,有3个16位计数器,其计数频率X围为02MHz,用+5V单电源供电。8253的功能用途:延时中断可编程频率发生器 事件计数器 二进制倍频器 实时时钟数字单稳 复杂的电机控制器8253的6种工作方式:方式0:计数完毕中断方式1:可编程频率发生方式2:频率发生器方式3:方波频率发生器方式4:软件触发的选通信号方式5:硬件触发的选通信号本实验要求:使用8253的0通道,选择工作方式3,产生方波。三、程序流程四、实验电路五、实验步骤1按实验电路图连接线路:8253的GATE0接+5V。8253的CLK0插孔接分频器74LS393的T2插孔,分频器的频率源为:。按照要求连接138译码电路,8253的CS孔与138译码器的Y0孔相连。用8芯排线或8芯扁平线把D0D7总线接口局部机型位于8251右侧与数据总线单元D0D7任一接口相连。2运行实验程序3用示波器测量8253的OUT0输出插孔是否有方波产生。六、实验参考程序CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3490HH9:【 】 JMP $CODE ENDS END H9七、实验思考1 为什么8253的方式3可以产生方波?2 8253的CS孔与138译码器的Y0孔相连,其作用是什么?定时计数器:8253方波二一、实验目的 掌握8253定时器/计数器的工作方式和编程原理。 深入理解CLK、GATE、OUT之间的关系。 二、实验内容 以输入T18253,实现每5秒定时中断,8253片选用Y3,8253四个端口地址分别为0FFECH-0FFEFH片选Y3,用2通道作为输入,0通道作为输出产生如下波形。实验要求: 1、掌握 CLK、OUT、与初值的关系,画出OUT1和OUT0的输出波形 2、通过改变GATE信号,输出波形有何变化5秒OUT05秒5ms5秒5ms5ms每5秒产生一个脉冲OUT0GATE0CLK0OUT2GATE2CLK2+5V+5VY38253三、实验电路CS四、实验步骤 按实验电路图连接线路:按实验电路图连接138译码输入端,其中A连A2,B连A3,C连A4,138使能控制输入端G与位于地址线A0引出孔所在位置下方的使能控制输出端G作对应连接,该端的寻址X围为0FFE0H0FFFFH。8253的GATE0接+5V。8253的CLK2插孔接分频器74LS393的T2插孔把8253的CS孔与138译码器的Y3孔相连。用8芯排线或8芯扁平线把D0D7总线接口位于8251右侧与数据总线单元D0D7任一接口相连。按图连接 OUT2接到CLK0根据连接电路图,设计程序用示波器测量8253的OUT0输出插孔的波形。五、实验参考程序CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3490HH9: 【】 JMP $CODE ENDS END H9六、实验思考1 如何计算波形初值?2 解释如何计算程序中需要的各口地址?实验六 8259中断控制器实验一、实验目的1掌握中断控制器8259A与微机接口的原理和方法。2掌握中断控制器8259A的应用编程。二、实验内容编制程序,利用开关作为8259芯片IR7的中断源,人工控制产生单一中断。中断的功能是驱动发光二极管,使其亮灭,不停地闪动。三、实验提示8259中断控制器是专为控制优先级中断设计的芯片。它将中断源优先级排队,辩别中断源以与提供中断矢量的电路集于一片中。因此无需附加任何电路,只需对8259进展编程,就可以管理8级中断,并选择优行模式和中断请求方式,即中断结构可以由用户编程来设定。同时,在不需要增加其它电路的情况下,通过多片8259的级联,能构成多达64级的矢量中断系统。实验箱中采用一片8259A中断控制芯片,工作于主片方式,8个中断请求输入端IR0IR7对应的中断型号为8F,其和中断矢量关于如下表所示。表1 8259中断矢量对应关系8259A中断源中断序号中断类型号中断矢量表地址IR0082023 HIR1192427 HIR22A282B HIR33B2C2F HIR44C3033 HIR55D3437 HIR66E383B HIR77F3C3F H本实验中使用7号中断源IR7,中断方式为边沿触发方式,按动开关按钮产生一次中断。编写中断服务程序程序,使系统每次响应外部中断IR7时发光二极管闪烁。四、实验电路五、实验软件清单Port0 EQU 0FFE0HPort1 EQU 0FFE1HCODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3400HP8259: CLI MOV AX,OFFSET INT8259 MOV BX,003CH MOV BX,AX MOV BX,003EH MOV AX,0000H MOV BX,AX CALL FOR8259 MOV AL,0FEH MOV DX,0FFE4H STI JMP $;=FOR8259:MOV AL,13H MOV DX,Port0 OUT DX,ALMOV AL,08H MOV DX,Port1OUT DX,AL MOV AL,09H OUT DX,AL MOV AL,7FH ;IRQ7 OUT DX,AL RET;-INT8259:cli Push dx Push ax MOV AL,20H MOV DX,Port0 OUT DX,AL Pop ax Pop dx Out dx,al mov cx,0 loop $ Rol al,1 STI IRETCODE ENDSEND P8259六、实