106
微机原理与接口技术 实验指导书 赵鹏涛 主编 冯灵霞 主审 黄河科技学院信息工程学院实验教学中心

微机原理与接口技术 实验指导书 - hhstu.edu.cn 微机接口实验指导书.pdf接口芯片:包括定时计数器接口芯片 / (8253a) , 并行接 口芯片 (8255a)

  • Upload
    others

  • View
    32

  • Download
    0

Embed Size (px)

Citation preview

微机原理与接口技术

实验指导书

赵鹏涛 主编 冯灵霞 主审

黄河科技学院信息工程学院实验教学中心

第一章 DVCC-8086H 实验系统性能特点

§1.1 DVCC-8086H 性能特点

1、用主频为 4.77MHZ 的 8088CPU 为主 CPU,并以最小工作方式构成系统 。

2、系统以二片 62256 静态 RAM 构成系统的 64K 基本内存, 地址范围为

00000H~0FFFFH。其中 00000H~004FFH 为系统数据区,00500H~00FFFH 为用户数据

区,01000H~0FFFFH 为用户程序区,另配一片 32K EPROM 存放系统程序和实验程序,

地址范围为 F8000H~FFFFFH 。

3、自带键盘显示器,采用进口键座、彩色字符键帽,能单机独立运行,为实验程序的

调试带来方便。

4、备有通用外围电路,包括逻辑电平开关电路、发光二极管显示电路、 时钟电路、

单脉冲发生电路、继电器及驱动电路、直流电机及驱动电路、步进电机及驱动电路、电子

音响及驱动电路、模拟电压产生电路。

5、提供各种微机常用 I/O 接口芯片:包括定时/计数器接口芯片 (8253A), 并行接

口芯片(8255A),A/D 转换芯片(0809),D/A 转换芯片( 0832) , 中断控制器接口芯片

(8259A),键盘显示接口芯片(8279A),串行通信接口芯片(8251A)等。

6、备有系统总线扩展插座,便于其他硬件接口器件的扩展(如 DAM 控制器 8237A 的

扩充、串级中断 8259A 的扩充、串行口 8250A 扩充、A/D5G14433 的扩充等)。

7、可以配接温度测量、压力测量实验板。

8、备有通用 IC 插座,和其他外围电路配合作数字实验仪用 。

9、实验电路连接采用自锁紧插座及导线,消除接触不良现象 。

10、电路设计中增加保护措施,有效避免学生因错接而损坏器件 。

11、提供标准 RS232 异步通信接口,以联接 IBMPC 及其兼容机 。

12、配备中文 WINDOWS95(98)界面调试软件及实验演示软件 。

13、系统可以单步、断点、连续等方式调试运行各实验程序 。

14、使用单个+5V 电源,仅在做 D/A 实验时,需再接入一个+12V 和一个-12V 电源 。

15、工作电源电压+5V±5%,工作电流不大于 1A,开关机瞬间及工作正常时电源毛

刺必须小于 0.5V 。

16、使用环境: 环境温度 0℃~+40℃,无明显潮湿、无明显振动碰撞 。

§1.2 DVCC—8086H 系统资源分配

8088 有一兆存储空间,系统提供给用户使用的空间为 00000H~0FFFFH, 用于存放

1

调试实验程序,具体分配如下表:

中断矢量区 00000H~00013H 作为单步 (T)、断点 INT3、无条件暂停 (NMI) 中断矢

量区,用户也可以更改这些矢量,指向用户的处理,但失去了相应的单步、断点、暂停等

系统功能。

§1.3 DVCC-8086H 输入/输出接口地址的分配

§1.4 DVCC-8086H 提供的实验内容 1、软件实验(一)

2、软件实验(二)

3、软件实验(三)

4、使用 ADC0809 的 A/D 转换实验

5、使用 DAC0832 的 D/A 转换实验(一)

2

6 、使用 DAC0832 的 D/A 转换实验(二)

7 、8255A 可编程并行口实验(一)

8、8255A 可编程并行口实验(二)

9、 8253A 定时/计数器实验

10、使用 8259A 的单级中断控制实验

11、使用 8251A 的串行接口应用实验(一)

*12、直流电机调速实验

*13、步进电机控制实验

*14、继电器控制实验

*15、存贮器读写实验

注:实验序号前打上“*”为扩展型实验, 需通过总线扩展插座, 接插实验板( 有

DMA 实验板和串级中断实验板)。

3

第二章 DVCC-8086H 实验系统安装

§2.1 DVCC-8086H 实验系统组成

1、硬件

微机专用电源 WD-5 一台

实验箱 DVCC-8086H 一台

自锁紧实验导线 40 根

电源/通信电缆线二根

2、资料

《DVCC-8086H 实验系统实验指导书》一套

3、可选附件

(1)8259A 串级中断控制实验板

(2)8237A 可编程 DMA 控制实验板

(3)温度测量,压力测量实验板(含压力传感器)

(4)温度传感器

(5)集成电路芯片(8250A、5G14433、1403)共 3 片

§2.2 DVCC-8086H 实验系统安装

§2.2.1 系统硬件安装

本系统为单板式结构,固定在一手提箱内,安装前先对照装箱单仔细检查实验箱硬件

配置是否齐全,运输过程中有无损坏。如一切完好,即可着手安装。

实验系统所需+5V、±12V 电源可由外接电源提供,也可以系统自带,实验系统所需

各路电源的电流如下: +5V 不小于 1A,+12V 不超过 0.5A,-12V 不超过 0.5A。

当外接电源时:

(1)用万用表检查外接电源各路输出电压是否和标称值一致。我厂配备的 WD-5 电

源各路电压正确值如下:+5V 电源应为+5V±5%,+12V 电源应大于 11.5V,-12V 电源绝

对值应大于 11.5V。

(2)将出厂时提供的二芯电源线接入外置电源,其中红线接+5V,黑线接地。

(3)将通信电缆线一头插入 DVCC-8086H 的 J2 插座,另一 9 芯 D 型通信插座接入

主机 COM1~ COM4 的任一插座上。 选择 COM1、COM2、COM3 或 COM4 的原则是:

该通信口必须能正常工作, 且与通信电缆提供的插头匹配。.

(4)打开外接电源,实验系统加电后,电源指示灯亮,8 个数码管显示“ DVCC- 86

4

H” 字样,指示实验系统正常工作。

上述步骤完成后,实验台硬件正确安装完毕。如发现错误,应按上述步骤找出原因,

加以解决或与老师联系。

当系统自带电源时:

(1)将出厂时提供的 RS-232 通信电缆的 9 芯 D 型插头一端插入实验系统 9 芯 D 型

插座 J2 上,另一头 9 芯 D 型插头插入主机 COM1-COM4 的任一插座上。COM1、COM2、

COM3 或 COM4 的选择原则是:该通信口必须能正常工作,且与通信电缆提供的插头匹

配。

(2)打开实验系统上的电源开关(在外侧面),系统加电,电源指示灯亮,8 个数码显示

器显示 “DVCC-86H ”字样,指示实验系统正常工作。

§2.3 DVCC-8086H 启动运行

完成上一节所述的安装工作之后,系统 LED 显示器 显示 “DVCC-86H”字样,

此时系统可以在两种方式下进入运行状态 。

1、DVCC-8086H 独立工作方式 (单机)

当系统显示器显示“DVCC-86H”时,按键盘上的任意键进入键盘命令工作状态,

显示器显示提示符“-”。根据第四章键盘操作说明,可以实现各种功能操作。 如存贮器

读写、寄存器读写、I/O 口读写、单步运行程序、 连续运行程序或断点运行程序等功能.

2、DVCC-8086H 联上位机工作方式

在确认通信电缆已连好后,当系统显示“DVCC-86H”时,按照本书第六章详细说

明进入运行状态 。此时,实验系统显示器上显示版本号 5.0 。实验系统上的键盘不用,

只用上位机键盘和鼠标。

5

第三章 DVCC-8086H 实验系统结构

§3.1 总体框图

DVCC-8086H 实验系统总体原理框图如下:

图 3-1

§3.2 元件位置图

见 图 3-2

§3.3 通用外围电路

DVCC-8086H 实验系统中设计了一系列实验所必需的通用外围电路: 包括逻辑电

平开关电路、发光二极管显示电路、时钟电路、单脉冲发生电路、继电器及驱动电路、直

流电机 及驱动电路、 步进电机及驱动电路、 电子音响及驱动电路、 模拟电压产生电路 ;

另外,系统中设计了系统总线扩展插座和通用 IC 插座 。

1、逻辑电平开关电路

该系统提供 8 个逻辑电平开关,每一个输出端有一插孔,分别标有 K1~K8 。开关

向上打时,输出高电平“1”,向下时输出低电平“0”。具体电路如图 3-3 所示 。

6

图 3-3

2、发光二极管显示电路

DVCC-8086H 实验系统提供有十二个发光二极管,其中四红、四绿、四黄。 其输

入端有十二个插孔,分别标有 L1~L12,它对应 1~12 个发光二极管。 输入端为高电平“1”

时,发光二极管灭;输入端为低电平“0”时,发光二极管亮。具体电路如图 3-4 所示 。

图 3-4

3、时钟电路

如图 3-5 所示,可以输出 1MHZ、2MHZ 两种时钟信号,供 0809A/D 转换器、8253A

定时器/计数器、8250A 串行接口实验使用 。

图 3-5

7

4、单脉冲发生电路

如图 3-6 所示,采用 RS 触发器产生±单脉冲。实验者每按一次 AN 按钮,即可

以从两个插座上分别输出一个正脉冲 SP 及负脉冲 /SP ,供“中断”、“DMA”、定时器/

计数器等实验使用 。

图 3-6

5、继电器及驱动电路

现代自动化控制设备中都存在一个电子与电气电路的互相联结问题。 一方面要使电子

电路的控制信号能够控制电气电路的执行元件(电动机、电磁铁、电灯泡等);另一方面又

要为电子电路的电气设备提供良好的电隔离,以保护电子电路和人身的安全。电子继电器

便能完成这一桥梁作用。

如图 3-7 所示,实验系统上设有一个+5V 直流继电器及相应的驱动电路,当其开

关量输入端“IN”插孔输入数字电平“1”时,继电器动作,常开触点闭合、 常闭触点断

开。通过相应的实验使学生了解开关量控制的一般原理 。

图 3-7 图 3-8

6、直流电机及驱动电路

如图 3-8 所示,系统中设计有一个+5V 直流电机及相应的驱动电路。小直流电机的

转速是由加到其输入端"DJ"的脉冲电平及占空比来决定的, 正向占空比越大转速越快,

反之越慢。驱动电路输出接直流电机。 7、步进电机及驱动电路

步进电机是工业控制及仪表中常用的控制元件之一, 它有输入脉冲与电机轴转角成 比例的特征,在智能机器人、软盘驱动器、数控机床中广泛使用,微电脑控制步进电机最

8

适宜。系统中设计使用 20BY-0 型号步进电机,它使用+5V 直流电源, 步距角为 18 度,

电机线圈由四相组成。如图 3-9 所示,即 A、B、C、D 四相。 驱动方式为二相激磁方式,

各线圈通电顺序表如下表 2-1 所示。驱动电路由脉冲信号控制, 所以调节脉冲信号的频

率便可改变步进电机的转速。图中 BA、BB、BC、BD 即为脉冲信号输入插孔,驱动器输

出 A、B、C、D 接步进电机。 8、电子音响及驱动电路

如图 3-10 所示,音响电路的控制输入插孔为“SIN”,控制输入信号经 386 放大后

接喇叭。 9、模拟信号电平产生电路

如图 3-11 所示,系统中提供 2 路 0~5V 模拟电压信号,供 A/D 转换实验时用。 10、总线扩展插座

采用 32 芯圆孔插座,引出数据总线 D0~7、地址总线 A0~A19、存贮器读写信号 MEMR、

MEMW、I/O 读写信号 IOW、IOR、复位 RST、时钟 CLK、电源 Vcc、地 GND,供学生

自行搭试各种实验电路用。 11、通用 IC 插座

系统扩有 IC-14、IC-16、IC-40 通用插座,IC-40 可采用自锁紧插座,这样既

可以插宽 IC-40、IC-28、IC-24,亦可以插窄 IC-24、IC-18、IC-20 等。 非常

灵活方便。

图 3-9

9

图 3-10 图 3-11

§3.4 各插头座定义

1、Z1

Z1 为电源,其定义见图 3-12。电源内置时,该插座装在反面。

图 3-12 图 3-13

2、Z2

Z2 为通信插座,定义见图 3-13。

3、Z3

Z3 为 8253 定时/计数器通道 0 有关信号线引出插座,作为用户扩展实验用。

4、Z4

Z4 为 8255 并行 I/O 接口芯片 PA 口引出插座,作扩展实验用。

5、Z5

Z5 为系统总线信号引出插座,为扩充接口实验而设置。如扩充 DMA8237A 实验、 串

