计算机学院微机接口实验指导
实 验 注 意 事 项
1. 根据教材和实验指导,先预习实验内容;
2. 进入实验室,需遵守实验室的规章
制度
关于办公室下班关闭电源制度矿山事故隐患举报和奖励制度制度下载人事管理制度doc盘点制度下载
;
3. 在实验室一定要注意用电安全,爱护实验设备;
4. 每次进实验室,请自觉穿上鞋套;
5. 实验完成后需经老师验收方可离开;
6. 离开时请带自己的所有物品(包括一些废弃物);
7. 按时上交
实验报告
化学实验报告单总流体力学实验报告观察种子结构实验报告观察种子结构实验报告单观察种子的结构实验报告单
,实验
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
用统一的实验报告纸或A4纸。
8. 在安排的时间因事没有做的实验,不统一安排时间补做,自己
找合适的时间来补。
实验一 汇编语言程序设计实验
一、 实验目的
熟悉汇编语言程序设计及TD-PITE80X86实验环境的使用。
二、 实验设备
PC机一台,TD-PITE实验装置或TD-PITC实验装置一套。
三、 实验内容
1. 冒泡排序法
在数据区中存放着一组数,数据的个数就是数据缓冲区的长度,要求采用冒泡法对该数据区中的数据按递增(或递减)关系排序。
设计思想:
(1)从最后一个数(或第一个数)开始,依次把相邻的两个数进行比较,即第N个数与第N-1个数比较,第N-1个数与第N-2个数比较等等;若第N-1个数大于第N个数,则两者交换,否则不交换,直到N个数的相邻两个数都比较完为止。此时,N个数中的最小数将被排在N个数的最前列。
(2)对剩下的N-1个数重复(1)这一步,找到N-1个数中的最小数。
(3)再重复(2),直到N个数全部排列好为止。
实验程序示例
SSTACK
SEGMENT STACK
DW 64 DUP(?)
SSTACK
ENDS
DATA SEGMENT
ARRY1 DB 。。。。。。
DATA ENDS
CODE
SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
。。。。。。
MOV AX,4C00H
INT 21H
;程序终止
CODE
ENDS
END START
2.在数据段的3000H开始的存储单元中写入“0-9”的ASCII码值,将它们传送到同一段的4000H开始的存储单元中。
3.在数据段定义一个16位二进制数,将它转换为十进制ASCII码,并存入数据段。
4.在数据段定义5个字节的16进制数据,转换为它们的ASCII码,并显示在屏幕上。
5.在数据段定义10个无符号数据,求出其中的最大和最小值,并显示。
四、 实验步骤
(1)完成汇编程序格式,编写实验程序。
(2)编译、链接无误后装入系统。
(3)先运行程序,待程序运行停止。
(4)通过键入D命令查看程序运行的结果。
(5)可以反复测试几组数据,观察结果,验证程序的正确性。
实验二 8259中断控制实验
一、 实验目的
1. 掌握8259中断控制器的工作原理。
2. 学习8259的应用编程方法。
3. 掌握8259级联方式的使用方法。
二、 实验设备
PC机一台,TD-PITE实验装置或TD-PITC实验装置一套。
三、 实验内容及步骤
1. 中断控制器8259简介
在Intel 386EX芯片中集成有中断控制单元(ICU),该单元包含有两个级联中断控制器,一个为主控制器,一个为从控制器。该中断控制单元就功能而言与工业上
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
的82C59A是一致的,操作方法也相同。从片的INT连接到主片的IR2信号上构成两片8259的级联。
在TD-PITE实验系统中,将主控制器的IR6、IR7以及从控制器的IR1开放出来供实验使用,主片8259的IR4供系统串口使用。8259的内部连接及外部管脚引出如图2.1:
图2。1 8259内部连续及外部管脚引出图
表2.1列出了中断控制单元的寄存器相关信息。
表2.1 ICU寄存器列表
寄存器
口地址
功能描述
ICW1(主)
ICW1(从)
(只写)
0020H
00A0H
初始化命令字1:
决定中断请求信号为电平触发还是边沿触发。
ICW2(主)
ICW2(从)
(只写)
0021H
00A1H
初始化命令字2:
包含了8259的基址中断向量号,基址中断向量是IR0的向量号,基址加1就是IR1的向量号,依此类推。
ICW3(主)
(只写)
0021H
初始化命令字3:
用于识别从8259设备连接到主控制器的IR信号,内部的从8259连接到主8259的IR2信号上。
ICW3(从)
(只写)
00A1H
初始化命令字3:
表明内部从控制器级联到主片的IR2信号上。
ICW4(主)
ICW4(从)
(只写)
0021H
00A1H
初始化命令字4:
选择特殊全嵌套或全嵌套模式,使能中断自动结束方式。
OCW1(主)
OCW1(从)
(读/写)
0021H
00A1H
操作命令字1:
中断屏蔽操作寄存器,可屏蔽相应的中断信号。
OCW2(主)
OCW2(从)
(只写)
0020H
00A0H
操作命令字2:
改变中断优先级和发送中断结束命令。
OCW3(主)
OCW3(从)
(只写)
0020H
00A0H
操作命令字3:
使能特殊屏蔽方式,设置中断查询方式,允许读出中断请求寄存器和当前中断服务寄存器。
IRR(主)
IRR(从)
(只读)
0020H
00A0H
中断请求:
指出挂起的中断请求。
ISR(主)
ISR(从)
(只读)
0020H
00A0H
当前中断服务:
指出当前正在被服务的中断请求。
POLL(主)
POLL(从)
(只读)
0020H
0021H
00A0H
00A1H
查询状态字:
表明连接到8259上的设备是否需要服务,如果有中断请求,该字表明当前优先级最高的中断请求。
初始化命令字1寄存器(ICW1)说明见图2.2所示。
图2.2 初始化命令字1寄存器
初始化命令字2寄存器(ICW2)说明见图2.3所示。
图2.3 初始化命令字2寄存器
初始化命令字3寄存器(ICW3)说明,主片见图2.4,从片见图2.5。
图2.4 主片初始化命令字3寄存器
图2.5 从片初始化命令字3寄存器
初始化命令字4寄存器(ICW4)说明见图2.6。
图2.6 初始化命令字4寄存器
操作命令字1寄存器(OCW1)说明见图2.7。
图2.7 操作命令字1寄存器
操作命令字2寄存器(OCW2)说明如图2.8所示。
图2.8 操作命令字2寄存器
操作命令字3寄存器(OCW3)说明如图2.9所示。
图2.9 操作命令字3寄存器
查询状态字(POLL)说明如图2.10所示。
图2.10 程序状态字寄存器
在对8259进行编程时,首先必须进行初始化。一般先使用CLI指令将所有的可屏蔽中断禁止,然后写入初始化命令字。8259有一个状态机控制对寄存器的访问,不正确的初始化顺序会造成异常初始化。在初始化主片8259时,写入初始化命令字的顺序是:ICW1、ICW2、ICW3、然后是ICW4,初始化从片8259的顺序与初始化主片8259的顺序是相同的。
系统启动时,主片8259已被初始化,且4号中断源(IR4)提供给与PC联机的串口通信使用,其它中断源被屏蔽。中断矢量地址与中断号之间的关系如下表所示:
主片中断序号
0
1
2
3
4
5
6
7
功能调用
08H
09H
0AH
0BH
0CH
0DH
0EH
0FH
矢量地址
20H~23H
24H~27H
28H~2BH
2CH~2FH
30H~33H
34H~37H
38H~3BH
3CH~3FH
说明
未开放
未开放
未开放
未开放
串口
未开放
可用
可用
从片中断序号
0
1
2
3
4
5
6
7
功能调用
30H
31H
32H
33H
34H
35H
36H
37H
矢量地址
C0H~C3H
C4H~C7H
C8H~CBH
CCH~CFH
D0H~D3H
D4H~D7H
D8H~DBH
DCH~DFH
说明
未开放
可用
未开放
未开放
未开放
未开放
未开放
未开放
2. 8259单中断实验
实验接线图如图2.11所示,单次脉冲输出与主片8259的IR7相连,每按动一次单次脉冲,产生一次外部中断,在显示屏上输出一个字符“7”。
2.11 8259单中断实验接线图
实验程序示例
SSTACK
SEGMENT STACK
DW 32 DUP(?)
SSTACK
ENDS
CODE
SEGMENT
ASSUME CS:CODE
START:
PUSH DS
MOV AX, 0000H
MOV DS, AX
;取中断入口地址
;中断矢量地址
……
;填IRQ7的偏移矢量
;段地址
;填IRQ7的段地址矢量
CLI
POP DS
……
;初始化主片8259
STI
AA1:
NOP
JMP AA1
MIR7:
STI
CALL DELAY
……
; 有中断就在屏幕显示一个字符
IRET
CODE
ENDS
END START
实验步骤
(1)按图2.11连接实验线路。
(2)编写实验程序,经编译、链接无误后装入系统。
(3)运行程序,重复按单次脉冲开关KK1+,显示屏会显示字符相应字符,说明响应了中断。
3. 8259级联实验
实验接线图如图2.12所示,KK1+连接到主片8259的IR7上,KK2+连接到从片8259的IR1上,当按一次KK1+时,显示屏上显示字符“M7”,按一次KK2+时,显示字符“S1”。编写程序。
图2.12 8259级联实验
实验程序示例
SSTACK
SEGMENT STACK
DW 32 DUP(?)
SSTACK
ENDS
CODE
SEGMENT
ASSUME CS:CODE
START:
;取中断入口地址
……
;中断矢量地址
;填IRQ7的偏移矢量
;段地址
;填IRQ7的段地址矢量
……
;初始化主片8259
……
;初始化从片8259
STI
AA1:
NOP
JMP AA1
MIR7:
CALL DELAY
…… ;主片有中断显示字符
IRET
SIR1:
CALL DELAY
……
;从片有中断显示字符
IRET
CODE
ENDS
END START
实验步骤
(1)按图2.12连接实验线路。
(2)输入程序,编译、链接无误后装入系统。
(3)运行程序,按动KK1+或KK2+,观察实验结果,验证实验程序的正确性。
(4)若同时按下KK1+和KK2+,观察实验结果,解释实验现象。
实验三 8254定时/计数器应用实验
一、 实验目的
1. 掌握8254的工作方式及应用编程。
2. 掌握8254典型应用电路的接法。
二、 实验设备
PC机一台,TD-PITE实验装置或TD-PITC实验装置一套,示波器一台。
三、 实验内容
计数应用实验。编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按动‘KK1+’N次后,产生一次计数中断,并在屏幕上显示一个字符。
四、 实验原理
8254是Intel公司生产的可编程间隔定时器。是8253的改进型,比8253具有更优良的性能。8254具有以下基本功能:
(1)有3个独立的16位计数器。
(2)每个计数器可按二进制或十进制(BCD)计数。
(3)每个计数器可编程工作于6种不同工作方式。
(4)8254每个计数器允许的最高计数频率为10MHz(8253为2MHz)。
(5)8254有读回命令(8253没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容。
(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为:
n=fCLKi÷fOUTi、其中fCLKi是输入时钟脉冲的频率,fOUTi是输出波形的频率。
图3.1是8254的内部结构框图和引脚图,它是由与CPU的接口、内部控制电路和三个计数器组成。8254的工作方式如下述:
(1)方式0:计数到0结束输出正跃变信号方式。
(2)方式1:硬件可重触发单稳方式。
(3)方式2:频率发生器方式。
(4)方式3:方波发生器。
(5)方式4:软件触发选通方式。
(6)方式5:硬件触发选通方式。
图3.1 8254的内部接口和引脚
8254的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。控制字格式如表3.1—3.3所示。
表3.1 8254的方式控制字格式
D7
D6
D5
D4
D3
D2
D1
D0
计数器选择
读/写格式选择
工作方式选择
计数码制选择
00-计数器0
01-计数器1
10-计数器2
11-读出控制
字标志
00-锁存计数值
01-读/写低8位
10-读/写高8位
11-先读/写低8位
再读/写高8位
000-方式0
001-方式1
010-方式2
011-方式3
100-方式4
101-方式5
0-二进制数
1-十进制数
表3.2 8254读出控制字格式
D7
D6
D5
D4
D3
D2
D1
D0
1
1
0-锁存计数值
0-锁存状态信息
计数器选择(同方式控制字)
0
表3.3 8254状态字格式
D7
D6
D5
D4
D3
D2
D1
D0
OUT引脚现行状态
1-高电平
0-低电平
计数初值是否装入
1-无效计数
0-计数有效
计数器方式(同方式控制字)
8254实验单元电路图如下图所示:
图3.2 8254实验电路原理图
五、 实验步骤
1. 计数应用实验
编写程序,将8254的计数器0设置为方式3,计数值为十进制数4,用单次脉冲KK1+作为CLK0时钟,OUT0连接MIR7,每当KK1+按动5次后产生中断请求,在屏幕上显示字符。
实验步骤:
1.实验接线如图3.3所示。
2.编写实验程序,经编译、链接无误后装入系统。
3.运行程序,按动KK1+产生单次脉冲,观察实验现象。
4.改变计数值,验证8254的计数功能。
图3.3 8254计数应用实验接线图
实验程序示例
A8254 EQU 06C0H
B8254 EQU 06C2H
C8254 EQU 06C4H
CON8254 EQU 06C6H
SSTACK
SEGMENT STACK
DW 32 DUP(?)
SSTACK
ENDS
CODE
SEGMENT
ASSUME CS:CODE, SS:SSTACK
START:
;8259
……
;中断8259初始化
;8254
……
;计数器8254初始化
STI
AA1:
JMP AA1
IRQ7:
…… ;中断服务程序
IRET
CODE
ENDS
END START
2.定时应用实验
利用8254的2个计数器T0、T1,将系统主时钟1MHZ分频成1HZ(可用LED灯观察)。
实验步骤:
1.参考图3.3,自行修改实验电路。
2.编写实验程序,经编译、链接无误后装入系统。
3.运行程序,观察实验现象。
4.改变计数值,验证8254的定时功能。
实验四 8255并行接口实验
一、 实验目的
1. 学习并掌握8255的工作方式及其应用。
2. 掌握8255典型应用电路的接法。
二、 实验设备
PC机一台,TD-PITE实验装置或TD-PITC实验装置一套。
三、 实验内容
1. 基本输入输出实验。编写程序,使8255的A口为输入,B口为输出,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就发生相应改变。
2. 流水灯显示实验。编写程序,使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。
3.驱动数码管显示字符”0-9”。编写程序,选择一个或多个数码管来显示0到9十个数字字符。
四、 实验原理
图4.1 8255内部结构及外部引脚图
并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。8255的内部结构及引脚如图4. 1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图4. 2所示。
图4. 2 8255控制字格式
8255实验单元电路图如图4. 3所示:
图4. 3 8255实验单元电路图
五、 实验步骤
1. 基本输入输出实验
本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。用一组开关信号接入端口A,端口B输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。具体实验步骤如下述:
(1)实验接线图如图4.34所示,按图连接实验线路图。
(2)编写实验程序,经编译、连接无误后装入系统。
(3)运行程序,改变拨动开关,同时观察LED显示,验证程序功能。
图4. 4 8255基本输入输出实验接线图
2. 流水灯显示实验
使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。实验接线图如图4. 5所示。实验步骤如下所述:
(1)按图4. 5连接实验线路图。
(2)编写实验程序,经编译、链接无误后装入系统。
(3)运行程序,观察LED灯的显示,验证程序功能。
(4)自己改变流水灯的方式,编写程序。
图4. 5 8255流水灯实验接线图
3. 驱动数码管显示“0-9”
(1)根据要求,自行连接实验线路图。
(2)编写实验程序,经编译、链接无误后装入系统。
(3)运行程序,观察数码管的显示,验证程序功能。
(4)改变数码管的显示方式,编写程序。
实验五 8251串行接口应用实验
一、 实验目的
1. 掌握8251的工作方式及应用。
2. 了解有关串口通讯的知识。
二、 实验设备
PC机两台,TD-PITE实验装置或TD-PITC实验装置两套。
三、 实验内容
1. 自收自发实验,将3000H起始的10个单元中的初始数据发送到串口,然后自接收并保存到4000H起始的内存单元中。
2. 双机通讯实验,本实验需要两台实验装置,其中一台作为接收机,一台作为发送机,发送机将3000H~3009H内存单元中共10个数发送到接收机,接收机将接收到的数据直接在屏幕上输出显示。
四、 实验原理
1. 8251的基本性能
8251是可编程的串行通信接口,可以管理信号变化范围很大的串行数据通信。有下列基本性能:
(1)通过编程,可以工作在同步方式,也可以工作在异步方式。
(2)同步方式下,波特率为0~64K,异步方式下,波特率为0~19.2K。
(3)在同步方式时,可以用5~8位来代表字符,内部或外部同步,可自动插入同步字符。
(4)在异步方式时,也使用5~8位来代表字符,自动为每个数据增加1个启动位,并能够根据编程为每个数据增加1个、1.5个或2个停止位。
(5)具有奇偶、溢出和帧错误检测能力。
(6)全双工,双缓冲器发送和接收器。
注意,8251尽管通过了RS-232规定的基本控制信号,但并没有提供规定的全部信号。
2. 8251的内部结构及外部引脚
8251的内部结构图如图5.1所示,可以看出,8251有7个主要部分,即数据总线缓冲器、读/写控制逻辑电路、调制/解调控制电路、发送缓冲器、发送控制电路、接收缓冲器和接收控制电路,图中还标识出了每个部分对外的引脚。
8251的外部引脚如图5.2所示,共28个引脚,每个引脚信号的输入输出方式如图中的箭头方向所示。
图5.1 8251内部结构图
图5.2 8251外部引脚图
3. 8251在异步方式下的TXD信号上的数据传输格式
图5.3 示意了8251工作在异步方式下的TXD信号上的数据传输格式。数据位与停止位的位数可以由编程指定。
图5.3 8251工作在异步方式下TXD信号的数据传输格式
4. 8251的编程
对8251的编程就是对8251的寄存器的操作,下面分别给出8251的几个寄存器的格式。
(1)方式控制字
方式控制字用来指定通信方式及其方式下的数据格式,具体各位的定义如图5.4所示。
D7
D6
D5
D4
D3
D2
D1
D0
SCS/S2
ESD/S1
EP
PEN
L2
L1
B2
B1
同步/停止位
奇偶校验
字符长度
波特率系数
同步(D1D0=00)
X0=内同步
X1=外同步
0X=双同步
1X=单同步
异步(D1D0≠0)
00=不用
01=1位
10=1.5位
11=2位
X0=无校验
01=奇校验
11=偶校验
00=5位
01=6位
10=7位
11=8位
异步
00=不用
01=01
10=16
11=64
同步
00=同步方式标志
图5.4 8251方式控制字
(2)命令控制字
命令控制字用于指定8251进行某种操作(如发送、接收、内部复位和检测同步字符等)或处于某种工作状态,以便接收或发送数据。图5.5所示的是8251命令控制字各位的定义。
D7
D6
D5
D4
D3
D2
D1
D0
EH
IR
RTS
ER
SBRK
RxE
DTR
TxEN
进入搜索
1=允许搜索
内部复位
1=使8251返回方式控制字
请求发送
1=使RTS输出0
错误标志复位使错误标志PE、OE、FE复位
发中止字符
1=使TXD为低0=正常工作
接收允许
1=允许
0=禁止
数据终端准备好
1=使DTR输出0
发送允许
1=允许
0=禁止
图5.5 8251命令控制字格式
(3)状态字
CPU通过状态字来了解8251当前的工作状态,以决定下一步的操作,8251的状态字如图5.6所示。
D7
D6
D5
D4
D3
D2
D1
D0
DSR
SYNDET
FE
OE
PE
TxE
RxRDY
TxRDY
数据装置就绪:
当DSR输入为0时,该位为1
同步检测
帧错误:该标志仅用于异步方式,当在任一字符的结尾没有检测到有效的停止位时,该位置1。此标志由命令控制字中的位4复位。
溢出错误:在下一个字符变为可用前,CPU没有把字符读走,此标志置1。此错误出现时上一字符已丢失。
奇偶错误:
当检测到奇偶错误时此位置1。
发送器空
接收就绪为1表明接收到一个字符。
发送就绪为1表明发送缓冲器空。
图5.6 8251状态字格式
(4)系统初始化
8251的初始化和操作流程如图5.7所示。
图5.7 8251初始化
流程图
破产流程图 免费下载数据库流程图下载数据库流程图下载研究框架流程图下载流程图下载word
5. 8251实验单元电路图
图5.8 8251实验单元电路图
五、 实验步骤
1. 自收自发实验
通过自收自发实验,可以验证硬件及软件设计,常用于自测试。具体实验步骤如下:
(1)参考实验接线图如图5.9所示,按图连接实验线路。
(2)编写实验程序,编译、链接无误后装入系统。
(3)使用E命令更改4000H起始的10个单元中的数据。
(4)运行实验程序,待程序运行停止。
(5)查看3000H起始的10个单元中的数据,与初始化的数据进行比较,验证程序功能。
实验参考例程
M8251_DATA
EQU 0600H
;端口定义
M8251_CON
EQU 0602H
M8254_2
EQU 06C4H
M8254_CON
EQU 06C6H
SSTACK
SEGMENT STACK
DW 64 DUP(?)
SSTACK
ENDS
CODE
SEGMENT
ASSUME CS:CODE
START:
MOV AX, 0000H
MOV DS, AX
;初始化8254,得到收发时钟
……
;复位8251
CALL INIT
CALL DALLY
;8251方式字
……
图5.9 自收自发实验接线图
;8251控制字
……
……
;发送数据
……
;判断发送缓冲是否为空
……
;判断是否接收到数据
……
;读取接收到的数据
MOV AX,4C00H
INT 21H
;程序终止
INIT
PROC
NEAR
;复位8251子程序
……
RET
INIT
ENDP
……
;延时子程序
CODE
ENDS
END START
2. 双机通讯实验
使用两台实验装置,一台为发送机,一台为接收机,进行两机间的串行通讯。实验步骤如下:
图5.10 双机通讯实验接线图
(1)按图5.10连接实验线路。
(2)为两台机器分别编写实验程序,编译、链接后装入系统。
(3)为发送机初始化发送数据。在发送机3000H~3009H内存单元写入ASCII值:30,31,32,33,34,35,36,37,38,39共10个数。
(4)首先运行接收机上的程序,等待接收数据,然后运行发送机上的程序,将数据发送到串口。
(5)观察接收机端屏幕上的显示是否与发送机端初始的数据相同,验证程序功能。
屏幕将会显示字符:0123456789
实验参考例程(接收机)
M8251_DATA
EQU 0600H
M8251_CON
EQU 0602H
M8254_2
EQU 06C4H
M8254_CON
EQU 06C6H
SSTACK
SEGMENT STACK
DW 64 DUP(?)
SSTACK
ENDS
CODE
SEGMENT
ASSUME CS:CODE
START:
……
;初始化8254
CLI
CALL INIT
;复位8251
CALL DALLY
……
;写8251方式字
MOV AX, 0152H
;输出显示字符 'R'
INT 10H
MOV DI, 3000H
MOV CX, 000AH
A1:
……
;查询状态口
……
;读取数据
……
;输出显示接收到的数据
STI
A2:
JMP A2
INIT
PROC NEAR
;复位8251子程序
……
RET
INIT
ENDP
……
;延时子程序
CODE
ENDS
END START
实验参考程序(发送机)
M8251_DATA
EQU 0600H
M8251_CON
EQU 0602H
M8254_2
EQU 06C4H
M8254_CON
EQU 06C6H
SSTACK
SEGMENT STACK
DW 64 DUP(?)
SSTACK
ENDS
CODE
SEGMENT
ASSUME CS:CODE
START:
……
;初始化8254, 得到收发时钟
CALL INIT
;复位8251
CALL DALLY
……
;8251方式字
CALL DALLY
……
;8251控制字
CALL DALLY
……
;发送数据
A2:
JMP A2
INIT
PROC NEAR
;复位8251子程序
……
RET
INIT
ENDP
SEND
PROC
NEAR
;数据发送子程序
……
RET
SEND
ENDP
……
;延时子程序
CODE
ENDS
END START
附录 系统编程信息
附1 地址分配情况
1. 系统内存分配
系统内存分配情况如附图1-1所示。系统内存分为程序存储器和数据存储器,程序存储器为一片128KB的FLASH ROM,数据存储器为一片128KB的SRAM。
附图1-1 系统内存分配
2. 系统编址
采用内存与IO独立编址形式,内存地址空间和外设地址空间是相对独立的。内存地址是连续的1M字节,从00000H~FFFFFH。外设的地址范围从0000H~FFFFH,总共64K字节。
(1)存储器编制
存储器编址情况见下表。
附表1-1 存储器编址
信号线
编址空间
系统程序存储器
E0000H~FFFFFH
系统数据存储器
00000H~1FFFFH
扩展存储器
MY0
80000H~9FFFFH
MY1
A0000H~BFFFFH
即
SRAM空间:00000H~1FFFFH共128K
其中:00000H~00FFFH为4K系统区
01000H~1FFFFH为124K用户使用区
FALSH空间:0E0000H~0FFFFFH共128K
其中:0E0000H~0EFFFFH为64K供用户使用区
0F0000H~0FFFFH为64K系统监控区
(2)输入/输出接口编址
输入/输出接口编址见下表。
附表1-2 输入/输出接口编址
信号线
编址空间
主片8259
20H、21H
从片8259
A0H、A1H
扩展I/O接口
IOY0
0600H~063FH
IOY1
0640H~067FH
IOY2
0680H~06BFH
IOY3
06C0H~06FFH
附2 常用BIOS及DOS功能调用说明
附表2-1 INT 03H使用说明
入口:无
功能:程序终止
附表2-2 INT 10H 使用说明
入口:AH=01H,AL=数据
功能:写AL中的数据到屏上
入口:AH=06H,DS:BX=字串首址,且字串尾用00H填充
功能:显示一字串,直到遇到00H为止
附表2-3 INT 16H 使用说明
入口:AH=00H
功能:读键盘缓冲到AL中,读指针移动,ZF=1无键值,ZF=0有键值
入口:AH=01H
功能:检测键盘缓冲,并送到AL中,读指针不动,ZF=1无键值,ZF=0有键值
附表2-4 INT 21H使用说明
入口:AH=00H或AH=4CH
功能:程序终止
入口:AH=01H
功能:读键盘输入到AL中并回显
入口:AH=02H,DL=数据
功能:写DL中的数据到显示屏
入口:AH=08H
功能:读键盘输入到AL中无回显
入口:AH=09H,DS:DX=字符串首地址,字符串以 '$' 结束
功能:显示字符串,直到遇到 '$' 为止
入口:AH=0AH,DS:DX=缓冲区首地址,(DS:DX)=缓冲区最大字符数,
(DS:DX+1)=实际输入字符数,(DS:DX+2)=输入字符串起始地址
功能:读键盘输入的字符串到DS:DX指定缓冲区中并以回车结束
附3 Debug调试命令
Wmd86软件输出区集成有Debug调试,点击调试标签,进入Debug状态,会出现命令提示符“>”,主要命令叙述如下:
A 进入小汇编
格式:A[段址:][偏移量]
A段址:偏移量——从段址:偏移量构成的实际地址单元起填充汇编程序的目标代码;
A偏移量——从默认的段址与给定的偏移量构成的实际地址单元起填充汇编程序目标代码;
A——从默认段址:默认偏移量构成的实际地址单元起填充汇编程序的目标代码;
输入上述命令后,屏幕显示地址信息,即可输入源程序。若直接回车,则退出命令。汇编程序输入时,数据一律为十六进制数,且省略H后缀。[m]类操作一定要在[ ]之前标注W(字)或B(字节)。如:MOV B[2010], AX,MOV W[2010], AX。
例:在“>”提示符下键入A2000,此时默认的段址CS为0000,规定偏移量IP为2000,屏幕显示与操作为:
附表3-1 小汇编操作示例
显示内容
键入内容
0000:2000
MOV AX, 1234
0000:2003
INC AX
0000:2004
DEC AX
0000:2005
JMP 2000
0000:2007
B 断点设置
在系统提示符下,键入B,系统提示[i]:,等待输入断点地址。输入断点地址后回车,系统继续提示[i+1]:。若直接键入回车,则结束该命令。系统允许设置最多10个断点,断点的清除只能是通过系统复位或重新上电来实现。例:
附表3-2 B命令示例
显示内容
键入内容
>
B
[0]:
2009
[1]:
D 显示一段地址单元中的数据
格式:D[[段址:]起始地址,[尾地址]]
D命令执行后屏幕上显示一段地址单元中的数据,在显示过程中,可用Ctrl+S来暂停显示,用任意键继续;也可用Ctrl+C终止数据显示,返回监控状态。
E编辑指定地址单元中的数据
格式:E[[段址:]偏移量]
该命令执行后,则按字节显示或修改数据,可通过“空格”键进入下一高地址单元数据的修改,使用“-”键则进入下一低地址单元进行数据的修改,并可填入新的数据来修改地址单元的内容。若输入回车,则结束E命令。例:
附表3-3 E命令示例
显示内容
键入内容
>
E3500
0000:3500 00_
05 空格
0000:3501 01_
空格
0000:3502 02_
-
0000:3501 01_
G运行程序
格式:G=[段址:]偏移量
G[=[段址:]偏移量]
其中G格式表示无断点连续运行程序,GB格式表示带断点连续运行程序,连续运行过程中,当遇到断点或按下Ctrl+C键时,终止程序运行。
M数据块搬移
格式:M源地址,尾地址 目标地址
R寄存器或片内RAM区显示与修改
格式:R或R寄存器名
R操作后,屏幕显示:CS=XXXX DS=XXXX IP=XXXX AX=XXXX F=XXXX
若需要显示并修改特定寄存器内容,则选择R寄存器名操作。如RAX,则显示:AX=XXXX,键入回车键,结束该命令。若输入四位十六进制数并回车,则将该数填入寄存器AX中,并结束该命令。
T单步运行指定的程序
格式:T[=[段址:]偏移量]
每次按照指定的地址或IP/PC指示的地址,单步执行一条指令后则显示运行后的CPU寄存器情况。
U反汇编
格式:U[[段址:]起始地址[,尾地址]]
_1307170732.vsd
S7
S6
S5
S4
S3
S2
S1
0
7
0
S7-S3:0表示无8259被连接到主片上
1表示有8259被连接到主片上
S2:0表示内部从片没被使用
1表示内部从片被级联到主片的IR2上
S1:0表示无8259通过IR1连接到主片上
1表示有8259通过IR1连接到主片上
ICW3(主片)
_1307170765.vsd
R
SL
EOI
0
0
L2
L1
L0
7
0
OCW2
R SL EOI 命令
0 0 0 取消优先级自动循环 *
0 0 1 �
_1309084072.vsd
双向数据总线
数据
总线
缓冲
器
D0-D7
RD
WR
A1
A0
RESET
CS
读/写
控制
逻辑
A组
控制
部件
8位内总线
B组
控制
部件
A口
(8位)
C口
(高4位)
C口
(低4位)
B口
(8位)
I/O
I/O
I/O
I/O
PA7-PA0
PC7-PC4
PC3-PC0
PB7-PB0
PA3
PA2
PA1
PA0
RD
CS
GND
A1
A0
PC7
PC6
PC5
PC4
PC0
PC1
PC2
PC3
PB0
PB1
PB2
PA4
PA5
PA6
PA7
WR
RESET
D0
D1
D2
D3
D4
D5
D6
D7
VCC
PB7
PB6
PB5
PB4
PB3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
8255
_1309085524.vsd
0
ESMM
SMM
0
1
P
RR
RIS
7
0
OCW3
ESMM SMM
0 0 无影响
0 1 无影响
1 0 禁止特殊屏蔽模式
1 1 使能特殊屏蔽模式
P:设置该位使8259工作在中断查询方式
RR RIS
0 0 无影响
0 1 无影响
1 0 读中断请求寄存器IRR
1 1 读当前中断服务寄存器ISR
_1307171030.vsd
数据总线
缓冲器
读/写控制逻辑电路
调制/解调控制电路
发送
缓冲器
并→串
转换
发送控制电路
接收
缓冲器
串→并
转换
接收控制电路
D7~D0
RESET
CLK
C/D#
RD#
WR#
CS#
DSR#
DTR#
CTS#
RTS#
RxRDY
RxC
SYNDET
TxC
RxD
TxE
TxRDY
TxD
内 部 总 线
_1307171054.vsd
系统RESET
初始化
输入方式指令
异步?
输入第1个同步字符
1个同步字符?
输入第2个同步字符
输入命令指令
复位?
传送数据
完成?
Y
Y
Y
Y
N
N
N
N
_1307171696.vsd
系统程序区128K
用户堆栈区
用户程序区
系统堆栈区
DEBUG系统数据区
BIOS系统数据区
中断矢量区
0000:0000H
0000:1000H
2000:0000H
0000:0000H~03FFH
0000:0400H~04FFH
0000:0500H~06FFH
0000:0700H~0FFFH
E000:0000H~F000:FFFFH
124K
_1307170786.vsd
INT
-
-
-
-
L2
L1
L0
7
0
POLL
INT:0=无请求
1=连接在8259上的设备请求服务
L2、L1、L0:当INT为1时,这些位指出了需要服务的最高优先级的IR;当INT为0时这些位不确定。
_1307170748.vsd
0
0
0
SNFM
0
0
AEOI
1
7
0
ICW4
SNFM:0=选择全嵌套模式
1=选择特殊全嵌套模式,仅主8259能够工作在特殊全嵌套模式
AEOI:0=禁止中断自动结束
1=使能中断自动结束,仅主8259能够工作在中断自动结束方式
_1307170755.vsd
M7
M6
M5
M4
M3
M2
M1
M0
7
0
OCW1
M7--M0:0=对应IR信号上的中断请求得到允许
1=对应IR信号上的中断请求被屏蔽
注意:设置屏蔽位不影响各自中断挂起位
_1307170740.vsd
0
0
0
0
0
0
1
0
7
0
ICW3(从片)
_1307170705.vsd
0
0
0
1
LS
0
0
1
7
0
0:边沿触发
1:电平触发
ICW1
_1307170723.vsd
T7
T6
T5
T4
T3
0
0
0
7
0
ICW2
中断向量地址
_1095317697.vsd
_1301819176.vsd
D2
D3
RxD
GND
D4
D5
D6
D7
TxC#
WR#
CS#
C/D#
RD#
RxRDY
D0
D1
Vcc
RxC#
DTR#
RTS#
DSR#
RESET
CLK
TxD
TxE
CTS#
SYNDET/BD
TxRDY
1
14
28
15
8251
_1307170681.vsd
主片8259A
从片8259A
INT
INT
CAS2:0
CAS2:0
IR2
IR4
IR6
IR7
IR1
INTR
(内核)
串口0
MIR6
MIR7
SIR1
_1179295229.vsd
_1095316771.vsd