1、前 言作为我校重点建设课程之一,微机原理及应用课程已成为计算机科学与技术、电子信息工程、自动化、测控技术及仪器、过程装备及控制等各种专业必修课和限选课,教学涉及本、专科、成人及职业教诲等不同层次。由于课程性质关系,教学活动需要一定实验环节相配合,才干获得良好教学效果,因此我院近年前就建立了微机原理实验室。,在院、系领导和教研室大力支持下,实验室又添置了新微机原理实验箱Dais-586PI+,该设备既能独立运营,又可以PC机作为操作平台,全面支持微机原理及应用课程。但是原有实验指引书已与新实验设备不能较好配合,因而咱们重新编写了实验指引书。全书涉及汇编语言程序设计和接口电路设计两大某些,共16个
2、实验,实验项目涉及课程教学活动中绝大某些内容,如汇编程序设计、8259、8255、8253、8237、8251接口设计、A/D、D/A转换、存储器扩展等,可用于微机原理及应用、微型计算机技术、微机原理与接口技术等课程实验教学,可以满足我校各个开课专业不同需要。由于时间仓促、水平有限,但愿同窗们在使用本实验指引书过程中,能协助咱们发现问题,不断改进完善。 编 者 12月目 录DAIS实验系统概述1实验一 熟悉DAISWIN开发环境5实验二 基本程序设计9实验三 数据排序程序设计11实验四 显示程序设计13实验五 数码转换程序设计21实验六 8259中断控制器实验24实验七 8253定期/计数器实
3、验29实验八 8237可编程DMA控制器实验32实验九 8255并行接口实验40实验十 8251串行通信实验44实验十一 A/D转换实验58实验十二 D/A转换实验62实验十三 外部存储器扩展实验65实验十四 继电器控制实验67实验十五 步进电机控制实验69实验十六 1616点阵显示实验72附 录 双踪PC示波器用法简介82Dais实验系统概述1.1系统构成Dais系列微机仿真实验系统8088/8086微机接口实验由管理CPU 89C52单元、目的CPU 8088/8086单元、接口实验单元和内置稳压电源构成,通过RS232C串行接口与PC微机相连,系统硬件重要配备如下:系统管理管理CPU 8
4、9C52(控制板/内置仿真器)、目的CPU 8088系统存储器监控在89C52片内E2PROM(8K)、RAM6264、RAM61256 1片(32K)、BPRAM 61256(32K)接口芯片及单元实验8253、8255、8259、ADC0809、DAC0832、6264、164、273、244、393分频、电子发声单元、电机控制单元、开关及发光二极管、单脉冲触发器、继电器控制、1616点阵、8155扩展33键盘及四位LED显示、以及8251、8250串行通信等。外设接口打印接口、RS232C串口、D/A驱动接口、步进电机驱动接口、音频驱动接口、PC总线接口、216 LCD液晶显示接口显示输
5、出6位/8位LED、双通道虚拟PC示波器键盘32键自定义键盘EPROM操作对EPROM 2764/27128迅速读出系统电源5V/2A,12V/0.5A1.2 系统功能与特点 1、自带键盘、显示屏,能独立运营,也可以PC微机为操作台。两种工作方式任意选取,全面支持微机原理及应用、微型计算机技术等课程实验教学。 2、系统采用紧耦合多CPU技术,用89C52作为系统管理CPU,8088/8086作为目的机接口扩展实验CPU。 3、目的CPU 8088/8086采用主频为14.3818MHz,系统以最小工作方式构成。 4、配有1片6264构成系统8K基本内存,地址范畴0F000:000007FFH,
6、作为监控程序区和数据区:另配1片61C256(32K)作为实验程序空间,地址从0000:0000HFFFFH(其中0003FFH作为目的机中断向量区),还配一片61C256(32K)作为顾客设立断点区(BPRAM)。 5、实验项目完整丰富,与课程教学紧密结合,同步配有机电、温压、音响等实验对象,可支持控制应用类综合实验。 6、系统接口实验电路为单元电路方式,电路简捷明快,8位数据总线以排线或8芯扁平线形式引出,这样既减轻繁琐连线工作,又提高学生实验工作能力。 7、通过RS232通信接口,在Windows/DOS集成软件支持下,运用上位机丰富软件、硬件资源,实现顾客程序编辑、编译、调试运营,提高
7、实验效率。 8、具备最丰富调试手段,系统全面支持硬件断点,可无限制设立断点,同步具备单步、宏单步、持续运营及无限制暂停等功能。 9、集EPROM操作功能,可对2764/27128迅速读出(软硬件实验所需代码文献)。1.3系统资源分派 实验系统寻址范畴定义如下:系统数据区F000:000000FFH系统堆栈区F000:010001FFH系统程序区F000:020007FFH顾客程序/数据区F000:10007FFFH顾客堆栈区F000:06000400H中断向量区F000:000003FFH系统已定义I/O地址如下:接口芯片口地址用途74LS273FFDDH字位口74LS273FFDCH字形口7
8、4LS245FFDEH键入口8255A口FFD8HEP总线8255B口FFD9HEP地址8255C口FFDAHEP控制8255控制口FFDBH控制字1.4硬件设立1、CPU选取开关本系统为通用型一体机,设有32 CPU选取开关,普通状况下开机前应对的选取当前CPU类型,“96”表达MCS-196KB/KC、“88”表达8088/8086、“51”表达MCS-8032/8052,在通电状态下,亦可拨动选取开关变化当前CPU类型,但在变化当前CPU类型后要用RESET系统复位命令加以确认,若不按复位命令按钮会引起“死机”。本书所有实验都应将CPU选取开关拨至88位置。2、串行口选取及通信波特率选取
9、开关本系统设有串行口选取开关,从左到右依次为2400、9600和57600,选取2400表达选取8251串口通信实验,选取9600和57600为系统与PC机通信波特率选取位,在PC机配备较低场合或DOS操作环境下普通选取9600常规波特率,要提高通信效率则选取57600。 3、打开电源开关,系统应显示闪动“P.”,处在待命状态;否则按下RESET键,如仍不显示,应及时切断电源,检查后重新进行。4、系统功能自检在闪动“P.”状态下按键:【MOVE】1000【STEP】【EXEC】,系统将持续运营“8”字循环移位程序,若LED浮现循环移位显示“8”,阐明系统已进入正常工作状态,可按RESET键返回
10、“P.”待命。8088/8086系列微机原理实验指引本章是为8088/8086 16位微机原理实验编写详细实验指引,实验指引中详细论述了各实验目、实验内容、实验原理图、程序框图等。一、所有实验程序已固化在16K EPROM(27C128)中,8088/8086实验程序地址范畴:3000H3FFFH,在与PC机联机状态,可将各个实验程序进行编译、连接、下载到实验系统RAM中运用系统操作命令完毕各实验。二、实验接线图上粗实线表达在实验时要用导线连接起来。三、每个实验程序序号、实验名称、入口地址见下表。实验序号实验名称入口地址实验二拆字程序3020H实验三数据排序实验3090H实验四显示子程序31E
11、0H键盘扫描显示实验se10.asm实验五二进制转换到BCDse11.asm二进制转换到ASCIIse12.asm实验六8259中断控制器实验3400H实验七8253定期/计数器实验3490H实验八8237可编程DMA控制器实验3800H实验九8255并行接口实验32C0H实验十8251串行通信实验35C0H实验十一A/D转换实验3390H实验十二D/A转换实验33E0H实验十三外部存储器扩展实验he23.asm实验十四继电器控制34B0H实验十五步进电机控制3620H实验十六1616点阵显示实验3AD3H实验一 熟悉DaisWin开发环境一、实验目学习使用DaisWin开发环境进行应用程序开
12、发。二、实验环境硬件:PC微机、Dais微机实验系统软件:DaisWin集成开发环境三、实验内容(一)设立DaisWinDaisWin集成开发环境完毕安装后,依照系统提示,设立型号、通信端口、波特率等有关信息。启动DaisWin第一步 启动DaisWin1、 点击【开始/程序/启东达爱思教学实验系统/Intel 8088微机实验系统】,启动DaisWin。2、 选取对的参数设立3、 如果已经连接仪器,屏幕将进入程序界面第二步 选取进入连机操作或模仿操作1、如果没有连接仪器,屏幕上将浮现出错对话框,请你确认与否需要连接。2、如果不需要连接仪器,点击“No”,则软件将进入模仿操作状态。3、如果要进
13、入连机操作状态,请在确认一起连接与参数设立对的后,点击“Yes”,软件将进入连机操作模式。通过以上环节,屏幕上浮现DaisWin集成开发环境系统画面。(二)DaisWin开发实例第一步 新建文献点击【文献/新文献】,在文本框中输入新文献代码,然后点击【文献/存储】,设立文献名为Sample.asm。CODE SEGMENTASSUME CS:CODE,DS:CODE,ES:CODEORG 1000HSTART0:MOV BX,5000HMOV AX,0000HMOV CX,007FHL1: MOV BX,AXINC BXINC BXLOOP L1JMP $CODE ENDSEND START0
14、本程序作用为把内存单元偏移地址为5000H开始持续127个字单元清零。第二步 编译/连接 使用【编译/文献编译、连接】命令对Sample.asm文献进行编译、连接,编译/连接产生成果出当前DaisWin集成开发环境消息窗口。如果程序存在错误,集成开发环境将自动关联到源程序错误处,则需要修改程序;如果对的,则可进行下一步。第三步 装载 使用【编译/装载】命令,将产生代码装入实验系统。这一步也可和第二步一起进行,只需使用【编译/文献编译、连接、装载】命令即可。此时DaisWin集成开发环境进入调试状态。文献窗口左侧浮现了一列小圆点,表达程序有效行,即此行存在相应代码,并且在start0行左侧浮现蓝
15、色箭头,表达当前程序计数器PC。第四步 调试程序使用【调试】下调试命令相应用程序进行调试。使用【视图/内存空间】查看从内存单元偏移地址为5000H开始持续127个字单元与否被清零。第五步 输出代码文献使用DaisWin集成开发环境对程序调试无误后,选取【文献/保存程序区】,产生输出Binary格式文献,可用于对芯片编程。实验二 基本程序设计一、实验目掌握汇编语言设计和调试办法。二、实验内容把4000H内容拆开,高位送4001H低位,低位送4002H低位,4001H、4002H高位清零,普通本程序用于把数据送显示缓冲区时用。三、程序流程四、实验环节用持续或单步方式运营程序,检查4000H4002
16、H中内容变化状况。五、实验参照程序CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3020HSTART : MOV BX,4000H MOV AL,BX MOV AH,AL MOV CL,4 SHR AH,CL INC BX MOV BX,AH AND AL,0FH INC BX MOV BX,AL JMP $CODE ENDS END START六、思考题如何将4001H低4位送入4000H低4位,将4002H高4位送入4000H高4位。实验三 数据排序程序设计一、实验目学习综合程序设计、编制及调试办法。二、实验内容编写并调试一种排序子程序,其
17、办法为用冒泡法将RAM中几种单元字节无符号正整数,按从大到小顺序重新排列。三、程序流程四、设计思想从第一种数开始,依次把相邻两个数进行比较,即第(N-2)个数与第(N-1)个数比较,第(N-1)个数与N个数比较等等;若第(N-1)个数不不不大于第N个数,则两者互换,否则不互换,直到N个数相邻两个数都比较完为止。此时。N个数中最小数将被排在N个数最后。对剩余(N-1)个数重复第步,找到(N-1)个数中最小数。重复第步,直到N个数所有排序好为止。五、实验环节在4000H400AH中输入不等10个数,运营本实验程序后检查4000H400AH中内容与否按从大到小排列。六、实验参照程序CODE SEGM
18、ENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3090HSTART: MOV CX,000AHA53: MOV BX,4000H PUSH CXA52: MOV AX,BX CMP AL,AH JC A51A54: INC BX LOOP A52 POP CX LOOP A53 JMP $A51: XCHG AL,AH MOV BX,AX JMP A54CODE ENDS END START七、思考题编一程序把5000H500AH中内容按从小到大排列。实验四 显示程序设计一、实验目掌握键盘扫描和LED七段码显示屏工作原理。掌握键盘和显示屏接口办法和编程办法。二、
19、实验内容编写程序,依次闪动显示“Dais 88”“good”。在基本上,运用实验系统提供键盘扫描电路和显示电路,做一种扫描键盘和数码显示实验,把按键输入键码在六位数码管上显示出来。三、程序流程及实验环节1、显示子程序(1)程序流程(2)实验环节持续运营31E0h程序,观测数码管显示状况。(3)实验参照程序CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 31E0HSTART: JMP START9ZXK EQU 0FFDCHZWK EQU 0FFDDHLED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,9
20、0H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3HBUF DB ?,?,?,?,?,?START9: MOV CX,0005H A90: 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 A92: PUSH CX CALL DIS POP CX LOOP A92 MOV CX,0003H MOV AX,1010H MOV BX,OFFSE
21、T BUFA93: MOV BX,AX INC BX INC BX LOOP A93 MOV CX,0020H A94: PUSH CX CALL DIS POP CX LOOP A94 POP CX LOOP A90;- MOV CX,0005H A99: PUSH CXA95: MOV BX,OFFSET BUF MOV AX,0009H MOV BX,AX ADD BX,2 MOV AX,0D00H MOV BX,AX ADD BX,2 MOV AX,1010H MOV BX,AX MOV CX,0050H A96: PUSH CX CALL DIS POP CX LOOP A96 MO
22、V CX,0003H MOV AX,1010H MOV BX,OFFSET BUFA97: MOV BX,AX INC BX INC BX LOOP A97 MOV CX,0020H A98: 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 PUS
23、H CX MOV CX,0100HDELAY: LOOP $ POP CX CMP CL,01H JZ EXIT INC BX SHR CL,1 JMP DIS1EXIT: MOV AL,00H MOV DX,ZWK OUT DX,AL RETCODE ENDS END START2、键盘扫描显示实验(1)编程提示实验程序可提成三个模块。键输入模块:扫描键盘、读取一次键盘并将键值存入键值缓冲单元。显示模块:将显示单元内容在显示屏上动态显示。主程序:调用键输入模块和显示模块。(2)程序流程(3)实验环节持续运营程序,按动键盘观测数码管显示状况。(4)实验参照程序code segment assu
24、me cs:codeOUTSEG equ 0ffdch ;段控制口OUTBIT equ 0ffddh ;位控制口/键扫口IN_KEY equ 0ffdeh ;键盘读入口LedBuf db 6 dup(?) ;显示缓冲 org 1000hStart: mov LedBuf+0,90h ;显示Good mov LedBuf+1,0a3h mov LedBuf+2,0a3h mov LedBuf+3,0a1h mov LedBuf+4,0ffh mov LedBuf+5,0ffhMLoop: call Disp ;显示 call GetKey ;扫描键盘并读取键值 and al,0fh ;显示键码
25、mov ah,0 mov bx,offset LEDMAP add bx,ax mov al,bx mov LEDBuf+5,al jmp MLoopDisp: mov bx,offset LEDBuf mov cl,6 ;共6个七段管 mov ah,00100000b ;从左边开始显示DLoop: mov dx,OUTBIT mov al,0 out dx,al ;关所有七段管 mov al,bx mov dx,OUTSEG out dx,al mov dx,OUTBIT mov al,ah out dx,al ;显示一位七段管 push ax mov ah,1 call Delay pop
26、 ax shr ah,1 inc bx dec cl jnz DLoop mov dx,OUTBIT mov al,0 out dx,al ;关所有七段管 retDelay: ;延时子程序 push cx mov cx,256 loop $ pop cx retGetKey: ;键扫子程序 mov al,0ffh ;关显示口 mov dx,OUTSEG out dx,al mov bl,0 mov ah,0feh mov cx,8key1: mov al,ah mov dx,OUTBIT out dx,al shl al,1 mov ah,al nop nop nop nop nop nop
27、mov dx,IN_KEY in al,dx not al nop nop and al,0fh jnz key2 inc bl loop key1nkey: mov al,20h retkey2: test al,1 je key3 mov al,0 jmp key6key3: test al,2 je key4 mov al,8 jmp key6key4: test al,4 je key5 mov al,10h jmp key6key5: test al,8 je nkey mov al,18hkey6: add al,bl cmp al,10h jnc fkey mov bx,offs
28、et KeyTable xlatfkey: retLedMap: ;七段管显示码 db 0c0h,0f9h,0a4h,0b0h,099h,092h,082h,0f8h db 080h,090h,088h,083h,0c6h,0a1h,086h,08ehKeyTable: ;键码定义 db 07h,04h,08h,05h,09h,06h,0ah,0bh db 01h,00h,02h,0fh,03h,0eh,0ch,0dhcode ends end Start实验五 数码转换程序设计一、实验目掌握简朴数值转换算法,基本理解数值各种表达办法。理解如何查表进行数值转换及迅速计算。二、实验规定将给定一种
29、二进制数,转换成BCD码。给出一种BCD数,将其转换成ASCII值。三、实验内容1、二进制转换成BCD码(1)程序流程(2)实验参照程序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 mov bx+1,al ;余数除以10,得十位数 mov bx+2,ah ;余数为个位数 jmp $code ends end Start2、二进制转换到ASCII码(1)程序
30、流程(2)实验参照程序code segment assume cs:code,ds:code org 1000hStart: mov ax,1ah mov bl,al shr bl,1 shr bl,1 shr bl,1 shr bl,1 mov bh,0 mov ah,byte ptr ASCIITabbx push bx mov bx,4000h mov bx,ah pop bx and al,0fh mov bl,al mov ah,byte ptr ASCIITabbx push bx mov bx,4001h mov bx,ah pop bx jmp $ASCIITab: db AB
31、CDEF ;定义数字相应ASCII表code ends end Start四、思考题1、如何将BCD码转换成二进制?2、如何将ASCII转换成BCD码?实验六 8259中断控制器实验一、实验目掌握8259中断控制器接口办法。掌握8259中断控制器应用编程。二、实验内容编制程序,运用8259芯片IR作为中断源,产生单一中断,系统显示中断号“7”。三、程序流程四、实验电路五、编程提示 8259芯片简介中断控制器8259A是专业性为控制优先级中断设计芯片。它将中断源优先级排队,辩别中断源以及提供中断矢量电路集于一片中。因而无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选取优行模式
32、和中断祈求方式,即中断构造可以由顾客编程来设定。同步,在不需要增长其他电路状况下,通过多片8259A级联,能构成多达64级矢量中断系统。中断号01234567矢量地址2023h2427h282Bh2C2Fh3033h3437h383Bh3C3Fh本实验中使用7号中断源IR7,“SP”插孔和IR7相连,中断方式为边沿触发方式,每按二次AN按钮产生一次中断,编写程序,使系统每次响应外部中断IR7时,显示1个字符“7”,满“7”次后显示“P.”继续等待中断。六、实验连线Dais系列实验箱连线连接位置1连接位置2138 A,B,CA2,A3,A4138 GG8259 CS138 Y08259 IR7S
33、P(初始化为低电平)8259 D0D7系统数据总线D0D7七、实验环节编写源程序,编译、装载,持续运营程序,按动AN按钮,LED数码管从最高位开始依次显示“7”,显示满后,最高位显示“P.”,继续等待中断。八、实验参照程序CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3400HStart: JMP P8259ZXK EQU 0FFDCHZWK EQU 0FFDDHLED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0D
34、EH,0F3HBUF DB ?,?,?,?,?,?Port0 EQU 0FFE0HPort1 EQU 0FFE1HP8259: CLI CALL WP ;初始化显示“P.” MOV AX,OFFSET INT8259 ;设立中断向量 MOV BX,003CH MOV BX,AX MOV BX,003EH MOV AX,0000H MOV BX,AX CALL FOR8259 MOV SI,0000H STICON8: CALL DIS JMP CON8;-INT8259:CLI MOV BX,OFFSET BUF MOV BYTE PTR BX+SI,07H INC SI CMP SI,0007H JZ X59XX59: MOV AL,20H ;发中断结束命令 MOV DX,Port0 OUT DX,AL mov cx,0050hxxx59: push cx call dis pop cx loop xxx59 pop cx mov cx,3438h push cx STI IRETX59: MOV SI,0000H CALL WP JMP XX59;=FOR8259:MOV AL,13H ;初始化8259 MOV DX,Port0 OUT DX,AL MOV AL,08H