行通信 8250A 实验、8259A 串级中断实验等。定义见板上印字层字符。

6 、Z6

Z6 是专为做级联中断而引出的信号插座。用于连级级联中断实验板,定义如图 2-14。

图 3-14 图 3-15

10

7、Z7

Z7 是 ADC 0809 通道 IN2~通道 IN7 的模拟量输入端和单级中断控制芯片 8259A 中断

源输入信号。定义见板上印字层字符。

8、J1

J1 为步进电机插座,其定义如图 3-15,系统中已和驱动电路连好。

9、J2

J2 为电子音响插座,其定义如图 3-16,系统中已和驱动电路连好。

10、DM

DM 为直流电机插座,其定义如图 3-17,系统中已和驱动电路连好。

图 3-16 图 3-17

11

第四章 键盘监控使用简介

§4.1 引言

本章说明用户如何通过键盘监控程序,在 DVCC-8086H 实验仪上进行各种,完成

各种实验。

一经接通电源,按下系统复位键 (RESET) 后,DVCC-8086H 实验仪中数码管显示

“DVCC-86H”,此时按 DVCC-8086H 实验仪中小键盘的任意键(除 Reset 和 Intr 外),

即可进入键盘监控, 键盘显示器上显示键盘监控提示符“ - ”。

§4.2 显示

八位 LED 显示器的显示内容及位置:

XXXX . XXXX

─── ───

地址段 数据段

用户可以通过键盘和显示完成下列操作:

1、 读/写寄存器内容

2、读/写存储器单元内容

3、 通过单步,断点功能来调试运行实验程序

4、 往 I/O 口读写数据

§4.3 键盘

§ 4.3.1 键盘排列如表 4-1

表 4-1

12

§4.3.2 键盘功能说明

在键盘监控状态下,用户可以通过键盘上的键,输入各种命令和数据。键盘上有 24

个键,右边为 8 个功能键,左边为 16 进制数字键。16 个十六进制数字键均是复合功能键,

其功能符号印在键盘上,左上角的英文字母是命令字的缩写,右下角的英文字母 是寄存

器名的缩写。下表 4-2 为十六进制键上所印字符的功能说明。

* 表示待扩展功能。

13

表 4-3 为 功能键 操作说明。

§4.4 总操作过程

DVCC-8086H 实验仪上电总清(或按 RESET)以后,显示器上显示“ DVCC-86H”

字样,此时只要按 DVCC-8086H 机上键盘的任意键(除 RESET 和 INTR 键),即可进入

键盘监控,显示器上显示提 示符“- ”,寄存器初始化值为:

14

SP=0300H,CS=0000H,DS=0000H,SS=0000H,ES=0000H,IP=1000H,FL=0000H

注意:键盘监控状态,段地址缺省值为 0000H。

§4.5 监控程序命令及操作 1、EB 显示修改存储器字节单元

操作: EB XXXX:XXXX Mem( 键名 段地址 键名 偏移地址 键名 ) 。即在监控提

示符“- ”状态下,按 EB 键,左起第四位数码管显示“ . ”,再输入段地址,后按

“ : ” 键,再输入偏移地址,最后按 Mem 键,如 EB 0000:1000 Mem 。

功能:对指定地址按字节显示存储器单元的内容。

地址由段地址和偏移地址两部份组成,用“ : ”分隔,如果缺省段值,则该地址的

段值为代码段 CS 中的当前值为 0000H。当按下“ Mem ”键后在地址段中开始显示段地

址,两秒钟后在地址段显示偏移地址,并在数据段显示该地址单元的内容。此时:

* 按“ Next ”键使地址加 1 再显示;

* 按“ Last ”键使地址减 1 再显示;

* 键入十六进制数据后,再按 Next 键,则将改写现行地址单元的内容;改写后按

“ Last ”键使地址减 1 再显示。

* 按“ MON ”键则返回监控,显示提示符“- ”;键入其它键则出错,在地址段

显示“-ERR”。

2、EW 显示修改存储器字单元

操作: EW XXXX:XXXX Mem

功能: 对指定地址按字显示存储器单元的内容。其它同 EB,只是按“ Next”和“ Last ”

时地址增量和减量为 2。

3、ER 显示修改寄存器内容

操作:ER xx Mem

功能:对指定寄存器内容进行显示。如 ER AX Mem,当按下 Mem 键后,在数据段

上显示指定寄存器 AX 中的内容 。此时

* 若按 Next 键,则依次显示下一个寄存器的内容,直到 FL 寄存器为止,返回监控,

不循环。寄存器次序为 AX、BX、CX、DX、SP、BP、SI、DI、CS、DS、SS、ES、IP、

FL。

* 若键入十六进制数据后再按 Next 键,则该寄存器的内容被修改。

* 若按 MON 键,则返回监控。按其它键出错,地址段上显示“-ERR”。

4、IB、IW 以字节或字从 I/O 端口读入数据

15

操作:IB (or IW) XXXX Mem

功能:从指定的 I/O 端口地址,读入一个 8 位的字节或 16 位的字,并显示在数据段上,

再按

Mem 键,再次从该 I/O 口地址读入数据,并显示在数据段上,由于 I/O 端口地址最大寻址

范围为 64K,因而对于端口地址不允许用段值。

5、OB、OW 以字节或字对 I/O 端口写数据

操作:OB (or OW) XXXX Mem XX (or XXXX) Mem

功能:从指定的 I/O 端口地址,写入一个 8 位的字节或 16 位的字,写完后将数据段显

示清掉,等待下一个数据字节或数据字的输入,若按 MON 键,则返回监控。

6、MV 存储器中的数据块移动

操作: MV XXXX:XXXX Next XXXX Next XXXX :XXXX Move

功能:在存储器中成组移动数据。

按“ MV ”键后,地址段中有 3 个小数点亮起来,它表示要求输入 3 个项目,

每一个项目输入完后,最左边的小数点消失,余下的小数点继续亮,表示还要输入地址 ,

MV 命令要求输入的项目按以下顺序:

* 要传送数据块的起始地址。

* 要传送数据块的末地址。

* 数据块要传送到的目的地址。

其中的起始地址和目的地址包含段地址和偏移地址,末地址不允许有段地址,并

且传送数据块的大小要限制在 64KB 范围内,并要求终止地址大于起始地址,当按下 Move

键时,就进行数据块传送,传送完毕显示监控提示符“-”。

7、GO 连续或断点运行实验程序

操作:GO XXXX :XXXX Next XXXX Exec ( 断点运行时)

GO XXXX :XXXX Exec (连续运行时)

按下 GO 命令键时,在地址段上就显示出当前 IP (程序指针)的内容,在数据段上显示

IP 指示的存贮单元内容,此时可以输入一个起动地址。如果要求输入起动地址的话,从键

盘上输入此地址(当输入一个地址时,数据段的显示是空的)。为使程序开始执行,要按下

Exec 键 ,当按下该键时,程序便开始运行,在显示器上显示“E ”。

要想从运行的用户程序控制返回监控,可以按系统复位键 RESET 和暂停键 INTR

中的任意一键。如果按 RESET 键,则重新进入监控程序,显示监控提示符“-”,并对

所有寄存器设置初值。如果按 INTR 键,则中断程序的运行,保护所有寄存器的内容,

16

返回监控。若再按 GO 会继续运行用户程序。

如果您在命令行中设置了断点地址,则当程序运行到断点地址时,会自动停下来,显

示“ -br ”,同时保护所有寄存器的内容。此时若再按 GO 键,亦会继续运行用户程序。

注意:

* 在第一条命令行中 Next 后面的 XXXX 表示断点地址。

* 断点地址中段地址为缺省值,其意义是:如果起始地址中包含有段地址,则断点地

址的段地址和其相同;如果起始地址中亦缺省段地址,则断点地址和起始地址的段地址默

认为 CS 中的内容,即为 0000H。

* 被指定的断点地址必须是一条指令的第一个字节所在地址。

* 当程序运行到断点地址后返回监控时,该断点地址即被取消,因此程序带断点运

行时,每次都必须指定一个断点地址。

* 如果设置一个断点以后,由于程序不能正常运行到该地址,通过按 RESET 键或

INTR 键返回监控后,原断点处的内容应该用 EB 命令恢复。

* 执行 GO 命令时,如显示“ SS SP Err ”,表示用户栈和监控栈重叠,用户应调

整 SP 指针避免冲突。

8、ST 单步运行命令

操作: ST XXXX :XXXX Step

功能:单步运行用户程序

按 ST 命令键后,地址段将显示当前 IP 的内容,并在数据段上显示 IP 所指向的存储

单元的内容,若显示的地址和您所选的起始地址不同,那么就键入您的起始地址,再按 Step

键,开始单步运行用户程序,执行完一条指令,将下一条要执行指令的偏移地址显示在地

址段上,这个地址中的指令字节显示在数据段上。再按 Step 键继续步进到下一条指令。

如果要修改起始地址可以键入新的地址,再按 Step 键就从新的起始地址开始单步运行。

按 MON 键退出单步命令,返回监控。

17

第五章 实验指导

§5.1 概述:

本章是为 DVCC- 8086H 微机原理及接口实验系统编写的详细实验指导书, DVCC

-8086H 实验系统上提供的全套实验是为微机原理、微机接口应用、 计算机控制技术等

课程配置的, 书中详细叙述了各实验的实验目的、实验原理、实验内容、 实验原理图和

软件框图、软件清单以及实验步骤。 减轻和免除了主讲教师和实验指导老师为设计、准

备、调试实验线路和实验程序所需的工作量, 节约了宝贵的时间, 提高了教学效率。

本指导书上所有软硬件都已经过调试运行,需特别说明的四点是:

1、所有实验程序用两种方式存放:其一放在随机软盘中,源程序( . ASM) 在 8HASM

子目录中,可执行文件 ( . EXE) 在 8HEXE 子目录中,每个实验程序的执行文件的装入

地址详见附录一;其二是存放在 DVCC-8086H 系统监控中,各个实验程序在 EPROM 中

的存放地址详见附录二。

当你选择DVCC-8086H独立使用时,你可以通过DVCC-8086H自带的键盘显示器,

输入各种命令,显示实验结果,完成各个实验,这种方式为没有 PC 机的用户带来极大方

便。

下面各个实验的实验步骤是按独立方式进行的,运行的实验程序在系统监控中。

当你选择 DVCC-8086H 和上位机联机使用时, 所有的操作均在上位机的键盘上进

行。 此时你既可以运行系统监控中的实验程序, 亦可以运行\DVCC86H\8HEXE 目录中

的实验程序。

2、系统监控中的实验程序,不能以断点方式运行。

3、实验原理图上的粗实线,表示用户在实验时要用导线连接起来的。

4、所有实验都是相互独立的,次序上也没有固定的先后关系, 在使用本系统进行教

学时,教师可以根据本校(院)的教学要求,选择相应的实验。

§5.2 实验项目:

18

实验一 软件实验(一)

一、实验目的

1、熟悉汇编语言的工作环境。

2、通过一个简单的程序,了解如何汇编、连接和调试一个汇编语言程序。

3、了解 DEBUG 调试程序中常用命令的使用方法。

4、通过运行简单的汇编语言程序 ,初步了解汇编语言源程序的特点。

二、实验内容和要求

使用编辑程序(记事本或写字板),输入例 1 程序后进行汇编、连接和运行,并使用

DEBUG 中的各种命令进行调试,分析微型计算机的工作原理和汇编语言源程序的特点。

三、实验主要仪器设备和材料

微型计算机

四、实验方法、步骤及结果测试

1、确定源程序的存放目录

建议源程序存放的目录名为 ASM(或 MASM),并放在 C 盘或 D 盘的根目录下。

2、建立 ASM 源程序

建立 ASM 源程序可以使用记事本或写字板等文本编辑器。输入下面的代码,保存。

文件名为 ADDSUB(也可取其它的名字), 扩展名为.ASM。

DATA SEGMENT

NUM DB 21H,9H,21H

RESULT DW ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

LEA SI,NUM

LEA DI,RESULT

MOV AL,[SI]

MOV BL,[SI+1]

MUL BL

MOV BL,[SI+2]

19

MOV BH,0

SUB AX,BX

MOV [DI],AX

MOV AH,4CH

INT 21H

CODE ENDS

END START

3、用 MASM.EXE 汇编源程序产生 OBJ 目标文件

源文件 ADDSUB.ASM 建立后,要使用汇编程序对源程序文件汇编,汇编后产生二进

制的目标文件(.OBJ 文件)。具体操作如下:

方法一:在 Windows 中操作

用资源管理器打开源程序目录 C:\ASM,把 ADDSUB.ASM 拖到 MASM.EXE 程序图标上。

方法二:在 DOS 命令提示符窗口中操作

选择“开始”→“程序”→“附件”→“命令提示符”,打开 DOS 命令提示符窗口,然后

用 CD 命令转到源程序目录下(假设目录名为 ASM 并放在 D 盘的根目录下),接着输入

