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