MASM 命令:

C:\Documents and Settings\Administrator>D:<回车>

D:>CD ASM<回车>

D:\ASM>MASM ADDSUB.ASM<回车>

操作时的屏幕显示如图 5—1 所示。

图 5—1 在 DOS 命令提示符窗口中进行汇编

不管用以上二个方法中的哪个方法,进入 MASM 程序后,都会提示让你输入目标文

件名(Object filename),并在方括号中显示默认的目标文件名,后面的两个提示为可选项,

20

都可直接按回车。注意,若打开 MASM 程序时未给出源程序名,则 MASM 程序会首先提

示让你输入源程序文件名(Source filename),此时输入源程序文件名 ADDSUB.ASM 并回

车,然后进行的操作与上面完全相同。

如果没有错误,MASM 就会在当前目录下建立一个 ADDSUB.OBJ 文件(名字与源文

件名相同,只是扩展名不同)。如果源文件有错误,MASM 会指出错误的行号和错误的原

因。图 4—2 是在汇编过程中检查出一个错误的例子。在这个例子中,可以看到源程序的

错误类型有两类:

图 5—2 有错误的汇编过程例子

警告错误(Warning Errors)。警告错误不影响程序的运行,但可能会得出错误的结果。

此例中无警告错误。

严重错误(Severe Errors)。对于严重错误,MASM 将无法生成 OBJ 文件。此例中有

一个严重错误。

在错误信息中,园括号里的数字为有错误的行号(在此例中,一个错误出现在第 3

行),后面给出了错误类型及具体错误原因。如果出现了严重错误,你必须重新进入文本

编辑器,根据错误的行号和错误原因来改正源程序中的错误,直到汇编没有错为止。

注意,汇编程序只能指出程序的语法错误,而无法指出程序逻辑的错误。

4、用 LINK.EXE 产生 EXE 可执行文件

在上一步骤中,汇编程序产生的是二进制目标文件(OBJ 文件),并不是可执行文件,

要想使我们编制的程序能够运行,还必须用连接程序(LINK.EXE)把 OBJ 文件转换为可

执行的 EXE 文件。具体操作如下:

方法一:在 Windows 中操作

用资源管理器打开源程序目录 D:\ASM,把 ADDSUB.OBJ 拖到 LINK.EXE 程序图标

上。

21

方法二:在 DOS 命令提示符窗口中操作

在打开的 DOS 命令提示符窗口输入 LINK 命令:

D:\ASM>LINK ADDSUB<回车>

操作时的屏幕显示如图 5—3 所示。

图 5—3 把 OBJ 文件连接成可执行文件

不管用以上二个方法中的哪个方法,进入 LINK 程序后,都会提示让你输入可执行文

件名(Run file),并在方括号中显示默认的可执行文件名,后面的两个提示为可选项,都

可直接按回车。注意,若打开 LINK 程序时未给出 OBJ 文件名,则 LINK 程序会首先提

示让你输入 OBJ 文件名(Object Modules),此时输入 OBJ 文件名 ADDSUB.OBJ 并回车,

然后进行的操作与上面完全相同。

如果没有错误,LINK 就会建立一个 ADDSUB.EXE 文件。如果 OBJ 文件有错误,LINK

会指出错误的原因。对于无堆栈警告(Warning:NO STACK segment)信息,可以不予

理睬,它不影响程序的执行。如链接时有其它错误。须检查修改源程序,重新汇编、连接,

直到正确。

5.执行程序和调试程序

建立了 ADDSUB.EXE 文件后,就可以直接在 DOS 下运行此程序,如下所示:

D:\ASM>ADDSUB〈回车〉

程序运行结束后,返回 DOS。如果运行结果正确,那么程序运行结束时结果会直接显

示在屏幕上。如果程序不显示结果,我们如何知道程序是否正确呢?例如,这里的

ADDSUB.EXE 程序并未显示出结果,所以我们不知道程序执行的结果是否正确。这时,

我们就要使用 DEBUG 调试工具来查看运行结果。此外,大部分程序必须经过调试阶段才

能纠正程序执行中的错误,调试程序时也要使用 DEBUG。DEBUG 的主要命令见附录。

这里我们介绍几个最常用的命令。先进入DEBUG并装入我们要调试的程序ADDSUB.EXE,

22

键入如下:

D:\ASM>DEBUG ADDSUB.EXE〈回车〉

-----

DEBUG 以短划线-来回答。我们的目的是要察看我们程序的运行结果,因此我们希望

启动程序运行后应停在返回 DOS 以前,为此可先用反汇编命令 U 来确定我们所要设定的

断点地址。键入 U 后显示信息如图 5—4 所示。

图 5—4 用 DEBUG 调试时,U 命令的显示情况

图中最左边给出了程序所在地的段地址:偏移地址,然后是机器语言指令,右边则是

汇编语言指令,我们所需要的断点是在 MOV [DI],AX 指令运行完后,所以选择其下一条

指令的偏移地址 001D 为断点。在确定断点后,就可以用 G 命令使程序启动运行,同时设

定断点 001D 如下,如图 5—5 所示。

23

图 5—5 用 G 命令使程序启动运行,同时设定断点

程序停在断点处,并显示出所有寄存器以及各标志位的当前值,最后一行给出下

一条将要执行指令的地址、机器语言及汇编语言。我们可以从显示的寄存器内容来了解程

序运行是否正确。单从寄存器的内容看不到程序运行的结果,而需要根据 DS 寄存器的内

容,用 D 命令察看数据段的有关区域如图 5—6 所示

,。

图 5—6 用 DEBUG 调试时,D 命令的显示情况

其中,左边给出每一小段的起始地址(用段地址:偏移地址表示),然后顺序给出小

段中每个字节单元的内容,中间是用十六进制数表示的内容,右边则是用字符表示的内容。

用手工计算看 21H×09H-21H=0108H 是否成立?

用 T 命令调试程序,分析微型计算机的工作原理和汇编语言源程序的特点,如图 5

—7 所示。

24

图 5—7 用 DEBUG 调试时,T 命令的显示情况

我们达到目的后,可以用 Q 命令退出 DEBUG 程序回到 DOS。

五、实验报告要求

1、如何汇编、连接和运行一个汇编语言程序。 2、如何启动和退出 DEBUG 程序。 3、整理每个 DEBUG 命令使用的方法,实际示例及执行结果。 4、分析微型计算机的工作原理。

六、思考题

能否不用乘法指令,实现乘法运算?

25

实验二 软件实验二

——分支程序设计

一、实验目的

1、学习及掌握汇编语言源程序的书写格式,明确程序中各段的功能和相互之间的关系。 2、学会使用 EDIT、MASM、LINK、DEBUG 等软件工具。 3、熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。 4、掌握分支程序的设计技巧

二、实验要求

1、输入并调试运行程序 1,完成后写出程序所完成的功能及程序运行结果; 2、在程序 1 的基础上进行修改编制实现求最小数功能的程序。

三、实验仪器

微型计算机一台

四、实验内容( 程序 zxz.asm )

DATA SEGMENT TAB DW -15H,-85H,-234H MAX DW ? DATA ENDS STACK SEGMENT STACK ’STACK’ STA DB 10 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AX,TAB CMP AX,TAB+2 JGE L1 MOV AX,TAB+2 L1: CMP AX,TAB+4 JGE L2 MOV AX,TAB+4 L2: MOV MAX,AX MOV AH,4CH INT 21H

26

CODE ENDS END START

五、实验步骤

1、调用 MSDOS 环境,切换改变路径到 D:\masm>

2、用编辑程序编辑程序 zxz,得到 ASM 文件 指令格式:EDIT.ASM

3、用汇编程序汇编程序 ZXZ ,得到 OBJ 文件 指令格式:MASM ZXZ.ASM

4、用连接程序生成可执行文件,得到 EXE 文件 指令格式:LINK ZXZ.OBJ

5、用 DEBUG 检查程序运行结果 指令格式:DEBUG ZXZ.EXE

27

6、修改程序实现所要求的功能。 五、实验思考

总结 debug 调试参数及其功能。

28

实验三 软件实验三

——循环程序设计

一、实验目的

1、学习及掌握汇编语言源程序的书写格式,明确程序中各段的功能和相互之间的关系。

2、学会使用 EDIT、MASM、LINK、DEBUG 等软件工具。

3、熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。

4、掌握循环程序的设计技巧。

二、实验要求

1、输入并调试运行程序 1,完成后写出程序所完成的功能及程序运行结果;

2、在程序 1 的基础上进行修改,编制实现求从 1 开始连续 100 个正数之和的程序并上

机调试得到结果。

三、实验仪器

微型计算机一台

四、实验内容( 程序 qh.asm )

DATA SEGMENT

BUF DW ?

DATA ENDS

STACK SEGMENT STACK

STA DB 10 DUP(?)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,SS:STACK,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV AX,0

MOV BX,3

MOV CX,15

L: ADD AX,BX

ADD BX,2

DEC CX

29

JNZ L

MOV BUF,AX

MOV AH,4CH

INT 21H

CODE ENDS

END START

五、实验步骤

1、调用 MSDOS 环境,切换改变路径到 D:\masm>

2、用编辑程序编辑程序 qh,得到 ASM 文件

指令格式:EDIT.ASM

3、用汇编程序汇编程序 qh ,得到 OBJ 文件

指令格式:MASM qh.ASM

4、用连接程序生成可执行文件,得到 EXE 文件

指令格式:LINK qh.OBJ

30

5、用 DEBUG 检查程序运行结果

指令格式:DEBUG qh.EXE

6、修改程序实现所要求的功能。

五、实验思考

总结 debug 调试参数及其功能,简述循环程序设计要点。

31

实验四 存储器读写实验

一、实验目的

1、熟悉静态 RAM 的使用方法,掌握 8088 微机系统扩展 RAM 的方法。

2、熟悉静态 RAM 读写数据编程方法。

二、实验内容

1、对指定地址区间的 RAM(2000H~23FFH)先进行写数据 55AAH, 然后将其内容

读出再写到 3000H~33FFH 中。

2、修改程序,对指定地址区间的 RAM(1000H~100FH)分别写入 01H,02H,

03H.04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH, 然后将其内容读出再写

到 2000H~200FH 中。

三、硬件电路(系统中已连接好)

四、实验程序清单

CODE SEGMENT

ASSUME CS:CODE

START: MOV AX,0H

MOV DS,AX

MOV BX,2000H

MOV AX,55AAH

MOV CX,03FFH

RAMW1: MOV DS:[BX],AX

ADD BX,0002H

LOOP RAMW1

MOV AX,2000H

MOV SI,AX

MOV AX,3000H

MOV DI,AX

MOV CX,0400H

CLD

REP MOVSB

RAMW2: JMP RAMW2

CODE ENDS

32

END START

五、实验步骤

1、运行实验程序

在系统显示“DVCC-86H”状态下,按任意键,系统显示命令提示符“-”

按 GO 键,系统显示“1000 XX”

输入 F000 : B690

按 EXEC 键

2、稍后按 RESET 键退出, 用存贮器读方法检查 2000H~ 23FFH 中的内容和

3000~33FF 中的内容应都是 55AA。

33

实验五 8255A 可编程并行口实验(一)

一、实验目的

1、掌握并行接口芯片 8255A 和微机接口的连接方法。

2、掌握并行接口芯片 8255A 的工作方式及其编程方法。

二、预备知识

1、8255A 结构

8255A 是可编程并行接口芯片,双列直插式封装,用+5V 单电源供电,如图 5- 6 是

8255A 的逻辑框图,内部有 3 个 8 位 I/O 端口:A 口、B 口、C 口;也可以分为各有 12 位

的两组:A 和 B 组,A 组包含 A 口 8 位和 C 口的高四位,B 组包含 B 口 8 位和 C 口的低

4 位;A 组控制和 B 组控制用于实现方式选择操作;读写控制逻辑用于控制芯片内寄存器

的数据和控制字经数据总线缓冲器送入各组接口寄存器中。由于 8255A 数据总线缓冲器是

双向三态 8 位驱动器,因此可以直接和 8088 系统数据总线相连。

2、8255A 端口地址见 表 5-1

表 5-1

34

图 5-12

3、8255A工作方式

8255A 芯片有三种工作方式: 方式 0、方式 1、方式 2。 它通过对控制寄存器写入不

同的控制字来决定其三种不同的工作方式。

方式 0 : 基本输入/输出

图 5-7(a) 方式 0 引脚功能

如图 5-13(a)所示。 该方式下的 A 口 8 位和 B 口 8 位可以由输入的控制字决定为

输入或输出, C 口分成高 4 位(PC7~PC4)和低 4 位(PC3~PC0)两组,也有控制字决定其

输入或输出。 需注意的是:该方式下,只能将 C 口其中一组的四位全部置为输入或输出。

方式 1 : 选通输入/输出

图 5-13(b)方式 1 输入 图 5-13(c)方式 1 输出

35

如图 5-13(b)、(c)所示。该方式又叫单向输入输出方式,它分为 A、B 两组,A 组

由数据口 A 和控制口 C 的高 4 位组成,B 组由数据口 B 和控制口 C 的低 4 位组成。数据

口的输入/输出都是锁存的,与方式 0 不同,由控制字来决定它作输入还是输出。C 口的相

应位用于寄存数据传送中所需的状态信号和控制信息。

方式 2 : 双向输入输出

图 5-13(D)方式 2 双向输入输出

如图 5-13(d)所示。 本方式只有 A 组可以使用,此时 A 口为输入输出双向口,C

口中的 5 位(PC3~PC7)作为 A 口的控制位。

4、8255A 控制字

(1) 方式选择控制字

(2) PC 口按位置/复位控制字

36

三、实验内容

1、实验原理

如实验原理图 5-14 所示,PC 口 8 位接 8 个开关 K1~ K8,PB 口 8 位接 8 个发光二

极管,从 PC 口读入 8 位开关量送 PB 口显示。拨动 K1~ K8,PB 口上接的 8 个发光二极

管 L1~ L8 对应显示 K1~ K8 的状态。

图 5-14

2、实验线路连接

(1)8255A 芯片 PC0~ PC7 插孔依次接 K1~ K8。

(2)8255A 芯片 PB0~PB7 插孔依次接 L1 ~ L8。

(3)8255A 的 CS 插孔接译码输出 070H-07FH 插孔。

四、实验软件框图

37

五、实验软件清单

CODE SEGMENT

ASSUME CS:CODE

IOCONPT EQU 0073H

IOCPT EQU 0072H

IOBPT EQU 0071H

CONTPORT EQU 00DFH

DATAPORT EQU 00DEH

DATA1 EQU 0500H

START: JMP IOLED

IOLED: CALL FORMAT

CALL LEDDISP

MOV AL,89H

MOV DX,IOCONPT

OUT DX,AL

NOP

NOP

NOP

IOLED1: MOV DX,IOCPT

IN AL,DX

38

MOV DX,IOBPT

OUT DX,AL

MOV CX,0FFFFH

DELAY: LOOP DELAY

JMP IOLED1

LEDDISP:MOV AL,90H

MOV DX,CONTPORT

OUT DX,AL

MOV BYTE PTR DS:[0600H],00LED1: CMP BYTE PTR DS:[0600H],07H

JA LED2

MOV BL,DS:[0600H]

MOV BH,0H

MOV AL,CS:[BX+DATA1]

MOV DX,DATAPORT

OUT DX,AL

ADD BYTE PTR DS:[0600H],01H

JNZ LED1

LED2: RET

FORMAT: MOV BX,0

MOV WORD PTR DS:[BX+0500H],4006H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],4040H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],6D6DH

ADD BX,2

MOV WORD PTR DS:[BX+0500H],7F5BH

RET

CODE ENDS

END START

六、实验步骤

1、按图 5-14 连好线路。

39

2、运行实验程序。

在系统显示“DVCC-86H”状态下,按任意键,显示器显示“-”。

按 GO 键,显示 “1000 XX”

输入 F000 : B160

再按 EXEC 键,在 DVCC-8086H 显示上显示器“8255-1”,同时拨动 K1~K8,L1~L8

会跟着亮灭。

8255A 可编程并行口实验(二)

一、实验目的

进一步掌握 8255A 可编程并行口使用方法。

二、实验内容

1、实验原理

实验原理图如图 5-15所示,PB4 ~ PB7和 PC0 ~ PC7分别与发光二极管电路 L1~ L12

相连,本实验为模拟交通灯实验。交通灯的亮灭规律如下:

设有一个十字路口,1、3 为南北方向,2、4 为东西方向,初始为四个路口的红灯全

亮,之后,1、3 路口的绿灯亮,2、4 路口的红灯亮,1、3 路口方向通车; 延时一段时间

后,1、3 路口的绿灯熄灭,而 1、3 路口的黄灯开始闪烁,闪烁若干次以后,1、3 路口红

灯亮, 而同时 2、4 路口的绿灯亮,2、4 路口方向通车;延时一段时间后,2、4 路口的

绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到 1、3 路口方向,之后重复上述

过程。

图 5-15

40

8255A 的 PB4~ PB7 对应黄 灯,PC0 ~ PC3 对应红灯,PC4~ PC7 对应绿灯。8255A工作于模式 0,并置为输出。由于各发光二极管为共阳极,使其点亮应使 8255A 相应端口

清 0。 2、实验线路连接

(1) 8255CS 插孔连译码输出 070H-07FH 插孔。 (2) L1 — PC4 L4 — PC5 L7—PC6 L10 — PC7 L2 — PB4 L5 — PB5 L8 —PB6 L11 — PB7 L3 — PC0 L6 —PC1 L9 —PC2 L12 — PC3

三、实验软件框图

41

四、实验软件清单

CODE SEGMENT

ASSUME CS:CODE

IOCONPT EQU 0073H

IOAPT EQU 0070H

IOBPT EQU 0071H

IOCPT EQU 0072H

IOBDATA EQU 0500H

CONTPORT EQU 00DFH

DATAPORT EQU 00DEH

DATA1 EQU 0640H

START: JMP IOLED

IOLED: CALL FORMAT

CALL LEDDISP

MOV AX,0H

MOV DS,AX

MOV AL,82H

MOV DX,IOCONPT

OUT DX,AL

MOV DX,IOBPT

IN AL,DX

MOV BYTE PTR DS:[0501H],AL

MOV DX,IOCONPT

MOV AL,80H

OUT DX,AL

MOV DX,IOBPT

MOV AL,DS:[0501H]

OR AL,0F0H

OUT DX,AL

MOV DX,IOCPT

MOV AL,0F0H

42

OUT DX,AL

CALL DELAY1

IOLED0: MOV AL,10100101B

MOV DX,IOCPT

OUT DX,AL

CALL DELAY1

CALL DELAY1

OR AL,0F0H

OUT DX,AL

MOV CX,8H

IOLED1: MOV DX,IOBPT

MOV AL,DS:[0501H]

AND AL,10101111B

OUT DX,AL

CALL DELAY2

OR AL,01010000B

OUT DX,AL

CALL DELAY2

LOOP IOLED1

MOV DX,IOCPT

MOV AL,0F0H

OUT DX,AL

CALL DELAY2

MOV AL,01011010B

OUT DX,AL

CALL DELAY1

CALL DELAY1

OR AL,0F0H

OUT DX,AL

MOV CX,8H

IOLED2: MOV DX,IOBPT

43

MOV AL,DS:[0501H]

AND AL,01011111B

OUT DX,AL

CALL DELAY2

OR AL,10100000B

OUT DX,AL

CALL DELAY2

LOOP IOLED2

MOV DX,IOCPT

MOV AL,0F0H

OUT DX,AL

CALL DELAY2

JMP IOLED0

DELAY1: PUSH AX

PUSH CX

MOV CX,0030H

DELY2: CALL DELAY2

LOOP DELY2

POP CX

POP AX

RET

DELAY2: PUSH CX

MOV CX,8000H

DELA1: LOOP DELA1

POP CX

RET

LEDDISP:MOV AL,90H

MOV DX,CONTPORT

OUT DX,AL

MOV BYTE PTR DS:[0600H],00

LED1: CMP BYTE PTR DS:[0600H],07H

44

JA LED2

MOV BL,DS:[0600H]

MOV BH,0H

MOV AL,CS:[BX+DATA1]

MOV DX,DATAPORT

OUT DX,AL

ADD BYTE PTR DS:[0600H],01H

JNZ LED1

LED2: RET

FORMAT: MOV BX,0

MOV WORD PTR DS:[BX+0640H],405BH

ADD BX,2

MOV WORD PTR DS:[BX+0640H],4040H

ADD BX,2

MOV WORD PTR DS:[BX+0640H],6D6DH

ADD BX,2

MOV WORD PTR DS:[BX+0640H],7F5BH

RET

CODE ENDS

END START

五、实验步骤

1、按图 5-15 连好实验线路

2、运行实验程序

在系统显示“DVCC- 86H”状态下,按任意键,系统显示命令提示符“-”。

按 GO 键, 显示 “1000 XX”

输入 F000 : B1B0

按 EXEC 键,在 DVCC-8086H 上显示“8255-2”。同时 L1~L12 发光二极管模拟

交通灯显示。

六、思考题

设计实现:根据以上实验设计程序,利用发光二极管 L1,L2,L3,L4 以二进制形式统计

并显示 K1~k8 中处于高电平的个数

45

实验六 8253A 定时/计数器实验

一、实验目的

学习 8253A 可编程定时/计数器与 8088CPU 的接口方法;了解 8253A 的工作方式; 掌

握 8253A 在各种方式下的编程方法。

二、预备知识

1、8253A 内部结构

8253A 定时/计数器具有定时、计数双功能。它具有三个相同且相互独立的 16 位减法

计数器,分别称为计数器 0、计数器 1、计数器 2。每个计数器计数频率为 0~2MHZ, 其

内部结构如图 5-16 所示。由于其内部数据总线缓冲器为双向三态,故可直接接在系统数

据总线上,通过 CPU 写入计数初值,也可由 CPU 读出计数当前值;其工作方式通过控制

字确定;图中的读写控制逻辑,当选中该芯片时, 根据读写命令及送来的地址信息控制

整个芯片工作;图中的控制字寄存器用于接收数据总线缓冲器的信息:当写入控制字时,

控制计数器的工作方式,当写入数据时则装入计数初值,控制寄存器为 8 位, 只写不能

读。

图 5-16 8253A 内部结构图 图 5-17 计数器 内部结构图

2、计数器内部结构

如图 5-17 所示,每个计数器由一个 16 位可预置的减 1 计数器组成,计数初值可保

存在 16 位的锁存器中,该锁存器只写不能读。在计数器工作时,初值不受影响,以便进

行重复计数。图中每个计数器有一个时钟输入端 CLK 作为计数脉冲源, 计数方式可以是

二进制,计数范围 1~10000H,也可以是十进制,计数范围 1~65536。门控端 GATE 用于

控制计数开始和停止。输出 OUT 端当计数器计数值减到零时,该端输出标志信号 。

46

3、8253A 端口地址选择见 表 5-2

表 5—2

4、8253A 功能

8253 A 既可作定时器又可作计数器:

(1) 计数:计数器装入初值后,当 GATE 为高电平时,可用外部事件作为 CLK 脉冲

对计数值进行减 1 计数,每来一个脉冲减 1,当计数值减至 0 时,由 OUT 端输出一个标

志信号。

(2) 定时:计数器装入初值后,当 GATE 为高电平时,由 CLK 脉冲触发开始自动计

数,当计数到零时,发计数结束定时信号。

除上述典型应用外,8253A 还可作频率发生器、分频器、实时钟、单脉冲发生器等。

5、8253A 控制字

47

说明 :

(1) 8253 A 每个通道对输入 CLK 按二进制或二十进制从预置值开始减 1 计数,减到

0 时从 OUT 输出一个信号。

(2) 8253 A 编程时先写控制字,再写时间常数。

6、8253A 工作方式

(1) 方式 0:计数结束产生中断方式

当写入控制字后,OUT 变为低电平,当写入初值后立即开始计数,当计数结束时,

变成高电平。

(2) 方式 1:可编程单次脉冲方式

当初值装入后且 GATE 由低变高时,OUT 变为低电平,计数结束变为高电平。

(3) 方式 2:频率发生器方式

当初值装入时,OUT 变为高;计数结束,OUT 变为低。该方式下如果计数未结束,

但 GATE 为低时,立即停止计数,强逼 OUT 变高,当 GATE 再变高时,便启动一次新的

计数周期。

(4) 方式 3:方波发生器

当装入初值后,在 GATE 上升沿启动计数,OUT 输出高电平; 当计数完成一半时,

OUT 输出低电平。

(5) 方式 4:软件触发选通

当写入控制字后,OUT 输出为高;装入初值且 GATE 为高时开始计数,当计数结束,

OUT 端输出一个宽度等于一个时钟周期的负脉冲。

(6) 方式 5:硬件触发选通

在 GATE 上升沿启动计数器,OUT 一直保持高电平;计数结束,OUT 端输出一个宽

度等于一个时钟周期的负脉冲。

三、实验内容

本实验原理图如图 5-18 所示,8253A 的 A0、A1 接系统地址总线 A0、A1,故 8253A

有四个端口地址,如端口地址表 5-2 所示。8253A 的片选地址为 48H~ 4FH。 因此, 本

实验仪中的 8253A 四个端口地址为 48H、49H、4AH、4BH,分别对应通道 0、通道 1、通

道 2 和控制字。采用 8253A 通道 2,工作在方式 3(方波发生器方式),输入时钟 CLK2 为

1MHZ, 输出OUT2 要求为1KHZ的方波,并要求用接在GATE0引脚上的导线是接地(“0”

电平)或甩空(“1”电平)来观察 GATE 对计数器的控制作用,用示波器观察输出波形。

48

图 5—18 四、实验线路连接

1、8253A 芯片的 CLK2 引出插孔连分频输出插孔 1MHZ。 2、8253A 的 GATE2 接+5V。

五、实验软件框图

六、实验程序清单

CODE SEGMENT ASSUME CS:CODE TCONTRO EQU 004BH TCON2 EQU 004AH CONTPORT EQU 00DFH DATAPORT EQU 00DEH DATA1 EQU 0500H START: JMP TCONT TCONT: CALL FORMAT CALL LEDDISP MOV DX,TCONTRO

49

MOV AL,0B6H OUT DX,AL MOV DX,TCON2 MOV AL,00 OUT DX,AL MOV AL,10H OUT DX,AL HLT LEDDISP:MOV AL,90H MOV DX,CONTPORT OUT DX,AL MOV BYTE PTR DS:[0600H],00 LED1: CMP BYTE PTR DS:[0600H],07H JA LED2 MOV BL,DS:[0600H] MOV BH,0H MOV AL,CS:[BX+DATA1] MOV DX,DATAPORT OUT DX,AL ADD BYTE PTR DS:[0600H],01H JNZ LED1 LED2: RET FORMAT: MOV BX,0 MOV WORD PTR DS:[BX+0500H],4006H ADD BX,2 MOV WORD PTR DS:[BX+0500H],4040H ADD BX,2 MOV WORD PTR DS:[BX+0500H],6D4FH ADD BX,2 MOV WORD PTR DS:[BX+0500H],7F5BH RET CODE ENDS END START

七、实验步骤

50

1、按图 5-18 连好实验线路 2、运行实验程序 在系统显示“DVCC- 86H”状态下,按任意键,系统显示命令提示符“-”。 按 GO 键,系统显示“1000 XX” 输入 F000 : B290 再按 EXEC 键,显示“8253-1” 用示波器测量 8253A 的 OUT2 输出插孔,应有频率为 1KHZ 的方波输出。幅值 0~5V。

八、思考题 修改程序,采用 8253A 通道 2,工作在方式 3(方波发生器方式),输入时钟 CLK2 为2MHZ, 输出 OUT2 要求为 1KHZ 的方波

51

实验七 使用 8259A 的单级中断控制实验

一、实验目的

1、掌握中断控制器 8259A 与微机接口的原理和方法。 2、掌握中断控制器 8259A 的应用编程。

二、预备知识

1、8259A 的内部结构

8259A 是专为控制优先级中断而设计的芯片。它将中断源按优先级排队、辨认中断源、

提供中断向量的电路集成于一体,只要用软件对它进行编程,就可以管理 8 级中断。 如图 5-19 所示,它由中断请求寄存器(IRR)、优先级分析器、 中断服务寄存器(ISR)、

中断屏蔽寄存器(IMR)、数据总线缓冲器、读写控制电路和级联缓冲器、比较器组成。

图 5-19

中断请求寄存器:寄存所有要求服务的请求 IR0~IR7。

中断服务寄存器:寄存正在被服务的中断请求。

中断屏蔽寄存器:存放被屏蔽的中断请求,该寄存器的每一位表示一个中断号, 该

位为 1,屏蔽该号中断,否则开放该号中断。

数据总线缓冲器:是双向三态的,用以连接系统总线和 8259A 内部总线, 通过它可

以由 CPU 对 8259A 写入状态字和控制字。

读写控制电路:用来接受 I/O 命令,对初始化命令和操作命令字寄存器进行写入,以

确定 8259A 的工作方式和控制方式。

52

级联缓冲器/比较器:用于多片 8259A 的连接,能构成多达 64 级的矢量中断系统。

2、8259A 编程及初始化

(1) 写初始化命令字

* 写初始化命令字 ICW1(A0=0),以确定中断请求信号类型,清除中断屏蔽寄存器,

中断优先级排队和确定系统用单片还是多片。

* 写初始化命令字 ICW2,以定义中断向量的高五位类型码。

* 写初始化命令字 ICW3,以定义主片 8259A 中断请求线上 IR0~IR7 有无级联的

8259A 从片。

第 i 位=0,表明 IRi 引脚上无从片

第 i 位=1,表明 IRi 引脚上有从片

53

* 写初始化命令 ICW4,用来定义 8259A 工作时用 8085 模式,还是 8088 模式,以

及中断服务寄存器复位方式等。

(2) 写控制命令字

* 写操作命令字 0CW1,用来设置或清除对中断源的屏蔽。

第 i 位=0,对应的中断请求 IRi 开放

54

第 i 位=1,对应的中断请求 IRi 屏蔽

注: OCW1 如不写,则在初始化命令写入后,OCW1 为全开放状态。

* 操作命令字 OCW2,设置优先级是否进行循环、循环方式及中断结束方式。

注: 8259A 复位时自动设置 IR0 优先权最高,IR7 优先权最低。

* 操作命令字 OCW3,设置查询方式、特殊屏蔽方式以及读取 8259 中断寄存器的当

前状态。

55

(3) 8259A 查询字

通过 OCW3 命令字的设置,可使 CPU 处于查询方式,随时查询 8259A 有否中断请求,

有则转入相应的中断服务程序。

三、实验内容

本系统中已设计有一片 8259A 中断控制芯片,工作于主片方式,8 个中断请求输入端

IR0~IR7 对应的中断型号为 8~F,其和中断矢量关于如下表 5-3 所示。

表 5-3

根据实验原理图 5-20(见下页),8259A 和 8088 系统总线直接相连,8259A 上连有

一系统地址线A0,故8259A 有2 个端口地址, 本系统中为20H、21H。 20H 用来写 ICW1,

21H 用来写 ICW2、ICW3、ICW4,初始化命令字写好后, 再写操作命令字。OCW2、

OCW3 用口地址 20H,OCW1 用口地址 21H。图 5-14 中,使用了 3 号中断源,IR3 插

孔和 SP 插孔相连,中断方式为边沿触发方式,每按一次 AN 按钮产生一次中断信号,向

56

8259A 发出中断请求信号。如果中断源电平信号不符规定要求则自动转到 7 号中断,显示

“Err”。CPU 响应中断后,在中断服务中, 对中断次数进行计数并显示,计满 5 次结束,

显示器显示“8259Good”。

四、实验线路连接

8259A 的 IR3 插孔和 SP 插孔相连。SP 插孔初始电平为低电平。

图 5-20

五、实验软件框图

六、实验软件清单

CODE SEGMENT

ASSUME CS:CODE

INTPORT1 EQU 0020H

57

INTPORT2 EQU 0021H

INTQ3 EQU INTREEUP3

INTQ7 EQU INTREEUP7

CONTPORT EQU 00DFH

DATAPORT EQU 00DEH

DATA0 EQU 0580H

DATA1 EQU 0500H

DATA2 EQU 0508H

DATA3 EQU 0518H

DATA4 EQU 0520H

ORG 1800H

START: JMP Tint1

Tint1: CALL FORMAT

CLD

MOV DI,DATA0

MOV CX,08H

XOR AX,AX

REP STOSW

MOV SI,DATA3

CALL LEDDISP ;DISP 8259-1

MOV AX,0H

MOV DS,AX

CALL WRINTVER ;WRITE INTRRUPT

MOV AL,13H

MOV DX,INTPORT1

OUT DX,AL

MOV AL,08H

MOV DX,INTPORT2

OUT DX,AL

MOV AL,09H

OUT DX,AL

58

MOV AL,0F7H

OUT DX,AL

MOV BYTE PTR DS:[0601H],01H ;TIME=1

STI

WATING: JMP WATING

WRINTVER:MOV AX,0H

MOV ES,AX

MOV DI,002CH

LEA AX,INTQ3

STOSW

MOV AX,CS

STOSW

MOV DI,003CH

LEA AX,INTQ7

STOSW

MOV AX,CS

STOSW

RET

INTREEUP3:CLI

MOV AL,DS:[0601H]

CALL CONVERS

MOV SI,DATA0

CALL LEDDISPD

MOV AL,20H

MOV DX,INTPORT1

OUT DX,AL

ADD BYTE PTR DS:[0601H],01H

CMP BYTE PTR DS:[0601H],06H

JNA INTRE1

MOV SI,DATA4

CALL LEDDISP

59

INTRE3: JMP INTRE3

CONVERS:MOV BH,0H

AND AL,0FH

MOV BL,AL

MOV AL,CS:[BX+DATA2]

MOV BX,DATA0

MOV DS:[BX],AL

RET

INTRE1: MOV AL,20H

MOV DX,INTPORT1

OUT DX,AL

STI

IRET

INTREEUP7: CLI

MOV SI,DATA1

CALL LEDDISP

MOV AL,20H

MOV DX,INTPORT1

OUT DX,AL

IRET

LEDDISP:MOV AL,90H

MOV DX,CONTPORT

OUT DX,AL

MOV BYTE PTR DS:[0600H],00

LED1: CMP BYTE PTR DS:[0600H],07H

JA LED2

MOV BL,DS:[0600H]

MOV BH,0H

MOV AL,CS:[BX+SI]

MOV DX,DATAPORT

OUT DX,AL

60

ADD BYTE PTR DS:[0600H],01H

JNZ LED1

LED2: RET

LEDDISPD:MOV AL,90H

MOV DX,CONTPORT

OUT DX,AL

MOV BYTE PTR DS:[0600H],00

LEDD1: CMP BYTE PTR DS:[0600H],07H

JA LEDD2

MOV BL,DS:[0600H]

MOV BH,0H

MOV AL,DS:[BX+SI]

MOV DX,DATAPORT

OUT DX,AL

ADD BYTE PTR DS:[0600H],01H

JNZ LEDD1

LEDD2: RET

FORMAT: MOV BX,0

MOV WORD PTR DS:[BX+0500H],5050H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],0079H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],0000H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],0000H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],063FH

ADD BX,2

MOV WORD PTR DS:[BX+0500H],4F5BH

ADD BX,2

MOV WORD PTR DS:[BX+0500H],6D66H

61

ADD BX,2

MOV WORD PTR DS:[BX+0500H],077DH

ADD BX,2

MOV WORD PTR DS:[BX+0500H],6F7FH

ADD BX,2

MOV WORD PTR DS:[BX+0500H],7C77H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],5E39H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],7179H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],4006H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],4040H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],6D6FH

ADD BX,2

MOV WORD PTR DS:[BX+0500H],7F5BH

ADD BX,2

MOV WORD PTR DS:[BX+0500H],3F5EH

ADD BX,2

MOV WORD PTR DS:[BX+0500H],5C3FH

ADD BX,2

MOV WORD PTR DS:[BX+0500H],6D6FH

ADD BX,2

MOV WORD PTR DS:[BX+0500H],7F5BH

RET

CODE ENDS

END START

七、实验步骤

1、按图 5-20 连好实验线路

62

2、 运行实验程序

在系统显示“DVCC- 86H”状态下,按任意键,系统显示命令提示符“-”。

按 GO 键,显示“1000 XX”

输入 F000 : B2E0

按 EXEC 键, 在 DVCC-8086H 上显示“8259-1”。

3、 按 AN 按键,每按二次产生一次中断,在显示器左边一位显示中断次数, 满 5

次中断,显示器显示“8259 good”。

八、思考题

修改程序实现,使用 2 号中断源,IR2 插孔和 SP 插孔相连,中断方式为边沿触发方

式,每按一次 AN 按钮产生一次中断信号,向 8259A 发出中断请求信号。如果中断源电平

信号不符规定要求则自动转到 7 号中断,显示“Err”。CPU 响应中断后,在中断服务中,

对中断次数进行计数并显示,计满 5 次结束,显示器显示“8259Good”。

63

实验八 使用 8251A 的串行接口应用实验(一)

一、实验目的

掌握用 8251A 接口芯片实现微机间的同步和异步通信。

掌握 8251A 芯片与微机的接口技术和编程方法。

二、预备知识

8251A 是一种可编程的同步/异步串行通信接口芯片, 具有独立的接收器和发送器,

能实现单工、 半双工、双工通信。

1、8251A 内部结构

8251A 内部结构框图如图 5-21 所示。

图 5-21

图中 I/O缓冲器是双向三态,通过引脚 D0~D7 和系统数据总线直接接口, 用于和 CPU

传递命令、数据、状态信息。读写控制逻辑用来接收 CPU 的控制信号、 控制数据传送方

向。CPU 对 8251A 的读写操作控制表如表 5-4 所示。

图中收发器功能是从引脚 RXD(收)和 TXD(发)收发串行数据。接收时按指定的方式装

配成并行数据,发送时从 CPU 接收的并行数据,自动地加上适当的成帧信号转换成串行

数据。8251A 内部的调制解调器控制器,提供和外接的调制解调器的握手信号。

64

表 5-4

2、8251A 的方式控制字和命令控制字

方式控制字确定 8251A 的通信方式(同步/异步)、校验方式(奇校/偶校/不校)、字符长度

及波特率等,格式如下图 5-22 所示。命令控制字使 8251A 处于规定的状态以准备收发数

据,格式如下图 5-23。方式控制字和命令控制字无独立的端口地址,8251A 根据写入的

次序来区分。CPU 对 8251A 初始化时先写方式控制字,后写命令控制字。

图 5-22

65

图 5-23

3、状态寄存器

状态寄存器用于寄存 8251A 的状态信息,供 CPU 查询。各位定义如下:

TXRDY 位:当数据缓冲器空时置位,而 TXRDY 引脚只有当条件( 数据缓冲器

空· /CTS·TXE)成立时才置位。

溢出错误:CPU 没读走前一个字符,下一个字符又接收到,称为溢出错误。

帧错误:在字符结尾没检测到停止位,称为帧错误。

三、实验内容

实验原理图如图 5-24 所示,8251A 的片选地址为 050~05F,8251A 的 C/D 接 A0, 因

此,8251A 的数据口地址为 050H,命令/状态口地址是 051H,8251A 的 CLK 接系统时钟

的 2 分频输出 PCLK(2.385MHZ),图中接收时钟 RXC 和发送时钟 TXC 连在一 起接到

8253A 的 OUT1,8253A 的 OUT1 输出频率不小于 79.5KHZ。

66

图 5-24

本实验采用 8251A 异步方式发送,波特率为 9600,因此 8251A 发送器时钟输入端 TXC

输入一个 153.6KHZ 的时钟(9600×16)。这个时钟就有 8253A 的 OUT1 产生。8253A 的

CLK1 接 1.8432MHZ,它的 12 分频正好是 153.6KHZ。故 8253A 计数器 1 设置为工作方

式 3 ——方波频率发生,其计数初值为 000CH。

本实验发送字符的总长度为 11 位(1 个起始位(0),8 个数据位(D0 在前),1 个奇偶校验

位,1 个停止位(1),采用偶校验,发送数据为 55H,反复发送,以便用示波器观察发送端

TXD 的波形。用查询 8251A 状态字的第 0 位(TXRDY)来判断 1 个数据是否发送完毕, 当

TXRDY=1 时,发送数据缓冲器空。

四、实验程序框图

67

五、实验程序清单

CODE SEGMENT

ASSUME CS:CODE

CONTPORT EQU 00DFH

DATAPORT EQU 00DEH

SECOPORT EQU 0051H

SEDAPORT EQU 0050H

DATA EQU 0500H

START: JMP SERIAL

SERIAL: CALL FORMAT

MOV SI,DATA

CALL LEDDISP ;DISP 8251-1

WATTXD: MOV DX,SECOPORT

IN AL,DX

TEST AL,01H

JZ WATTXD

MOV AL,55H

MOV DX,SEDAPORT

OUT DX,AL

JMP WATTXD

LEDDISP:MOV AL,90H

MOV DX,CONTPORT

OUT DX,AL

MOV BYTE PTR DS:[0600H],00

LED1: CMP BYTE PTR DS:[0600H],07H

JA LED2

MOV BL,DS:[0600H]

MOV BH,0H

MOV AL,CS:[BX+SI]

MOV DX,DATAPORT

68

OUT DX,AL

ADD BYTE PTR DS:[0600H],01H

JNZ LED1

LED2: RET

FORMAT: MOV BX,0

MOV WORD PTR DS:[BX+0500H],4006H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],4040H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],6D06H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],7F5BH

RET

CODE ENDS

END START

六、实验步骤

1、按图 5-24 连好实验线路

2、运行实验程序

在系统显示“DVCC- 86H”状态下,按任意键,系统显示命令提示符“-”。

按 GO 键,显示器显示“1000 XX”

输入 F000 : B400

按 EXEC 键,显示器显示“8251-1”

用示波器探头测 TXD 波形,以判断起始位、数据位、 偶校验位以及停止位的位置。

注:本实验只在单机状态下做。

69

实验九 使用 ADC0809 的 A/D 转换实验

一、实验目的

加深理解逐次逼近法模数转换器的特征和工作原理,掌握 ADC0809 的接口方法以及

A/D 输入程序的设计和调试方法。

二、预备知识

逐次逼近法 A/D 也称逐次比较法 A/D。它由结果寄存器、D/A、比较器和置位控制逻

辑等部件组成,如下图所示。

三、实验内容

1、实验原理

本实验采用 ADC0809 做 A/D 转换实验。ADC0809 是一种 8 路模拟输入、8 位数字

输出的逐次逼近法 A/D 器件,转换时间约 100us,转换精度为±1/512,适用于多路数据采

集系统。ADC0809 片内有三态输出的数据锁存器,故可以与 8088 微机总线直接接口。

图 5-8

70

上图中 ADC0809 的 CLK 信号接 CLK=2.385MHZ,基准电压 Vref(+)接 Vcc。一般在

实际应用系统中应该接精确+5V,以提高转换精度,ADC0809 片选信号 0809CS 和/IOW、

/IOR 经逻辑组合后,去控制 ADC0809 的 ALE、START、ENABLE 信号。ADC0809 的转

换结束信号 EOC 未接, 如果以中断方式实现数据采集,需将 EOC 信号线接至中断控制

器 8259A的中断源输入通道。本实验以延时方式等待 A/D 转换结束,ADC0809 的通道号

选择线 ADD-A、ADD-B、ADD-C 接系统数据线的低 3 位,因此 ADC0809 的 8 个通

道值地址分别为 00H、01H、02H、03H、04H、05H 、 06H、07H。

启动本 A/D 转换只需如下三条命令:

MOV DX,ADPORT ;ADPORT 为 ADC0809 端口地址。

MOV AL,DATA ;DATA 为通道值。

MOV DX, AL ; 通道值送端口。

读取 A/D 转换结果用下面二条指令:

MOV DX,ADPORT

IN AL,DX

2、实验线路的连接

在原理图 5-8 中,粗黑线是学生需要连接的线, 粗黑线两端是需连接的信号名称。

(1)IN0 插孔连 W1 的输出 V1 插孔。

(2)0809CS 连译码输出 060H~06FH 插孔。

3、实验软件编程提示

本实验软件要求:初始显示“0809-00”,然后根据 A/D 采样值,不断更新显示。

四、实验软件框图:

五、实验软件参考程序

CODE SEGMENT

71

ASSUME CS:CODE

ADPORT EQU 0060H

CONTPORT EQU 00DFH

DATAPORT EQU 00DEH

START: JMP ADCONTORL

DATA1 EQU 0580H

DATA2 EQU 0500H

ADCONTORL:CALL FORMAT

MOV AX,0H

MOV DS,AX

MOV BX,DATA1

MOV DS:[BX],AL

ADD BX,01H

MOV DS:[BX],AL

ADD BX,01H

MOV AL,40H

MOV DS:[BX],AL

ADD BX,01H

MOV AL,40H

MOV DS:[BX],AL

ADD BX,01H

MOV AL,6fH

MOV DS:[BX],AL

ADD BX,01H

MOV AL,3fH

MOV DS:[BX],AL

ADD BX,01H

MOV AL,7fH

MOV DS:[BX],AL

MOV AL,3fH

ADD BX,01H

72

MOV DS:[BX],AL

ADCON: MOV AX,00

MOV DX,ADPORT

OUT DX,AL

MOV CX,0500H

DELAY: LOOP DELAY

MOV DX,ADPORT

IN AL,DX

MOV CL,AL

CALL CONVERS

CALL LEDDISP

JMP ADCON

CONVERS:MOV BH,0H

AND AL,0FH

MOV BL,AL

MOV AL,CS:[BX+DATA2]

MOV BX,DATA1

MOV DS:[BX],AL

INC BX

PUSH BX

MOV AL,CL

MOV CL,04H

SHR AL,CL

MOV BL,AL

MOV BH,0H

MOV AL,CS:[BX+DATA2]

POP BX

MOV DS:[BX],AL

RET

LEDDISP:MOV AL,90H

MOV DX,CONTPORT

73

OUT DX,AL

MOV BYTE PTR DS:[0600H],00

LED1: CMP BYTE PTR DS:[0600H],07H

JA LED2

MOV BL,DS:[0600H]

MOV BH,0H

MOV AL,DS:[BX+DATA1]

MOV DX,DATAPORT

OUT DX,AL

ADD BYTE PTR DS:[0600H],01H

JNZ LED1

LED2: RET

FORMAT: MOV BX,0

MOV WORD PTR DS:[BX+0500H],063FH

ADD BX,2

MOV WORD PTR DS:[BX+0500H],4F5BH

ADD BX,2

MOV WORD PTR DS:[BX+0500H],6D66H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],077DH

ADD BX,2

MOV WORD PTR DS:[BX+0500H],6F7FH

ADD BX,2

MOV WORD PTR DS:[BX+0500H],7C77H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],5E39H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],7179H

RET

CODE ENDS

END START

74

六、实验步骤

1、正确连接好实验线路

2、运行实验程序

实验软件参考程序存放在两个地方: 一是放在系统监控中, 二是放在随机软盘中。

每个实验程序所对应的起始地址见附一、二。

(a) 运行系统监控中的实验程序

在系统接上电源,显示“DVCC-86H”后,按任意键,显示器显示“-”。

按 GO 键,显示“1000XX”

输入 F000:B000

再按 EXEC 键,在 DVCC-8086H 上应显示“0809-XX”。

(b) 运行随机软件中的实验程序

按本书第六章中软件安装启动方法先启动该联机软件,然后运行实验程序。

3、调节电位器 W1,以改变模拟电压值,显示器上会不断显示新的 A/D 转换结果。

用 ADC0809 做 A/D 转换,其模拟量与数字量对应关系的典型值为+5V-FFH,2.5V-80H,

0V-00H。

75

实验十 使用 DAC0832 的 D/A 转换实验(一)

一、实验目的

熟悉 DAC0832 数模转换器的特性和接口方法,掌握 D/A 输出程序的设计和调试方法。

二、预备知识

1、DAC0832 结构

DAC0832 是用先进的 CMOS/Si-Cr 工艺制成的双列直插式单片 8 位 D/A 转换器。它

可以直接和 8088CPU 相接口。它采用二次缓冲方式(有两个写信号/WR1、/WR2),这样可

以在输出的同时,采集下一个数字量,以提高转换速度。 而更重要的是能够在多个转换

器同时工作时,有可能同时输出模拟量。它的主要技术参数如下:分辨率为 8 位,电流建

立时间为 1us,单一电源 5V-15V 直流供电,可双缓冲、单缓冲或直接数据输入。

DAC0832 内部结构见图 5-9。

图 5-9 DAC0832 内部功能

* /LE=“1”,Q 输出跟随 D 输入,/LE=“0”,D 端输入数据被锁存

2、DAC0832 引脚功能

*DI0~DI7: 数据输入线,TTL 电平,有效时间应大于 90ns(否则锁存的数据会出错);

*ILE: 数据锁存允许控制信号输入线,高电平有效;

*/CS: 选片信号输入线,低电平有效;

*/WR1: 输入锁存器写选通输入线,负脉冲有效(脉宽应大于 500ns)。当/CS 为“0”、

ILE 为“1”、/WR1 为“0”时,DI0~DI7 状态被锁存到输入锁存器。

*/XFER: 数据传输控制信号输入线,低电平有效;

*/WR2: DAC 寄存器写选通输入线,负脉冲(宽于 500ns)有效.当/XFER 为“0”且

/WR2 有效时,输入锁存器的状态被传送到 DAC 寄存器中;

76

*Iout1:电流输出线,当输入为全 1 时 Iout1 最大;

*Iout2:电流输出线,其值和 Iout1 值之和为一常数;

*Rfb: 反馈信号输入线,改变 Rfb 端外接电容器值可调整转换满量程精度;

*Vcc: 电源电压线,Vcc 范围为+5V~+15V;

*VREF: 基准电压输入线,VREF 范围为-10V~+10V;

*AGND: 模拟地;

*DGND: 数字地。

3、DAC0832 工作方式

根据对 DAC0832 的输入锁存器和 DAC 寄存器的不同的控制方法,DAC0832 有如下

三种工作方式:

(1) 单缓冲方式

此方式适用于只有一路模拟量输出或几路模拟量非同步输出的情形。

方法是控制输入锁存器和 DAC 寄存器同时接数,或者只用输入锁存器而把 DAC 寄存

器接成直通方式。

(2) 双缓冲方式

此方式适用于多个 DAC0832 同时输出的情形

方法是先分别使这些 DAC0832 的输入锁存器接数,再控制这些 DAC0832 同时传递数

据到 DAC 寄存器以实现多个 D/A 转换同步输出。

(3) 直通方式

此方式宜于连续反馈控制线路中。

方法是使所有控制信号(/CS、/WR1、/WR2、ILE、XFER)均有效。

4、电流输出转换成电压输出

DAC0832 的输出是电流,有两个电流输出端(Iout1 和 Iout2),它们的和为一常数。

使用运算放大器,可以将 DAC0832 的电流输出线性地转换成电压输出。根据运放和

DAC0832 的连接方法,运放的电压输出可以分为单极型和双极型两种。图 4-4 是一种单

极型电压输出电路。

图 5-10 中,DAC0832 的 Iout2 被接地,Iout1 接运放 LF351 的反相输入端,LF351

的正相输入端接地。运放的输出电压 Vout 之值等于 Iout1 与 Rfb 之积,Vout 的极性与

DAC0832 的基准电压 VREF 极性相反。Vout =-〔VREF×(输入数字量的十进制数)〕/256,

如果在单极型输出的线路中再加一个放大器,便构成双极型输出线路。

77

图 5-10 0832 单极型电压输出电路

三、实验内容

1、实验原理

实验原理如图 5-11 所示,由于 DAC0832 有数据锁存器、选片、读、写控制信号线,

故可与 8088CPU 总线直接接口。图中是只有一路模拟量输出, 且为单极型电压输出。

DAC0832 工作于单缓冲方式,它的 ILE 接+5V,/CS 和/XFER 相接后作为 0832 芯片的片

选 0832CS。这样, 对 DAC0832 执行一次写操作就把一个数据直接写入 DAC 寄存器、模

拟量输出随之而变化。

图 5-11

2、实验线路的连接

将 0832 片选信号 0832CS 插孔和译码输出 070H~07FH 插孔相连。

3、实验软件编程提示

本实验要求在 AOUT 端输出方波信号,方波信号的周期由延时时间常数确定。 根据

Vout =-〔VREF×(输入数字量的十进制数)〕/256,当数字量的十进制数为 256(FFH)

时,由于 VREF =-5V,Vout = +5V。当数字量的十进制数为 0(00H) 时, 由于 VREF = -

78

5V,Vout = 0V。因此,只要你将上述数字量写入 DAC0832 端口地址时,模拟电压就从

AOUT 端输出 。

四、实验软件框图:

五、实验软件参考程序

CODE SEGMENT

ASSUME CS:CODE

DAPORT EQU 0070H

CONTPORT EQU 00DFH

DATAPORT EQU 00DEH

DATA EQU 0500H

START: JMP DACONTORL

DACONTORL:CALL FORMAT

CALL LEDDISP

MOV DX,DAPORT

MOV AL,00H

DACON1: OUT DX,AL

MOV CX,0400H

DACON2: LOOP DACON2

NOT AL

JMP DACON1

LEDDISP:MOV AL,90H

79

MOV DX,CONTPORT

OUT DX,AL

MOV BYTE PTR DS:[0600H],00

LED1: CMP BYTE PTR DS:[0600H],07H

JA LED2

MOV BL,DS:[0600H]

MOV BH,0H

MOV AL,CS:[BX+DATA]

MOV DX,DATAPORT

OUT DX,AL

ADD BYTE PTR DS:[0600H],01H

JNZ LED1

LED2: RET

FORMAT: MOV BX,0

MOV WORD PTR DS:[BX+0500H],4006H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],4040H

ADD BX,2

MOV WORD PTR DS:[BX+0500H],4F5BH

ADD BX,2

MOV WORD PTR DS:[BX+0500H],3F7FH

ADD BX,2

RET

CODE ENDS

END START

六、实验步骤

1、根据原理图正确连接好实验线路

2、正确理解实验原理

3、运行实验程序

在系统接上电源,显示“DVCC-86H”后,按任意键,显示器显示“-”。

按 GO 键, 显示“1000 XX”

输入 F000 : B0C0

80

再按 EXEC 键,在 DVCC-8086H 显示器上显示 “0832 - 1”。用示波器测量

DAC0832 左下 AOUT 插孔,应有方波输出,方波的周期约为 1ms。

DAC0832 的 D/A 转换实验(二)

一、实验目的

进一步掌握数/模转换的基本原理。

二、实验内容

1、实验原理基本同实验二

2、实验线路的连接

将 DAC 片选信号 0832CS 插孔和译码输出 070H~ 07FH 插孔相连。

3、实验软件编程提示

本实验在 AOUT 端输出锯齿波。根据 Vou t = -〔VRFE×(输入数字量的十进制

数)〕/256 即可知道,只要将数字量 0~256(00H~FFH)从 0 开始逐渐加 1 递增直至 256 为止,

不断循环,在 AOUT 端就会输出连续不断的锯齿波。

三、实验软件框图

四、实验软件参考程序

CODE SEGMENT

ASSUME CS:CODE

DAPORT EQU 0070H

CONTPORT EQU 00DFH

DATAPORT EQU 00DEH

81

DATA EQU 0500H

START: JMP DACONTORL

DACONTORL:CALL FORMAT

CALL LEDDISP

MOV DX,DAPORT

MOV AL,00H

DACON1: OUT DX,AL

INC AL

MOV CX,08H

DACON2: LOOP DACON2

JMP DACON1

LEDDISP:MOV AL,90H

MOV DX,CONTPORT

OUT DX,AL

MOV BYTE PTR DS:[0600H],00

LED1: CMP BYTE PTR DS:[0600H],07H

JA LED2

MOV BL,DS:[0600H]

MOV BH,0H

MOV AL,CS:[BX+DATA]

MOV DX,DATAPORT

OUT DX,AL

ADD BYTE PTR DS:[0600H],01H

JNZ LED1

LED2: RET

FORMAT: MOV BX,0

MOV WORD PTR DS:[BX+0500H],405BH

ADD BX,2

MOV WORD PTR DS:[BX+0500H],4040H

ADD BX,2

82

MOV WORD PTR DS:[BX+0500H],4F5BH

ADD BX,2

MOV WORD PTR DS:[BX+0500H],3F7FH

RET

CODE ENDS

END START

五、实验步骤

1、根据原理图正确连接好实验线路。

2、运行实验程序

在系统接上电源,显示“DVCC-86H”后,按任意键,显示器显示“-”。

按 GO 键,显示“1000 XX”

输入 F000 : B110

再按 EXEC 键,在 DVCC-8086H 显示器上显示 “0832 -2” ,用示波器测量

DAC0832 左下 AOUT 插孔,应有锯齿波输出。

六、思考题

编程实现:利用 DAC0832 产生一个方波信号,要求写出实验软件框图,及调试结果

83

附录:微机原理与接口课程设计实验

实验一、用 0832 和 8255 实现对直流

电机的调速控制内容

一、实验目的

1.掌握直流电机的驱动原理。

2.了解直流电机调速的方法。

二、实验内容

1、用 DAC0832D/A 转换电路的输出,经放大后驱动直流电机。

2、编制程序,通过读入 8255C 口的值,并以此值来改变 DAC0832 的输出来控制电机

转速,并将此值显示在数码管上用以表示电机的速度。

三、实验原理图

84

四、实验线路连接

1.DAC0832 的片选信号 DACS 连到译码输出 060-06F。

2.用二芯线将 2 个 DM 插座连接在一起。

3.将 0832 输出经放大后的模拟电压输出端 AOUT 连到 DM 插座旁边的 DJ 插孔上。

4.8255A 的 8255CS 接译码输出连到轧 070-07F。

5.8255 芯片 PC0~PC7 插孔依次接 K1~K8。

五、实验步骤

1.连好实验线路。

2.运行实验程序,观察实验结果。

六、实验源程序(文件名:MOTOR.ASM)

CODE SEGMENT

ASSUME CS:CODE

DAPORT EQU 0060H ;da-out port

IOCPT EQU 0072H ;C port

IOCONPT EQU 0073H ;control port

CONTPORT EQU 00DFH

DATAPORT EQU 00DEH

DATA1 EQU 0500H

DATA2 EQU 0510H

DATA3 EQU 0518H

DATA4 EQU 0519H

START: CALL FORMAT

MOV AL,89H

MOV DX,IOCONPT

OUT DX,AL ;write control word

MOV DX,IOCPT

IN AL,DX ;read the condition of C port

DAOUT: MOV BYTE PTR DS:[DATA4],AL

CALL BCDCON

CALL CONVERS

CALL LEDDISP

85

MOV AL,BYTE PTR DS:[DATA4]

MOV DX,DAPORT

OUT DX,AL

READCPT: MOV DX,IOCPT

IN AL,DX

CMP AL,BYTE PTR DS:[DATA4]

JE READCPT

JMP DAOUT

FORMAT: MOV BX,0

MOV WORD PTR DS:[BX+DATA1],063FH

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],4F5BH

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],6D66H

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],077DH

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],6F7FH

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],7C77H

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],5E39H

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],7179H

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],003FH ;"SPEED 0"

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],5E00H

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],7979H

ADD BX,2

86

MOV WORD PTR DS:[BX+DATA1],6D73H

ADD BX,2

RET

LEDDISP: MOV AL,90H

MOV DX,CONTPORT

OUT DX,AL

MOV BYTE PTR DS:[DATA3],00H

LED1: CMP BYTE PTR DS:[DATA3],07H

JA LED2

MOV BL,DS:[DATA3]

MOV BH,0H

MOV AL,CS:[BX+DATA2]

MOV DX,DATAPORT

OUT DX,AL

ADD BYTE PTR DS:[DATA3],01H

JNZ LED1

LED2: RET

CONVERS1: MOV BH,0H

AND AX,0FH

MOV BL,AL

MOV AL,CS:[BX+DATA1]

RET

CONVERS: PUSH AX

CALL CONVERS1

MOV SI,DATA2

MOV DS:[SI],AL

INC SI

POP AX

MOV CL,4H

SHR AX,CL

PUSH AX

87

CALL CONVERS1

MOV DS:[SI],AL

INC SI

POP AX

MOV CL,4H

SHR AX,CL

CALL CONVERS1

MOV DS:[SI],AL

RET

BCDCON: AND AX,0FFH

MOV CX,AX

MOV AL,0

BCDCON1: ADD AL,1

DAA

JNC NEXT

ADD AH,1

NEXT: LOOP BCDCON1

RET

CODE ENDS

END START

88

实验二、用 8253 和 8259 设计电子表

一、实验目的

1、学习 8253 编程定时/计数器的工作方式。

2、掌握中断控制器 8259A 与微处理机接口的原理和方法。

3、掌握中断控制器 8259A 的应用编程。

*用 8253 和 8259 设计电子表内容。

二、实验原理

利用 8253 的定时器功能。8253 的四个端口地址为 48H,49H,4AH,4BH,本实验采

用 8253 的通道 2,工作在方式 3(方波发生器方式)输入 CLK2 为 1MHZ。先给 8253 的

初始值 0C350H,循环记数。即一次记数完后,自动装入初始值。输出 OUT2 作为 8259

的输入脉冲。8259 有两个口地址,本实验为 20H 和 21H,其中 20H 用来写 ICW1,21H

用来写 ICW2、ICW4,本实验中 8259 为单片,边沿触发,采用 3 号中断源,即 IR3 和 8253

输出口 OUT2 相连,每过 1/20 秒接收到一个中断,向 8259 发出中断请求信号,如果电平

信号不符合要求,则自动转到 7 号中断,显示"ERR",CPU 响应后,在中断处理程序中,

对中断次数进行记数,记满 20 次,把时间缓冲区中的时间加 1,并将其输入到显示缓冲区,

以便显示器显示更新后的时间。

计数初值的计算:1/1000000*X=1/20 X=50000D=0C350H(用 1MHZ 信号产生 1/20 秒

方波)。

三、实验原理图

89

四、实验线路连接

⒈ 8253A 芯片的 CLK2 引出插孔连分频输出插孔 1MHZ。

⒉ 8259A 的 IR3 插孔和 8253A 的 OUT2 插孔相连。

3. 8253A 芯片的 GATE2 连+5V 插空。

五、实验步骤

1.连接好实验线路。

2.运行程序,实验仪显示器上显示一电子钟。

六、实验源程序(文件名:ECLOCK.ASM)

CODE SEGMENT

ASSUME CS:CODE

INTPORT1 EQU 0020H

INTPORT2 EQU 0021H

INTQ3 EQU INTERUPT3

90

INTQ7 EQU INTERUPT7

CONTPORT EQU 00DFH

DATAPORT EQU 00DEH

DATA1 EQU 0500H

DATA2 EQU 0508H

DATA3 EQU 0518H

DATA4 EQU 0520H

DATA5 EQU 0528H

DATA6 EQU 0529H

DATA7 EQU 052AH

DATA8 EQU 052BH

DATA9 EQU 052CH

DATA10 EQU 052EH

ORG 1800H

START: JMP TINT1

TINT1: CALL FORMAT

CLD

MOV DX,004BH

MOV AL,0B6H

OUT DX,AL

MOV DX,004AH

MOV AL,50H

OUT DX,AL

MOV AL,0C3H

OUT DX,AL

MOV SI,DATA3

CALL LEDDISP

MOV AX,0H

MOV DS,AX

CALL WRINTVER

MOV AL,13H

MOV DX,INTPORT1

OUT DX,AL

91

MOV AL,08H

MOV DX,INTPORT2

OUT DX,AL

MOV AL,0BH

OUT DX,AL

MOV AL,0F7H

OUT DX,AL

WAITING: STI

JMP WAITING

WRINTVER: MOV AX,0H

MOV ES,AX

MOV DI,002CH

LEA AX,INTQ3

STOSW

MOV AX,CS

STOSW

MOV DI,003CH

LEA AX,INTQ7

STOSW

MOV AX,CS

STOSW

RET

INTERUPT3: CLI

MOV AL,DS:[DATA6]

INC AL

MOV DS:[DATA6],AL

CMP AL,14H

JC PLAY

MOV BYTE PTR DS:[DATA6],00H

MOV SI,DATA4

CALL LEDDISP

CALL NEWTIME

CALL CONVERSALL

92

PLAY: MOV AL,20H

MOV DX,INTPORT1

OUT DX,AL

STI

IRET

INTERUPT7: CLI

MOV SI,DATA1

CALL LEDDISP

MOV AL,20H

MOV DX,INTPORT1

OUT DX,AL

IRET

LEDDISP: MOV AL,90H

MOV DX,CONTPORT

OUT DX,AL

MOV BYTE PTR DS:[DATA5],00H

LED1: CMP BYTE PTR DS:[DATA5],07H

JA LED2

MOV BL,DS:[DATA5]

MOV BH,0H

MOV AL,CS:[BX+SI]

MOV DX,DATAPORT

OUT DX,AL

ADD BYTE PTR DS:[DATA5],01H

JNZ LED1

LED2: RET

FORMAT: MOV BX,0

MOV WORD PTR DS:[BX+DATA1],5050H

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],0079H

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],0000H

ADD BX,2

93

MOV WORD PTR DS:[BX+DATA1],0000H

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],063FH

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],4F5BH

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],6D66H

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],077DH

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],6F7FH

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],7C77H

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],5E39H

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],7179H

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],3F3FH

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],3F40H

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],403FH

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],3F3FH

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],3F3FH

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],3F40H

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],403FH

ADD BX,2

MOV WORD PTR DS:[BX+DATA1],3F3FH

94

MOV BYTE PTR DS:[DATA6],00D

MOV BYTE PTR DS:[DATA7],00D

MOV BYTE PTR DS:[DATA8],00D

MOV BYTE PTR DS:[DATA9],00D

MOV WORD PTR DS:[DATA10],DATA4

RET

CONVERS1: MOV BH,0H

AND AL,0FH

MOV BL,AL

MOV AL,CS:[BX+DATA2]

RET

CONVERS2: PUSH AX

CALL CONVERS1

MOV BX,WORD PTR DS:[DATA10]

MOV DS:[BX],AL

ADD WORD PTR DS:[DATA10],01H

POP AX

PUSH CX

MOV CL,4H

SHR AL,CL

POP CX

CALL CONVERS1

MOV BX,WORD PTR DS:[DATA10]

MOV DS:[BX],AL

RET

CONVERSALL: MOV AL,BYTE PTR DS:[DATA9]

CALL CONVERS2

ADD WORD PTR DS:[DATA10],02H

MOV AL,BYTE PTR DS:[DATA8]

CALL CONVERS2

ADD WORD PTR DS:[DATA10],02H

MOV AL,BYTE PTR DS:[DATA7]

95

CALL CONVERS2

MOV WORD PTR DS:[DATA10],DATA4

RET

NEWTIME: CMP BYTE PTR DS:[DATA9],59H

JC ADD1

MOV BYTE PTR DS:[DATA9],0D

CMP BYTE PTR DS:[DATA8],59H

JC ADD2

MOV BYTE PTR DS:[DATA8],0D

CMP BYTE PTR DS:[DATA7],23H

JC ADD3

MOV BYTE PTR DS:[DATA7],0D

JMP OK

ADD1: MOV AL,BYTE PTR DS:[DATA9]

ADD AL,1D

DAA

MOV BYTE PTR DS:[DATA9],AL

JMP OK

ADD2: MOV AL,BYTE PTR DS:[DATA8]

ADD AL,1D

DAA

MOV BYTE PTR DS:[DATA8],AL

JMP OK

ADD3: MOV AL,BYTE PTR DS:[DATA7]

ADD AL,1D

DAA

MOV BYTE PTR DS:[DATA7],AL

OK: RET

CODE ENDS

END START

96

实验三、用 D/A、A/D 实现闭环测试

一、实验目的

1.加深理解逐次逼近法模数转换器的特征和工作原理,掌握 ADC0809 的接口方法以

及 A/D 输入程序的设计和调试方法。

2.熟悉 DAC0832 数模转换器的特性和接口方法,掌握 D/A 输出程序的设计和调试方

法。

二、实验原理

本实验采用 DAC0832 和 ADC0809 做数模转换和模数转换闭环测试实验,即将数模

转换器输出的模拟量作为模数转换器的模拟量输入,并比较 D/A 设定的数字量与 A/D 读出

的数字量,从而得出实验结论。由于

DAC0832 有数据锁存器、选片、读、写控制信号线,故可与 8088CPU 总线直接接口。

图中是只有一路模拟量输出, 且为单极型电压输出。DAC0832 工作于单缓冲方式,它的

ILE 接+5V,/CS 和/XFER 相接后作为 0832

芯片的片选 0832CS。这样, 对 DAC0832 执行一次写操作就把一个数据直接写入 DAC

寄存器、模拟量输出随之而变化。

进行 D/A 转换只需如下两条命令:

MOV AL,DATA0 ;DATA0 为设定的待要转换的数字量。

OUT DAPORT,AL ;DAPORT 为 DAC0832 的端口地址,数字量送端口。

ADC0809 是一种 8 路模拟输入、8 位数字输出的逐次逼近法 A/D 器件,转换时间约

100us,转换精度为±1/512,适用于多路数据采集系统。ADC0809 片内有三态输出的数据

锁存器,故可以与 8088 微机总线直接接口。图中 ADC0809 的 CLK 信号接

CLK=2.385MHZ,基准电压 Vref(+)接 Vcc。一般在实际应用系统中应该接精确+5V,以提

高转换精度,ADC0809 片选信号 0809CS 和/IOW、/IOR 经逻辑组合后,去控制 ADC0809

的 ALE、START、

ENABLE 信号。ADC0809 的转换结束信号 EOC 未接, 如果以中断方式实现数据采

集,需将 EOC 信号线接至中断控制器 8259A的中断源输入通道。本实验以延时方式等待

A/D 转换结束,ADC0809 的通道号选择线 ADD-A、ADD-B、ADD-C 接系统地址线

的低 3 位,因此 ADC0809 的 8 个通道值地址分别为 00H、01H、02H、03H、04H、05H 、

06H、07H。

启动本 A/D 转换只需如下两条命令:

MOV AL,DATA ;DATA 为通道值。

MOV ADPORT,AL ;ADPORT 为 ADC0809 端口地址,通道值送端口。

97

读取 A/D 转换结果用下面一条指令:

IN AL,ADPORT

三、实验软件编程提示

0832 芯片输出产生锯齿波,只须由 AL 中存放数据的增减来控制。当 AL 中数据从

00 逐渐增加到 FF 产生溢出,再从 00 增大到 FF,不断循环,从而产生连续不断的锯齿波。

与此相对应 ADC0809 不断地将 0832 所输出的模拟量进行 A/D 转换,转换结果会不断地在

显示器上显示,模拟量与数字量对应关系的典型值为+5V-FFH,

2.5V-80H,0V-00H。为了便于比较,本实验中显示器的最高位显示"d",而后显

示设定的 D/A 数字量的十进制值(三位),而后显示"-",最后显示 A/D 转换结果的十进制

值(三位)。

四、实验原理图

98

五、实验线路连接

(1)060-06F 连接 A/D 转换器 ADC0809 的片选信号 ADCS.

(2)A/D 转换器 ADC0809 的通道 0 输入信号 IN0 连接 D/A 转换器 DAC0832 的输出

信号 AOUT。

(3)070-07F 连接 D/A 转换器 DAC0832 的片选信号 DACS。

六、实验步骤

a)正确理解实验原理。

b)连接好实验线路。

99

c)运行实验程序,观察运行结果。

七、实验源程序(文件名:DAAD.ASM)

CODE SEGMENT

ASSUME CS:CODE

ADPORT EQU 0060H

DAPORT EQU 0070H

CONTPORT EQU 00DFH

DATAPORT EQU 00DEH

DATA0 EQU 0500H

DATA1 EQU 0510H

DATA2 EQU 0514H

DATA3 EQU 0518H

DATA4 EQU 0519H

DATA5 EQU 051AH

DATA6 EQU 051CH

START: JMP CONTORL

CONTORL: CALL FORMAT

CALL LEDDISP

CALL DELAY

MOV AL,0D

DACON: PUSH AX

OUT DAPORT,AL

CLC

MOV SI,DATA5

MOV AL,1D

ADC AL,[SI]

DAA

MOV [SI],AL

INC SI

MOV AL,0D

ADC AL,[SI]

100

DAA

MOV [SI],AL

MOV SI,DATA5

MOV AL,[SI]

MOV BX,DATA2

CALL CONVERS

INC SI

MOV AL,[SI]

CALL CONVERS1

INC BX

MOV DS:[BX],AL

CALL DELAY

ADCON: MOV AX,00

OUT ADPORT,AL

CALL DELAY

IN AL,ADPORT

CALL CBCDM

MOV BX,DATA6

MOV [BX],AX

MOV BX,DATA1

CALL CONVERS

MOV AL,BYTE PTR DS:[051DH]

CALL CONVERS1

INC BX

MOV DS:[BX],AL

CALL LEDDISP

POP AX

INC AX

CMP AX,100H

JB DACON

MOV AX,0H

101

MOV WORD PTR DS:[DATA5], 0H

JMP DACON

CONVERS: PUSH AX

CALL CONVERS1

MOV DS:[BX],AL

INC BX

POP AX

MOV CL,4H

SHR AL,CL

CALL CONVERS1

MOV DS:[BX],AL

RET

CONVERS1: PUSH BX

MOV BH,0H

AND AL,0FH

MOV BL,AL

MOV AL,CS:[BX+DATA0]

POP BX

RET

LEDDISP: MOV AL,90H

OUT CONTPORT,AL

LED1: CMP BYTE PTR DS:[DATA3],07H

JA LED2

MOV BL,DS:[DATA3]

MOV BH,0H

MOV AL,DS:[BX+DATA1]

OUT DATAPORT,AL

ADD BYTE PTR DS:[DATA3],01H

JNZ LED1

LED2: MOV BYTE PTR DS:[DATA3],00

RET

102

CBCDM: MOV BL,AL

AND AX,0FH

CMP AL,09H

JNA NEXTBIT

ADD AL,06H

NEXTBIT:MOV BYTE PTR DS:[DATA4],AL

MOV AL,BL

MOV BH,0

MOV BL,BYTE PTR DS:[DATA4]

MOV CL,4H

SHR AL,CL

JZ OK

MOV CX,AX

MOV AL,BYTE PTR DS:[DATA4]

CLC

NEXT: ADD AL,16H

DAA

JNC NEXTBIT1

ADD AH,1H

NEXTBIT1: DEC CX

JNZ NEXT

MOV BX,AX

OK: MOV AX,BX

RET

FORMAT: MOV AX,0H

MOV DS,AX

MOV BX,0

MOV WORD PTR DS:[BX+DATA0],063FH

ADD BX,2

MOV WORD PTR DS:[BX+DATA0],4F5BH

ADD BX,2

103

MOV WORD PTR DS:[BX+DATA0],6D66H

ADD BX,2

MOV WORD PTR DS:[BX+DATA0],077DH

ADD BX,2

MOV WORD PTR DS:[BX+DATA0],6F7FH

ADD BX,2

MOV WORD PTR DS:[BX+DATA0],7C77H

ADD BX,2

MOV WORD PTR DS:[BX+DATA0],5E39H

ADD BX,2

MOV WORD PTR DS:[BX+DATA0],7179H

ADD BX,2

MOV WORD PTR DS:[BX+DATA0],525EH

ADD BX,2

MOV WORD PTR DS:[BX+DATA0],4077H

ADD BX,2

MOV WORD PTR DS:[BX+DATA0],7740H

ADD BX,2

MOV WORD PTR DS:[BX+DATA0],5E52H

ADD BX,2

MOV WORD PTR DS:[BX+DATA0],0H

ADD BX,2

MOV WORD PTR DS:[BX+DATA0],0H

ADD BX,2

MOV WORD PTR DS:[BX+DATA0],0H

RET

DELAY: MOV AX,2H

DELAY1: DEC AX

NOP

NOP

MOV CX,0AFFFH

104

105

DELAY2: LOOP DELAY2

JNZ DELAY1

RET

CODE ENDS

END START