微机原理及应用
实验指导
书
关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf
上海电力学院
电力与自动化工程学院
微机原理及应用实验室
杨艳华编写
程启明修订
2007年10月
目 录
第一部分 软件实验部分…………………………….……………………………3 汇编语言程序的建立和执行…………………………………………..…………….….. .. 3 两个多位十进制数相加的实验……………………………….…….……………………...6 两个数相乘的实验……………………………………………………..…………………...6 BCD码相乘的程序………………………………………………………………...………..6 字符匹配程序……………………………………………………………………...………...6 字符串匹配程序…………………………………………………………………..…………6 从键盘输入数据并显示的程序……………………………………………….......…….…..7 字符和数据的显示程序…………………………………………………………...…….…..7 响铃程序…………………………………………………………………….......…………...7 接收年月日信息并显示的程序…………………………………………………...………...7 将键盘输入的小写字母转换成大写字母的程序..………………………...……………….7 保留最长行输入字符的程序…………………………………………………….…………..7 计算机钢琴的程序…………………………………………………………..…...…………..7 排序实验……………………………………………………………………….....…………..8 学生成绩名次表实验……………………………………………………..……...………. …8 设置光标的实验…………………………………………………………………...………….9 清除窗口的实验…………………………………………………………...………………….9 计算N!的实验…………………………………………………………………...……………9 写文件的实验……………………………………………………………….………………...9 读文件的实验…………………………………………………………..…………….……...10 显示目录的实验……………………………………………………………..……………...10
第二部分 硬件实验部分…………………………………………………..………11 8086/88系统相关介绍………………………..……………………………………………11 使用ADC0809的A/D转换实验……………... ……….…………... ……………... ……13 使用DAC0832的D/A转换实验(一) …………………………………... ..……………...16 使用DAC0832的D/A转换实验(二) ……………... ………..…………... ……………...21
1
并行8255A应用(交通信号灯)……………... ………………………... ….……... 22 8253A定时/计数器实验………... ……………………………... ………….…………27 使用8259A的单级中断控制实验…... …………………... ……………….……... …31 使用8251A的串行接口应用实验(一),,串行发送…………………………..……37 使用8251A的串行接口应用实验(二)—串行接收………………………..…………42 小直流电机调速实验…………………………………………………………..………42 步进电机控制…………………………………………………………………..………44
..……………………45 继电器控制………………………………………………………
存贮器读写实验………………………………………………………………..………47
...………48 8237A可编程DMA控制实验………………………………………………8259A串级中断控制实验…………………………………………………..…………57 使用8250A串行通信实验………………………………………………….…………60
2
第一部分 软件实验部分
第一 汇编语言程序的建立和执行
本实验
手册
华为质量管理手册 下载焊接手册下载团建手册下载团建手册下载ld手册下载
要求用8086汇编语言来编写程序,这里,我们首先明汇编语言程序从建立到执行的过程。
要建立和运行汇编语言程序,应该首先有如下文件:
EDIT.COM 编辑程序
MASM.EXE 宏汇编程序
LINK.EXE 链接程序
DEBUG.EXE 调试程序
下面,以建立和执行用户程序ABC.EXE为例来说明上机过程。 1、用EDIT命令建立汇编语言源程序(ASM文件)
源程序就是用汇编语言的语句编写的程序,它不能被机器识别。源程序
必须以ASM为扩展文件名。
例如打入命令:
\ASM>EDIT ABC.ASM(每个命令后面应输入回车,以下均如此) C:
此时用户可以通过编辑程序的命令编写用户程序ABC.ASM。 2、用MASM命令产生目标文件[OBJ文件]
源程序建立后,就可以用汇编程序MASM.EXE进行汇编。所谓汇编,实际上就是把以ASM为扩展名的源文件转换成用二进制代码表示的目标文件,目标文件以OBJ为扩展名。汇编过程中,汇编程序对源文件进行二次扫描,如果源程序中有语法错误,则汇编过程结束后,汇编程序会指出源程序中的错误,这时,用户可以再用编辑程序来修改源程序中的错误,最后,得到没有语法错误的OBJ文件。
例如,对ABC.ASM的汇编过程如下:
C:\ASM> MASM ABC.ASM
此时,汇编程序给出如下回答:
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Crop 1981-1985,1987.all right reserved.
Object filename :[ABC.obj]
Source listing: [NUL.LST]:
Cross-reference [NUL.CRF]:
如果被汇编的程序没有语法错误,则屏幕上还给出如下信息:
0 Waring Errors
0 Servers Errors
从上面的操作过程中可以见到,汇编程序的输入文件就是用户编写的汇编语言源程序,它必须以ASM为文件扩展名。汇编程序的输出文件有三个,第一个是目标文件,它以OBJ为扩展名,产生OBJ文件是我们进行汇编操作的主要目的,所以这个文件一定要产生,也一定会产生的,操作时,这一步只要打入回车就行了;第二个是列表文件,它以LST为扩展名,列表文件同时给出源程序和机器语言程序,从而可以使调试变的方便,列表文件是可有可无的,如果不需要,则在
3
屏幕上出现提示信息,[NUL.LST]:时打入回车即可,如果需要,则打入文件名和回车;第三个是交叉符号表,此表给出了用户定义的所有符号,对每个符号都列出了将其定义的所在行号和引用的行号,并在定义行号上加上”#“号,同列表文件一样,交叉符号表也是为了便于调试而设置的,对于一些规模较大程序,交叉符号表为调试工作带来很大方便。当然,交叉符号表也是可有可无的,如果不需要,那么在屏幕上出现提示信息[NUL.CRF]:时,打入回车即可。
汇编过程结束时,会给出程序中的警告性错误[Waring Errors]和严重错误[Servers Errors],前者指一般性错误,后者指语法性错误,,当存在这两类错误时 ,屏幕上除指出错误个数外,还给出错误信息代号,程序员可以通过查找手册弄清错误的性质。
如果汇编过程中,发现有错误,则程序员应该重新用编辑命令修改错误,再进行汇编,直到汇编正确通过。要指出的是汇编过程只能指出程序中的语法错误,并不能指出算法错误和其他错误。
3. 用LINK命令产生执行文件(EXE文件)
汇编过程根据源程序产生出二进制的目标文件(OBJ文件),但OBJ文件用的是浮动地址,它不能直接上机执行。所以还必须使用连接程序(LINK.EXE)将OBJ文件转换成可执行的EXE文件。LINK命令还可以将某一个目标文件和其它多个模块(这些模块可以是由用户编写的,也可以是某个程序中存在的)链接起来。
具体操作如下(以对ABC.OBJ进行连接为例):
C:\ASM>LINK ABC
此时,在屏幕上见到如下回答信息:
Run File [ABC.EXE]:
List File [NUL.MAP]:
libraries [.LIB]
Warning: NO STACK Segment
LINK 命令有一个输入文件,即OBJ文件,有时,用户程序用到库函数,此时,对于提示信息Libraries [.LIB],要输入库名。
LINK 过程产生两个输出文件,一个是扩展名为EXE的文件,产生次文件当然是LINK过程的主要目的,另一个是扩展名为MAP的列表分配文件,有人也称它为映象文件,它给出每个段在内存中的分配情况。比如某一个列表分配文件为如下内容:
Warning: NO Stack Segment
Start Stop Length NameClass
0000H 0015H 0016H CODE
0021H 0045H 0026H DATA
0050H 0061H 0012H EXTRA
Origin Group
Program entry point at 0000:0000
MAP文件也是可有可无的。
从LINK过程的提示信息中,可看到最后给出了一个“无堆栈段”的警告性错误,这并不影响程序的执行。当然,如果源程序中设计了堆栈段,则无此程序。 4(程序的执行
有了EXE文件后,就可以执行程序了,此时,只要打入文件名即可。仍以ABC为例:
4
C:\ASM >ABC
C:\ASM>
实际上,大部分程序必须经过调试才能纠正程序设计中的成为错误,从而得到正确的结果。所谓调试阶段,就是用调试程序(DEBUG程序)发现错误,再经过编辑、汇编、链接来纠正错误。
关于DEBUG程序中的各种命令,可参阅DOS手册,下面给出最常用的几个命令。
先进入DEBUG程序并装入要调试的程序ABC.EXE,操作命令如下:
\ASM>DEBUG ABC.EXE ;进入DEBUG,并装ABC.EXE C:
此时,屏幕上出现一个短划线。为了查看程序运行情况,常常要分段运行程序,为此,要设立“断点”,即让程序运行到某处自动停下,并把所有寄存器的内容显示出来。为了确定我们所要设定的断点地址,常常用到反汇编命令,反汇编命令格式如下:
--U ;从当前地址开始反汇编
也可以从某个地址处开始反汇编,如下所示:
--U100 ;从CS:100处开始反汇编
确定断点地址后,就可以用G命令来设置断点。比如,想把断点设置在200H处,则如下打入命令:
--G200
此时,程序在0200H处停下,并显示出所有寄存器以及各标志位的当前值,在最后一行还给出下一条将要执行的指令的地址、机器语言和汇编语言,程序员可以从显示的寄存器的内容来了解程序运行是否正确。
对于某些程序段,单从寄存器的内容看不到程序运行的结果,而需要观察数据段的内容,此时可用D命令,使用格式如下:
--D DS:0000 ;从数据段0单元开始显示128各字节。
在有些情况下,为了确定错误到底由哪条指令的执行引起,要用到跟踪命令。跟踪命令也叫单步执行命令,此命令是程序每执行一条指令,边给出所有寄存器的内容。
比如:
--T 3 ;从当前地址往下执行三条指令。
此指令使得从当前地址往下执行三条指令,每执行一条,便给出各寄存器内容。最后,给出下一条要执行的指令的地址、机器语言和汇编语言。
从DEBUG退出时,使用如下命令:
--Q ;退出DEBUG,卸去所装配程序。
附:debug的使用
1、 debug的功能简介:
用于调试汇编语言程序,能使用户接触到计算机内部,允许用户直接观察和修改CPU的寄存器;能观察、修改内存单元;允许直接输入机器指令并单步执行;能反汇编程序。可以说,debug是观察和了解计算机内部运行情况的有利助手。
2、 debug的进入和退出:
c:\masm>debug
i. ,这是debug的提示符,在此可以输入debug的命令
-q ,退出debug
5
3、 观察及修改CPU内部的各寄存器
-r ,观察各寄存器的内容
AX=0000 BX=0000 CX=0000 DX=0000 SP=CFDE BP=0000 SI=0000 DI=0000
DS=10DD ES=10DD SS=10DD CS=10DD IP=0100 NV UP DI PL NZ NA PO NC
10DD:0100 7C0A JL 010C (标志寄存器的各个标志位)
(当前CS:IP所指向的指令)
标志寄存器各标志位的含义:
溢出标志OF: OV/NV(溢出/不溢出)
方向标志DF: DN/UP(减/增)
中断标志IF: EI/DI(开中断/关中断)
符号标志SF:NG/PL(负/正)
零标志ZF: ZR/NZ(零/非零)
辅助进位AF:AC/NA(有/无)
奇偶标志PF:PE/PO(偶/奇)
进位标志CF:CY/NC(有/无)
-r ax
AX 0000
:1234 ,将AX的内容改为1234H
-rf
NV UP DI PL NZ NA PO NC -ov dn ,将标志寄存器的OF置为OV;DF置为DN。
4、观察和修改内存单元的内容
-d 2000 ,查看从地址DS:2000H开始的128个单元的内容
10DD:2000 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
10DD:2010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
10DD:2020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
10DD:2030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
10DD:2040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
10DD:2050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
10DD:2060 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
10DD:2070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
-e 2000 ,修改从地址DS:2000H开始内存单元的内容
10DD:2000 00.01 00.02
?
键入的内容,中间按空格键
5、输入程序
-a 100 ,从CS:100H处开始输入程序(这是默认的程序开始的地址)
10DD:0100 mov ax,1234
10DD:0103 mov [2002],ax
10DD:0106 ,输完程序直接按回车即可
-a 103 ,修改103处的指令
10DD:0103 mov [2000],ax
6
10DD:0106
-
6、单步执行程序
-t=100 ,执行CS:100H处的一条指令,自动显示各寄存器内容及下一条指令。
AX=1234 BX=0000 CX=0000 DX=0000 SP=CFDE BP=0000 SI=0000 DI=0000 DS=10DD ES=10DD SS=10DD CS=10DD IP=0103 OV DN DI PL NZ NA PO NC 10DD:0103 A30020 MOV [2000],AX DS:2000=0201 -t ,继续执行下一条指令
7、反汇编程序
-u 100 ,从CS:100H处开始反汇编
10DD:0100 B83412 MOV AX,1234
10DD:0103 A30020 MOV [2000],AX ,刚才输入的两条指令
10DD:0106 36 SS: ,乱码
10DD:0107 A22C41 MOV [412C],AL
10DD:010A EB22 JMP 012E
10DD:010C 83F906 CMP CX,+06
10DD:010F 750D JNZ 011E
10DD:0111 807C0A2C CMP BYTE PTR [SI+0A],2C
10DD:0115 7505 JNZ 011C
10DD:0117 FF36A22C PUSH [2CA2]
10DD:011B 41 INC CX
10DD:011C EB10 JMP 012E
10DD:011E 83F909 CMP CX,+09
-
8、执行一段程序
-g=100 106 ,从CS:100H开始,执行到CS:106处停止。
AX=1234 BX=0000 CX=0000 DX=0000 SP=CFDE BP=0000 SI=0000 DI=0000 DS=10DD ES=10DD SS=10DD CS=10DD IP=0106 OV DN DI PL NZ NA PO NC 10DD:0106 36 SS:
10DD:0107 A22C41 MOV [412C],AL SS:412C=00
7
第二 实验内容
实验一 两个多位十进制数相加的实验
一(实验目的
1、 学习数据传送和算术运算指令的用法。
2、 熟悉在PC机上建立、汇编、链接、调试和运行8086汇编语言程序的实验。 二(实验内容
将两个多位十进制数相加,要求被加数均以ASCΠ码形式各自顺序存放在DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1中。
实验二 两个数相乘的实验
一、实验目的
掌握乘法指令和循环指令的用法。
二、实验内容
实现十进制数的乘法。被乘数和乘数均以ASCΠ码形式存放在内存中,乘积在屏幕上显示出来。
实验三 BCD码相乘的程序
一、实验目的
掌握用组合的BCD码表示数据,并熟悉怎样实现组合的BCD码乘法运算。 二、实验内容
实现BCD码的乘法,要求被乘数和乘数以组合的BCD码形式存放,各占一个内存单元。乘积存放在另外的内存单元中。
由于没有组合的BCD码乘法指令,程序中采用将乘数1作为计数器,累计另一个乘数的方法得到计算结果。
实验四 字符匹配程序
一、实验目的
掌握8086的串操作指令的使用方法。
二、实验内容
用串操作指令设计程序,实现在存储区(长度为100H)中寻找空个字符(20H)。退出时给出是否找到的信息。
三、编程指示
1、8086中用于字符串检索的指令为SCASB/SCASW,用AL中的字节或者AX中的字与位于ES段由DI寄存器所致的内存单元的字或字节相比较。通过前缀的控制,可以实现在DI所指的字符串中,寻找第一个与AL(或AX)的内容相同(或不同)的字节(或字)。
2 、对于所有的串操作指令,都要注意方向标志的设置,指令CLD使方向标志DF清0,SI和DI自动增量修改。指令STD使DF置1,SI和DI作自动减量修改。 实验五 字符串匹配程序
8
一、实验目的
掌握提示信息的使用方法及键盘输入信息的用法。
二、实验内容
编写程序,实现两个字符串比较。如相同,则显示“MATCH”,否则,显示“NO MATCH”。
实验六 从键盘输入数据并显示的程序
一、实验目的
掌握接收键盘数据的方法,并了解将键盘数据显示时 需转换为ASCΠ码的原理。 二、实验内容
编写程序,将键盘接收到的四位十六进制数据转换为等值的二进制数,再显示在终端上。
实验七 字符和数据的显示程序
一、实验目的
掌握字符和数据的显示方法。
二、实验内容
先显示信息“IN PUT STRING THE END FLAG IS &”。再接收字符。如为0-9,则计数器加1,并显示数据。如非数字,则直接显示,但不计数。
实验八 响铃程序
一(实验目的
掌握响铃符的使用方法
二(实验内容
从键盘接受输入字符,如是数字N,则响铃N次,如不是数字,则不响。
实验九 接受年.月.日信息并显示的程序
一(实验目的
掌握响铃符的使用方法;掌握年.月.日的输入方法。
二(实验内容
先显示“WHAT IS THE DATA(MM/DD/YY),”并响铃一次,然后接受键盘输入的月/日/年信息,并显示。
实验十 将键盘输入的小写字母转换成大写字母的程序 一(实验目的
了解小写字母和大写字母在计算机内的表示方法,并学习如何进行转换。 二(实验内容
接受键盘字符(以Λ-C为结束),并将其中的小写字母转变为大写字母。然后进行显实。 实验十一 保留最长行输入字符的程序
9
一(实验目的
进一步熟悉DOS系统调用功能的使用方法。
二(实验内容
从键盘输入一行字符(以$为结束符)。如果这行字符比前面输入的一行字符长,这保留改行并显示出来,然后继续输入另一行字符,如果比以前输入的字符行短,这不保存这行字符。最后,保存最长的一行字符并显示出来。键盘输入时结束字符为‘#’字符。
实验十二.计算机钢琴的程序编写
一. 实验目的:
1.掌握利用pc机扬声器发出不同频率声音的方法.
2.学习利用系统功能调用从键盘上读取字符的方法.
二. 实验内容:
编写程序,程序运行时使pc机成为一架可弹奏的”钢琴”。当按下数字1-8
时,依次发出1,2,3,4,5,6,7,i八个音调.按下CTRL-C则退出”钢琴”状态. 三. 实验原理:
1.pc机扬声器电路图如下:
: 61H端口第1位
62H端口第2位:
通过给8253定时器装入不同的计数值,可以使其输出不同频率的波形.当
与门打开后,经过放大器的放大作用,便可驱动扬声器发出不同频率的音调.
要使音调的声音持续一端时间,只要插入一端延时程序之后,再将扬声器切断
(关闭与门).
另外,要使计算机成为可弹奏的钢琴,需要使用系统调用的01H功能以
接收键入字符,并且要建立一张表,使键入字符与频率构成一个对应关系.
键入字符 1 2 3 4 5 6 7 8
音符 1 2 3 4 5 6 7 8
频率值 524 588 660 698 784 880 988 1048
实验十三 排序实验
一、实验目的
掌握用汇编语言编写排序的思路和方法。
二、实验内容
从首地址为1000H开始放50个数,要求设计程序将这些数由小到大排序,排序后的数,仍放在区域内。
实验十四 学生成绩名次表实验
10
一、实验目的:
进一步熟悉排序方法。
二、实验内容:
将0~100之间的30个成绩存入首址为1000H的单元中。1000H+i表示学号为i的学生成绩。编写程序,使得在2000H开始的区域排出名次表。2000H+i为学号为i的学生名次。
实验十五 设置光标的实验
一、实验目的
了解和掌握INT 10H的02H功能设置光标位置的方法。
二、实验目的
设置光标,起始位置为第5行第6列,结束行位置为第7行第6列。
实验十六 清除窗口的实验
一、实验目的
掌握INT 10H的07H功能清除和设置窗口属性的方法。
二、实验内容
清除左上角(10,20),右下角为(50,60)的窗口,并将其初始化为反向显示。
实验十七 计算N~的实验
一、实验目的
通过编制一个阶乘计算程序,了解高级语言中的数学函数是怎样在汇编语言一级上实现的。
二、实验内容
编写计算N~的程序。数值N有键盘输入,结果在屏幕上输出。N的范围为0~65535。即刚好能被一个16位寄存器容纳。
三、编程提示
编制阶乘程序的难点在于随着N的增大,其结果不是寄存器所能容纳。这样就必须把结果放在一个内存缓冲区中。然而乘法运算只能限制于两个字相乘,因此要确定好算法,依次从缓冲区中取数,进行两字相乘,并将DX中的高16位积作为产生的进位。程序根据阶乘的定义:N~=N*(N-1)*(N-2)*…*2*1,从左往右依次计算,结果保存在缓冲区BUF中,缓冲区BUF按结果由低到高依次排列。程序首先将BP初始化为存放N值,然后使BP为N-1,以后BP依次减1,直至变化到1。每次让BP与BUF中的字单元按由低到高的次序相乘。低位结果AX仍保存在相应的BUF字单元中,最高位结果DX则送到进位字单 元CY中,以作为高字单元相乘时从低字来的进位。初始化CY为0,计算结果的长度随着乘积运算而不断增长,由字单元LEN指示。当最高字单元与BP相乘时,若DX不为0,则结果长度要扩展。
实验十八 写文件的实验
11
一、 实验目的
掌握写文件的DOS功能调用方法。
二、 实验内容
编写程序,将内存区域中用调试程序设置好的一连串数据(以CTRL- Z为结束符)作为一个文件存入磁盘,文件名为DATA.AAA。 三、 编程提示
1、对于文件的读写操作,DOS提供了两种手段。第一种手段是使用
FCB进行存取;第二种手段是用文件代号法进行存取。文件代号
法支持目录路径,并且对错误采用了更统一的办法处理,是DOS
推荐的存取方法。
2、使用文件代号法,要求文件名(含路径)用ASCII Z 串表示。所
谓ASCII Z串,就是以空字符00H结尾的一串ASCII字符。
3、 文件代号法存取时出现错误,则功能调用返回时,要将CY标志置
1,同时在AX寄存器中返回统一的出错代码。程序中要用JC指
令进行错误判定,确认出错后再将错误代码显示出来,以便分析 出错原因。
实验十九 读文件的实验
一、实验目的
掌握读文件的DOS功能调用方法。
二、实验内容
编写程序,使它相当于TYPE命令的功能。先由屏幕显示提示信息,再读取文件名(含路径),然后在屏幕上显示文件内容。
三、编程提示
见实验18
实验二十 读文件的实验
一、实验目的
掌握目录操作的DOS功能调用。
二、实验内容
编写程序,使其相当于DIR命令的功能。即在屏幕上显示目录。 四、编程提示
检索目录项首先应使用INT21H的4EH号子功能,它将搜索第一个匹配文件。然后不断使用INT21H的4FH子功能,搜索下一个匹配文件。这样就能实现DIR的功能。这两个子功能调用均能识别文件名中的‘,’和‘*’这两个字符。
12
第二部分 硬件实验部分
第一 8086/88系统相关介绍
一、 8086/88系统安装与启动
1、DVCC系列实验系统在出厂时均为51状态。因此,要进入88状态必须按下列步骤安装。
? a. SK1位1,5置OFF,位6、7、10置ON;位8、9置OFF
b. SK2位1,2置OFF
c. SK3置OFF
d. SK4置ON
e. 卧式拨动开关KBB置88位置(即ON位置,向右)
f. 短路片DL1,DL4连2、3
? 将88CPU卡插在主板上,86CPU卡上的CZ1对应主板J6,88CPU卡CZ2对应
主板J9。
2、接上,5V电源,将随机配备的2芯电源线一头红线接入外置电源的,5V插孔,黑线接入外置电源的地插孔;另一头二芯插头对应插入主机板的J1插座。如果电源内置,只需打开~220V电源开关即可。上电后,DVCC系列实验系统上显示闪动的“P.”。
如果是独立运行,按DVCC系列用户手册进入键盘管理监控,就能马上做实验。键盘管理监控操作详见第一分册第四章。如果连上位机工作,必须将随机分配的D型9芯插头一端插入DVCC系统J2插座,另一端插入上位机串行接口COM1,COM2任选。
3、运行上位机的DVCC联机软件,在闪动“P.”状态按DVCC实验系统PCDBG键,显示器全暗,上位机菜单上选择“连接DVCC系统”菜单项。连接正常屏幕上出现:寄存器窗口、反汇编窗口。如果出现联机失败提示,则需要重新检查以上各步骤。
二、 DVCC系列实验系统实验调试有关说明
1、实验的一般步骤
a. 运行DV88H软件。
b. 编写源程序、汇编排错、形成正确的源程序。
c. 编译、连接、形成最终目标文件.EXE。
d. 装载最终目标文件到实验系统RAM区。
13
e. 调试实验程序,若有错重复b,d。
2、 实验过程中的几点特别说明:
a. 在进入实验前请仔细阅读DVCC系列单片机微机实验指导书第一分册的第三章到第四章全部内容,为后面实验的顺利进行做好准备。
b. 本手册中实验原理图上的粗实线部分表示用户实验时要用导线连接的。
c. 所有实验都是相互独立的,次序上没有固定的先后关系,在使用本手册教学时,教师可根据具体的教学要求选择相应的实验。
d. 手册中每个实验步骤都是针对我们提供的实验演示程序编写的。如果学生自己编写程序或搭实验线路则由自己确定。
第一个实验的步骤很详尽,望学生仔细阅读,以便掌握如何装载实验程序,运行实验程序、观察实验结果。相对来说,第二个实验以后的步骤较为简单。
3、 实验过程中实验结果的查看
a. 仿真实验系统除在连续运行或和上位机联机状态下,一般不按总清键,只按MON键返回监控。
b. 实验中某些实验结果的查看可采用下列办法:
? 以单步方式运行后,再进入存储器、寄存器检查、修改等状态,以查看结果。
? 在合适的地方设置断点或结束地址,全速运行程序,当程序运行到断点时会自动停下来,再进入存储器、寄存器检查、修改等状态,以查看结果。
? 开启有关变量窗、寄存器窗口,以连续单步方式运行程序,在窗口中观察运行结果。 三、 实验程序有关说明
1. 在本实验指导书中编排了14个硬件实验,部分的实验演示程序已固化在监控中,通过DVCC仿真实验系统的键盘显示器直接运行实验程序和观察实验结果。
2. 如果DVCC仿真实验系统在连PC机状态进行各种实验,其实验演示程序既可运行实验监控中的程序,亦可运行DVCC/H8EXE子目录下的实验程序(.EXE),把.EXE文件用目标文件传送命令传送到DVCC仿真实验系统RAM区。然后通过调试命令运行实验系统程序,在窗口中观察实验结果。每个实验程序的起始地址、目标文件名、源文件名、实验名称见下表2,1。
3. 系统监控中的实验程序,不能以断点方式运行。
4. 实验原理图上的粗实线,表示用户在实验时要用导线连接的线。
14
第二 实验操作 实验一 使用ADC0809的A/D转换实验
一、实验目的
加深理解逐次逼近法,模数转换器的特征和工作原理,掌握ADC0809的接口方法以及A/D输入程序的设计和调试方法。
二、预备知识
逐次逼近法A/D也称逐次比较法A/D。它由结果寄存器、D/A、比较器和置位控制逻辑等部件组成,如图3,1所示。
模拟量输入
N 位A N 位 D/A B 寄存器
置位 启动 控制逻辑 DONE
图3,1
三、实验内容
1 、实验原理
本实验采用ADC0809做A/D转换实验。ADC0809是一种8路模拟输入、8位数字输出的逐次逼近法A/D器件,转换时间约100us,转换精度为?1/512,适用于多路数据采集系统。ADC0809片内有三态输出的数据锁存器,故可以与8088微机总线直接接口。
VCC
W1U33VO1IN02621IN-0msb2-1D7XD0202-24.7K2719IN1IN-12-3182-4288IN2IN-22-5GND152-6114IN3IN-32-717lsb2-8D0XD72IN4IN-47+12VEOCEOC3IN5IN-525VINADD-A424IN6IN-6ADD-B23ADD-CEXIC1A33053IN7IN-7SC/ALEXWR22174LS02ALE26Y1OE169474LS02GNDref(-)ENABLEW265STARTXRDCLKT41210ref(+)CLOCK74LS393EXIC1B10KVREFVREFADC0809MP
GND3-2
图3,2
15
图中ADC0809的CLK信号接CLK=2.385MHZ,基准电压VREF(+)接Vcc。一般在实际应用系统中应该接精确+5V,以提高转换精度,ADC0809片选信号0809CS和/IOW、/IOR经逻辑组合后,去控制ADC0809的ALE、START、ENABLE信号。ADC0809的转换结束信号EOC未接, 如果以中断方式实现数据采集,需将EOC信号线接至中断控制器8259,的中断源输入通道。本实验以延时方式等待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端口地址。
DATA为通道值。 MOV AL,DATA ;
MOV DX,AL ; 通道值送端口。
读取A/D转换结果用下面二条指令:
MOV DX,ADPORT
IN AL,DX
2 、 实验线路的连接
在原理图3,2中,粗黑线是学生需要连接的线,粗黑线两端是需连接的信号名称。
(1) 将A/D转换区0809芯片的CLK连MP区分频器74LS393(右上方)输出端T4插孔。
(2) 将通道0模拟量输入端IN0连电位器W1的中心插头VO1(0,5V)插孔。
(3) A/D区0809芯片的VREF和W2区的VREF相连。W2区VIN接外部电源的,12V,并调节W2,使VREF = ,5。如果电源内置,W2区VIN连D/A区的,12V插孔。
(4)0809的数据线D0,D7用排线连到BUS2区XD0,XD7。
(5)在EXIC2上插上74LS02芯片一只,按图连好有关线路(图3,2中粗黑线部分需要用户自己连线)。
3 、 实验软件编程提示
本实验软件要求:初始显示“0809,00”,然后根据A/D采样值,不断更新显示。 五、 实验软件框图:
16
五、实验步骤
1、按图3,2正确连接好实验线路
2、理解实验原理
3、仔细阅读,弄懂实验程序
4、运行实验程序
实验参考程序存放在两个地方:一、放在系统监控中, 二、放在随机软盘中。 每个实验程序所对应的起始地址见表2,1。
(1)在WINDOWS平台下双击DVCC图标。
(2)在DVCC实验系统上按PCDBG键。
(3)在DVCC实验系统主菜单中,单击工具栏“联接”按钮。
(4)在成功联机后,单击菜单栏中的“动态调试”。
(5)在“动态调试”菜单栏中选择“传送(.EXE)文件”并单击它,出现“打开”对话框,在该框中选择欲传送的实验程序的文件名后(本实验文件名为\DVCC\H8EXE H81S.EXE),单击“打开”进行传送。
(6)在当前目录下所生成的.EXE文件传送时自动将实验程序装载到用户的对应起始地址中去,如不是当前目录下生成的.EXE文件则根据提示输入用户程序的起始地址。
(7)单击工具栏中“运行”按钮,运行实验程序,并观察实验结果。调节电位器W1改变模拟量输入的值,在数码管最后二位应显示转换好的相应的数字量。
(8)运行完毕,在DVCC实验系统上按复位按钮后,再按PCDBG键,并单击OK,运行结束。
(9)如选择另一实验则重复上述步骤中5,8。
17
5、调节电位器W1,显示器上会不断显示新的A/D转换结果。其模拟量与数字量对应关系的典型值为:
0,00H ,2.5V,80H ,5V,FFH
6、按RESET键或STOP键,退出运行状态。
特注:如果没有PC机的情况下,实验系统独立工作时,可以运行监控中已调好的实验程序。实验步骤如下:
1、在DVCC实验系统显示监控提示符“P.”状态下,输入起始段地址F000(后面三个0可以省略)
2、按F1键,再输入起始偏移地址9000
3、按EXEC键,在系统显示器上显示“0809XX”。“XX”表示输入的模拟量经A/\D转换后的数字量。
4、调节电位器W1,显示器上会不断显示新的转换结果。
模拟量和数字量对应关系的典型值为:
0,00H ,2.5V,80H ,5V,FFH
18
实验二 使用DAC0832的D/A转换实验(一) 一、实验目的
熟悉DAC0832数模转换器的特性和接口方法,掌握D/A 输出程序的设计和调试方法。 二、预备知识
1、 DAC0832结构
DAC0832是用先进的CMOS/Si,Cr工艺制成的双列直插式单片8位D/A转换器。它可以直接和8088CPU相接。它采用二次缓冲方式(有两个写信号/WR1、/WR2),这样可以在输出的同时,采集下一个数字量,以提高转换速度。 而更重要的是能够在多个转换器同时工作时,有可能同时输出模拟量。它的主要技术参数如下:分辨率为8 位,电流建立时间为1us,单一电源5V,15V直流供电,可双缓冲、单缓冲或直接数据输入。DAC0832内部结构见图3,3 。
(MSB) 1 3 8 D I 7 D7 Q7 D7 Q7 14 VERF 8 bit 15 12 8 bit 8 bit I out2 16 D/A input DAC 4 11 5 converter reqister reqister I out1 6 9 Rfb 7 D0 Q0 D0 Q0 D I 0 (LSB) LE * LE * 19 ILE 3 AGND 1 CS 20 2 Vcc WR1 10 18 DGND WR2 17
图3,3 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:数据传输控制信号输入线,低电平有效;
19
*/WR2:DAC寄存器写选通输入线,负脉冲(宽于500ns)有效。当/XFER为“0”且/WR2有效时,输入锁存器的状态被传送到DAC寄存器中;
*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的连接方法,运放的电压输出可以分为单极型和双极型两种。图3,4是一种双极型电压输出电路。
图3,4中,DAC0832的Iout2被接地,Iout1接运放LM324的反相输入端,LM324的正相输入端接地。运放的输出电压AOUT之值等于Iout1与Rfb之积,AOUT 的极性与
20
DAC0832的基准电压VREF极性相反。单极性输出端AOUT0 = ,〔VREF×(输入数字量的十进制数)〕/256, 如果在单极型输出的线路中再加一个放大器,便构成双极型输出线路,
N,5。其中N为输入数字量的十进制数。 双极性输出端AOUT=(2VERF/256)×
三、实验内容
1、实验原理
实验原理如图 3,4所示,由于DAC0832有数据锁存器、选片、读、写控制信号线,故可与 8088CPU 总线直接接口。图中是只有一路模拟量输出,且为单极型电压输出。DAC0832工作于单缓冲方式,它的ILE接+5V,/CS和/XFER相接后作为0832芯片的片选0832CS。这样,对DAC0832执行一次写操作就把一个数据直接写入DAC寄存器、模拟量输出随之而变化。
+12VVCCVCC10K10K
U32A2U315.1KU32B61117D0XD0Iout1lsbDI073126Vcc20AOUTIout2DI155LM324DI2GND94LM324AOUT011RfbDI3164DI481510KVrefDI5VCC14DI6GND-12V13D7XD7msbDI719ILE181VREF10KWR2CSCS217WRY2WR1XferVREFXWR0832GND+12VW210K330
3-4
图3,4
2 、 实验线路的连接
(1)将D/A区0832片选信号CS插孔和译码输出Y2插孔相连。
(2)用排线将D/A区D0,D7连到BUS2区XDO,XD7。
(3)将0832的WR信号线连到BUS3区的XWR上。
(4)D/A区的?12V插孔与外置电源的?12V端相连,如果电源内置内部已连好。
(5)W2区的VIN插孔和D/A区的,12V插孔相连。
(6)D/A区的VREF接W2使VERF= +5V。
(7)示波器的连线参考帮助——帮助主题——DVCC帮助——DVCC实验系统示波器使用说明。点击窗口,进入示波器窗口,在示波器上右击,固定在顶部。在连接好示波器后,示波器会显示不规则的干扰信号。注意:请勿打开多个示波器窗口。
21
(8)也可以去掉连线的(4)、(5),将(6)更改为D/A区的VREF接+5V孔。 3 、 实验软件编程提示
(1)8位D/A转换器DAC0832的口地址为020H,输入数据与输出电压的关系为:
AOUT0,,VREF*N/256 AOUT= ,2VERF*N/256,5
VERF表示参考电压;N表示输入数字量;这里参考电压VERF=,5V。
(2)产生方波只需将数字量00H、FFH交替输出到DAC0832。产生锯齿波只需将数字量0逐渐递增输出到DAC0832。
本实验要求在AOUT端输出方波信号,方波信号的周期由延时时间常数确定。由于本电路为双极型输出,因此输出端AOUT信号值为,5,,5V。当数字量为0时,AOUT=,5V;当数值量为80H时,AOUT,0V;当数值量为FFH时,AOUT=,5V
四、实验软件框图:
开始
数据00送AL寄存器
AL中的数据输送到0832
延时
取反AL中的数据
五、实验步骤
1 、 根据原理图3,4正确连接好实验线路
2 、 正确理解实验原理
3 、 运行实验程序
(1)联机时,实验程序文件名为\DVCC\H8EXE\H82S.EXE。
(2)单机时,实验程序起始地址为F000:90A0。
在系统显示监控提示符“P.”时:
输入F000按F1键
输入90A0按EXEC键
在系统上显示执行符“『”。
4、用示波器测量0832左侧AOUT插孔,应有方波输出,幅值,5,,5V。方波周期约为1ms。
22
实验三 使用DAC0832的D/A转换实验(二) 一、实验目的
进一步掌握数/模转换的基本原理。
二、实验内容
1、 实验原理基本同实验二
2、 实验线路的连接同实验二
3 、实验软件编程提示:
本实验在AOUT端输出锯齿波。只要将数字量0,256(00H,FFH)从0开始逐渐加1
递增直至256为止,不断循环,在AOUT端就会输出连续不断的锯齿波。 三、 实验软件框图
开始
00AL 数据送寄存器
AL0832 中的数据输出到
AL 中的数据增量
四、实验步骤
1、 根据原理图正确连接好实验线路。(图同实验二)
2、 运行实验程序
(1)联机时,实验程序文件名为\DVCC\H8EXE\H83S.EXE。
(2)单机时,实验程序起始地址为F000:90B0。
在系统显示监控提示符“P.”时,
输入F000按F1键 输入90B0按EXEC键
在系统上显示执行符“『”。
2、用示波器测量0832左侧OUT插孔,应有锯齿波输出。
23
实验四 并行口8255A应用
一、实验目的
进一步掌握8255A可编程并行口使用方法。
二、预备知识
1、 8255A结构
8255A是可编程并行接口芯片,双列直插式封装,用+5V单电源供电,如图3,5是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端口地址见 表3,1
3-1 表
操作类型A1 A0 / RD /WR /CS 操作方向
PA? 数据总线0 0 0 1 0
PB? 数据总线输入(读)0 1 0 1 0
PC? 数据总线1 0 0 1 0
0 ?PA 数据总线0 1 0 0
1 ?PB 数据总线输出(写)0 1 0 0
0 ?PC 数据总线1 1 0 0
1 ? 数据总线控制字1 1 0 0
数据总线三态× × × × 1
非法状态 断开1 1 0 1 0
数据总线三态 × × 1 1 0
24
内部逻辑 外设接口CPU 接口
I/O A 组 A 组端口 PA7~PA0 控制A8 () 双向 数据 总线 数据 AC 组端口 总线缓冲器I/O D7~D0 8 位内部数据总线44 高位()PC7~PC0 I/O -RD 读、写 BC 组端口 PC0~PC2 -WR 控制 A1 A0 44 低位()B 组逻辑RESET 控制 I/O B 组端口 PB7~PB0 -CS B8 ()
图3,5
3、 8255,工作方式
8255A芯片有三种工作方式: 方式0、方式1、方式2。 它通过对控制寄存器写入不同的控制字来决定其三种不同的工作方式。
方式0 : 基本输入/输出 8 I /O PA 7~0 4 I /O PC 7~4 4 I /O PC 3~0 8 PB 7~0 I /O
图3,6(a) 方式0引脚功能
如图3,6(a)所示。 该方式下的A口8位和B口8位可以由输入的控制字决定为输入或输出,C 口分成高4 位(PC7~PC4)和低4位(PC3~PC0)两组,也有控制字决定其输入或输出。 需注意的是:该方式下,只能将C口其中一组的四位全部置为输入或输出。
方式1 : 选通输入/输出
8255 8255 PA7~0 DATA DATA PA7~0 PC4 STBA PC7 OBFA PC5 IBFA PC6 ACKA PC3 INTRA PC3 RD INTRA WR PC7~6 I/O PC5~4 I/O PB7~0 DATA PB7~0 DATA PC2 STBB PC2 OBFB IBFB PC1 PC1 ACKB PC0 PC0 INTRB
INTRB
图3,6(b)方式1输入 图3,6(c)方式1输出
25
如图3,6(b)、(c)所示。该方式又叫单向输入输出方式,它分为A、B两组,A组由数据口A和控制口C 的高4位组成,B组由数据口B和控制口C的低4位组成。数据口的输入/输出都是锁存的,与方式0不同,由控制字来决定它作输入还是输出。C口的相应位用于寄存数据传送中所需的状态信号和控制信息。
方式2 : 双向输入输出 8255 DATA PA7~0 OBF PC7 ACK PC6 WR IBF PC5 PC4 STB RD PC3 INTR PC2~0 I/O
图3,6(d)方式2双向输入输出
如图3,6(d)所示。 本方式只有A组可以使用,此时A口为输入输出双向口,C口中的5位(PC3,PC7)作为A口的控制位。
4、 8255A控制字
7 6 5 4 3 2 1 0
,输入输出 PC30:1=, 0=
口输入输出组 PB: 1=,0= B
方式选择方式方式 :0=0,1=1
,输入输出 PC74:1=, 0=
口输入输出 PA:1=,0=
方式选择方式组 :00=0 A
方式 01=1
方式 1×=2
方式标志有效 :1=
(1) 方式选择控制字
26
(2) PC口按位置/复位控制字
主片 7 6 5 4 3 2 1 0
置位复位 × × × 1=,0=
无关位选择, 000111
置位复位标志有效 /:0=
三、实验内容
1、实验原理
实验原理图如图3,7所示,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路口方向,之后重复上述过程。
L2U25344U16L5D0D0PA0333L2218JR2D1PA11A11Y1322L54161L8D2PA21A21Y2311L86142D3PA31A31Y33040L118123L11D4PA41A41Y429394D5PA528381195D6PA62A12Y127371376D7D7PA72A22Y215572A32Y35181738VCCIORDRDPB02A42Y436199IOWRWRPB19201A0A0PB21G82119680*8A1A1PB32G3522RST1RESETPB462374LS240IO9CSPB524L1PB625PB7U17L414L1218JR1PC01A11Y115L44161L7PC11A21Y216L76142PC21A31Y317L108123L103-7PC31A41Y4134PC412L31195L3PC52A12Y111L61376PC62A22Y210L91557L6PC72A32Y3L121738VCC2A42Y482559L911G19680*8L122G74LS240
图3,7
8255A的PB4 ~ PB7对应黄灯,PC0 ~ PC3对应红灯,PC4~ PC7对应绿灯。8255A工作于模式0,并置为输出。由于各发光二极管为反向驱动,使其点亮应使8255A相应端口置1。
27
2、实验线路连接
L1,PC0 L4,PC1 L7,PC2 L10,PC3
L2,PB4 L5,PB5 L8,PB6 L11,PB7
L3,PC4 L6,PC5 L9,PC6 L12,PC
四、实验软件框图 开始
825580H0 置控制字,使各端口均为输出口,且均工作于方式
4 使个路口的红灯全亮
延时一段时间
13 点亮、路口绿灯
延时
13 熄灭、路口绿灯
13 、路口黄灯闪烁八次
四个红灯全亮
24 点亮、路口绿灯
延时
24 熄灭、路口绿灯
24 、路口黄灯闪烁八次
四个红灯全亮
五、实验步骤
1、按图3,7连好线路。
2、运行实验程序。
28
(1)联机时,实验程序文件名为\DVCC\H8EXE\H84S.EXE。
(2)单机时,实验程序起始地址为F000:90E0。
在系统显示监控提示符“P.”时:
输入F000按F1键
输入90E0按EXEC键
在系统上显示执行符“『”。同时L1,L12发光二极管模拟交通灯显示。
29
实验五 8253A定时/计数器实验
一、实验目的
学习8253A可编程定时/计数器与8088CPU的接口方法;了解8253A的工作方式; 掌握8253A在各种方式下的编程方法。
二、预备知识
1、 8253A内部结构
8253A定时/计数器具有定时、计数双功能。它具有三个相同且相互独立的16 位减法计数器,分别称为计数器0、计数器1、计数器2。每个计数器计数频率为0~2MHZ, 其内部结构如图3,8所示。由于其内部数据总线缓冲器为双向三态,故可直接接在系统数据总线上,通过CPU写入计数初值,也可由CPU读出计数当前值;其工作方式通过控制字确定;图中的读写控制逻辑,当选中该芯片时, 根据读写命令及送来的地址信息控制整个芯片工作;图中的控制字寄存器用于接收数据总线缓冲器的信息:当写入控制字时,控制计数器的工作方式,当写入数据时则装入计数初值,控制寄存器为8位, 只写不能读。
15 15 0 0 0 15 D0~D7 CLK0 数据 GATE0 MSB LSB MSB LSB MSB LSB 总线0 锁存器计数器 OUT0 缓冲器 0 15 15 0 0 15 -RD CLK1 / 读写 计数器 MSB LSB MSB LSB MSB LSB -WR GATE1 1 计数器A0 OUT1 逻辑 A1 -CS CLK0 OUT0 CLK2 控制字GATE0 GATE2 2 计数器 寄存器CLK1 OUT2 OUT1 GATE1 OUT2 CLK2 GATE2
图3,8 8253A 内部结构图 图3,9 计数器 内部结构图
2、 计数器内部结构
如图3,9所示,每个计数器由一个16位可预置的减1计数器组成,计数初值可保存在16位的锁存器中,该锁存器只写不能读。在计数器工作时,初值不受影响,以便进行重复计数。图中每个计数器有一个时钟输入端CLK作为计数脉冲源, 计数方式可以是二进制,计数范围1~10000H,也可以是十进制,计数范围1~65536。门控端GATE用于控制计数开始和停止。输出OUT端当计数器计数值减到零时,该端输出标志信号 。 3、 8253A端口地址选择见 表3,2
30
3-2 表
寄存器选择与操作 /CS /RD /WR A1 A2 #0 写入计数器0 1 0 0 0
#1 写入计数器0 1 0 0 1
#2 写入计数器0 1 0 1 0
写入控制寄存器0 1 0 1 1
#0 读计数器0 0 1 0 0
#1 读计数器0 0 1 0 1
#2 读计数器0 0 1 1 0
无操作(三态)0 0 1 1 1
禁止(三态)1 × × × ×
无操作(三态)0 1 1 × ×
4、 8253A功能
8253 A既可作定时器又可作计数器:
(1) 计数: 计数器装入初值后,当GATE为高电平时,可用外部事件作为CLK 脉冲对计数值进行减1 计数,每来一个脉冲减1,当计数值减至0时,由OUT 端输出一个标志信号。
(2) 定时: 计数器装入初值后,当GATE为高电平时,由CLK 脉冲触发开始自动计数,当计数到零时,发计数结束定时信号。
除上述典型应用外,8253A还可作频率发生器、分频器、实时钟、单脉冲发生器等。 5、 8253A控制字
7 6 5 4 3 2 1 0
选计数器数制控制二进制 00 0 :0 = ,1= BCD
选计数器 01 1
选计数器工作方式选择方式 10 2 :000 0
非法方式 11 001 1
方式 ×10 2
计数器锁存命令方式 00 ×11 3
只读写低位高位自动置方式 01 /8,80 100 4
只读写高位低位自动置方式 10 /8,80 101 5
31 先写低位后写高位 11 8,8
说明 :
(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端输出一个宽度等于一个时钟周期的负脉冲。
三、 实验内容
本实验原理图如图3-10所示,8253A的A0、A1接系统地址总线A0、A1,故8253A 有四个端口地址,如端口地址表3,2所示。8253A的片选地址为48H ~ 4FH。 因此,本实验仪中的8253A四个端口地址为48H、49H、4AH、4BH,分别对应通道0、通道1、通道2和控制字。采用8253A通道0,工作在方式3(方波发生器方式),输入时钟CLK0 为1MHZ, 输出OUTO 要求为1KHZ的方波,并要求用接在GATE0引脚上的导线是接地(“0”电平)或甩空(“1”电平)来观察GATE对计数器的控制作用,用示波器观察输出波形。
32
U34810OUT0XD0D0D0OUT0CH1711GATE0D1GATE0+5V69D2CLK074LS3935CLK0T4D34MPD43D5213VCCD6OUT1114XD7D7D7GATE1158253CSCLK121CSXRD22Y4RDKBB-2XWR238251CSWR17OUT2OUT2XA01916Y5A0GATE2GATE2XA12018A1CLK2CLK28253
图3,10 四、 实验线路连接
(1)8253A的GATE0接+5V。
(2)8253A的CLK0接分频器74LS393(左上方)的T4插孔,分频器的频率源为4MHZ。
(3)示波器的连接参考实验二
五、 实验软件框图
开始
8253 置工作方式控制字
8253 启动
结束
六、实验步骤
1、按图3-10连好实验线路
2、运行实验程序
(1)联机时,实验程序文件名为\DVCC\H8EXE\H85S.EXE。
(2)单机时,实验程序起始地址为F000:9180。
在系统显示监控提示符“P.”时:
输入F000按F1键
输入9180按EXEC键
4、用示波器测量8253左侧OUT0插孔,应有方波输出。
5、
33
实验六 使用8259A的单级中断控制实验 一、实验目的
1、掌握中断控制器8259A与微机接口的原理和方法。
2、掌握中断控制器8259A的应用编程。
二、预备知识
1、8259A的内部结构
8259A是专为控制优先级中断而设计的芯片。它将中断源按优先级排队、辨认中断源、提供中断向量的电路集成于一体,只要用软件对它进行编程,就可以管理8 级中断。
如图3-11所示,它由中断请求寄存器(IRR)、优先级分析器、 中断服务寄存器(ISR)、中断屏蔽寄存器(IMR)、数据总线缓冲器、读写控制电路和级联缓冲器、比较器组成。
-INTA INT
数据D0~D7 总线控制逻辑
缓冲器
-RD 读写 -WR IR0 服优 A0 电路中断IR1 务先IR2 请求 -CS 寄级IR3 寄存 IR4 存分 CAS0 器级联缓冲 IR5 器析CAS1 I RR / 器IR6 CAS2 I SR 器IR7 比较器
IMR 中断屏蔽寄存器SP/-EN 内部总线
图3-11
中断请求寄存器:寄存所有要求服务的请求IR0~IR7。
中断服务寄存器:寄存正在被服务的中断请求。
中断屏蔽寄存器:存放被屏蔽的中断请求,该寄存器的每一位表示一个中断号, 该位为1,屏蔽该号中断,否则开放该号中断。
数据总线缓冲器:是双向三态的,用以连接系统总线和8259A内部总线, 通过它可以由CPU对8259A写入状态字和控制字。
读写控制电路:用来接受I/O命令,对初始化命令和操作命令字寄存器进行写入,以确
34
定8259A的工作方式和控制方式。
级联缓冲器/比较器:用于多片8259A的连接,能构成多达64级的矢量中断系统。 2、 8259A编程及初始化
(1) 写初始化命令字
* 写初始化命令字ICW1(A0=0),以确定中断请求信号类型,清除中断屏蔽寄存器,中断优先级排队和确定系统用单片还是多片。
7 6 5 4 3 2 1 0
A7 A6 A5 1
不需写需要写 0=ICW4;1=ICW4
多片级连只一片 0=8259;1=8259
中断向量地址间距地址间距(模式下为) 0=8;1=480880
上升沿触发高电平触发 0=;1=
为标志位 1,ICW1
中断向量位(模式下为) A7,A6,A58088000
* 写初始化命令字ICW2,以定义中断向量的高五位类型码。
7 6 5 4 3 2 1 0
A15/T7 A14/T6 A13/T5 A12/T4 A11/T3 A10 A9 A8
A15-A8:8088/8085方式下的中断向量高8位,8088方式下A8,A0不用,设为000
* 写初始化命令字ICW3,以定义主片8259A中断请求线上IR0~IR7有无级联的8259A片。 T7-T3:8086、8088方式下的中断向量
7 6 5 4 3 2 1 0
主片
??? 第i位=0,表明IRi引脚上无从片 IR7 IR0 第i位=1,表明IRi引脚上有从片
7 6 5 4 3 2 1 0
从片
000:从片连在主片的IR0上 001:从片连在主片的IR1上
* 写初始化命令ICW4,用来定义8259A工作时用8085模式,还是8088模式,以及中断服
111::从片连在主片的IR7上 35
务寄存器复位方式等。
7 6 5 4 3 2 1 0
工作于方式 0=8086/8088
工作于方式 1=8080/8085
中断服务寄存器不自动复位用命令复位 0=,EOI
中断服务寄存器自动复位 1=
从片 0=
主片 1=
与数据总线无缓冲器连接 0=8259
与数据总线有缓冲器连接 1=8259
单片一般嵌套方式 0=8259,
多片特殊嵌套方式 1=8259,
(2) 写控制命令字
* 写操作命令字0CW1,用来设置或清除对中断源的屏蔽。
7 6 5 4 3 2 1 0
IR7 IR0 „
第i位=0,对应的中断请求IRi开放
第i位=1,对应的中断请求IRi屏蔽
注: OCW1如不写,则在初始化命令写入后,OCW1为全开放状态。
* 操作命令字OCW2,设置优先级是否进行循环、循环方式及中断结束方式。
36
7 6 5 4 3 2 1 0
R SL EOI 0 0 L2 L1 L0
识别码用户规定的最低优先级编码 000~111, IR0-IR7
中断服务结束命令(命令) 1=EOI
编码无效 0=L2 L1 L0
编码有效 1=L2 L1 L0
固定优先权 0=
循环优先权 1=
注: 8259A复位时自动设置IR0优先权最高,IR7优先权最低。
* 操作命令字OCW3,设置查询方式、特殊屏蔽方式以及读取8259中断寄存器的当前状态。
7 6 5 4 3 2 1 0
0 0 1
无用 00,01=
下一个读中断请求寄存器 10=RDIRR
下一个读中断服务寄存器 11=RDISR
查询命令不是查询命令 1=;0=
无用 00,01=
特殊屏蔽方式清除 10=
特殊屏蔽方式设置 11=
(3) 8259A查询字
通过OCW3命令字的设置,可使CPU处于查询方式,随时查询8259A有否中断请求, 有则转入相应的中断服务程序。
37
7 6 5 4 3 2 1 0
I W2 W1 W0
有中断发生有中断请求 1= 000=IR0
无中断发生有中断请求 0= 001=IR1
有中断请求 111=IR7
三、实验内容
本系统中已设计有一片8259A中断控制芯片,工作于主片方式,8个中断请求输入端IR0~IR7对应的中断型号为8~F,其和中断矢量关于如下表3,3所示。
3 表3,
8259A 中断源中断类型号中断矢量表地址
IR0 8 20H~23H
IR1 9 24H~27H
IR2 A 28H~2BH
IR3 B 2CH~2FH
IR4 C 30H~33H
IR5 D 34H~37H
IR6 E 38H~3BH
IR7 F 3CH~3FH
根据实验原理图3-12,8259A和8088系统总线直接相连,8259A 上连有一系统地址线A0,故8259A 有2 个端口地址, 本系统中为20H、21H。 20H 用来写ICW1, 21H 用来写ICW2、ICW3、ICW4,初始化命令字写好后, 再写操作命令字。OCW2、OCW3 用口地址20H,OCW1用口地址21H。图3-12中,使用了3号中断源,IR3插孔和SP插孔相连,中断方式为边沿触发方式,每按一次AN按钮产生一次中断信号,向8259A发出中断请求信号。如果中断源电平信号不符规定要求则自动转到7号中断,显示“Err”。CPU响应中断后,在中断服务中, 对中断次数进行计数并显示,计满5次结束,显示器显示“8259Good”。
38
JR111181XD0D0D0IR010192D1IR19203D2IR28214D3IR37225D4IR46236D5IR55247D6IR64258XD7D7D7IR79INT17VCCINTRINT26164.7KX8GNDINTAINTASP/ENCS11Y6CSRD312XRDRDCAS0CAS0WR213XWRWRCAS1CAS1A02715XA0A0CAS2CAS28259
SP
图3,12
四、实验线路连接
(1)8259模块上的INT1连8088的INTR(在主板键盘矩阵下面)。
(2)8259模块上的INTA连8088的INTA(在主板键盘矩阵下面)。
(3)MP区SP插孔和8259A的3号中断IR3插孔相连。SP端初始为低电平。
(4)8259模块上的D0,D7连到BUS2区的XD0,XD7。
(5)8259模块上的CS端接Y6。
(6)8259模块上的A0连到BUS区的XA0上。
(7)8259模块上的RD、WR信号线分别连到BUS3区的XRD、XWR上。
(8)8259的VCC接+5V,GND接GND。
五、实验软件框图
主程序: 中断服务程序:
开始 关中断
“8259——1” 调用显示子程序 显示中断次数
N 8259 填中断向量表5 判中断次数满次否,
Y 8259 初始化 1 次数加“good” 调用显示 开中断 中断返回 结束
等待中断
39
六、实验步骤
1、按图3-12连好实验线路
2、 运行实验程序
(1)联机时,实验程序文件名为\DVCC\H8EXE\H86S.EXE。
(2)单机时,实验程序起始地址为F000:91A0。
在系统显示监控提示符“P.”时:
输入F000按F1键 输入91A0按EXEC键
1”。 在系统上显示“8259,
3、 按AN按钮,按满5次,显示器显示“GOOD”。
40
实验七 使用8251A的串行接口应用实验(一),,串行发送 一、实验目的
掌握用8251A接口芯片实现微机间的同步和异步通信。
掌握8251A芯片与微机的接口技术和编程方法。
二、预备知识
8251A是一种可编程的同步/异步串行通信接口芯片,具有独立的接收器和发送器,能实现单工、半双工、双工通信。
1、8251A内部结构
8251A内部结构框图如图3-13所示。
DB7~0
状态接受数据
缓冲器缓冲器
发送数据 I/O 命令缓冲器 缓冲 器 RESET 内部 TxD 总线 发送器CLK / 读写C/D 控制 TxRDY RD TxE WR 发送 逻辑 TxC CS 控制 RxRDY DTR 接受 调制 SYNDET/BD DSR 控制解调器 RxC RTS 控制 CST RxD 接受器 图3-13
图中I/O缓冲器是双向三态,通过引脚D0~D7和系统数据总线直接接口, 用于和CPU传递命令、数据、状态信息。读写控制逻辑用来接收CPU的控制信号、 控制数据传送方向。CPU对8251A的读写操作控制表如表3,4所示。
图中收发器功能是从引脚RXD(收)和TXD(发)收发串行数据。接收时按指定的方式装配成并行数据,发送时从CPU接收的并行数据,自动地加上适当的成帧信号转换成串行数据。8251A内部的调制解调器控制器,提供和外接的调制解调器的握手信号。
41
3-4 表
操作 CS C/D RD WR , D0-D7 任意任意任意无操作呈高阻 1
写控制字 0 1 1 0
写数据 0 0 1 0
读状态 0 1 0 1 读数据 0 0 0 1
2、 8251A的方式控制字和命令控制字
方式控制字确定8251A的通信方式(同步/异步)、校验方式(奇校/偶校/不校)、字符长
度及波特率等,格式如下图3-14所示。命令控制字使8251A处于规定的状态以准备收发数
15。方式控制字和命令控制字无独立的端口地址,8251A 根据写入的次据,格式如下图3,
序来区分。CPU对8251A初始化时先写方式控制字,后写命令控制字。
异步方式不确定个停止位 :00=;01=1 7
个停止位个停止位 10=3/2;11=2 6
同步方式内同步外同步 :X0=;X1= 5 个同步字符单个同步字符 0X=2;1X= 4 奇偶校验无校验奇校验偶校验 :X0=;01=;10= 3
2 字符长度位位位位 :00=5;01=6;10=7;11=8
1
波特率系数同步方式异步异步 :00=;01=×1;10=×16 0 异步 11= ×64 图3-14
EH 7 外部搜索方式,1=启动搜索同步字符 IR 6 内部复位,1=使8251返回方式指令格式 RST 5 请求发送迫使输出到,1=RST0 ER 4 错误标志复位,1=使全部错误标志复位 SBR 3 送中止字符,1=迫使TXD为低;0=正常工作 K RXE 2 接收允许,1=允许;0=屏蔽 DTR 1 数据终端准备好,1=迫使DRT为0 TXE 0 发送允许,1=允许;0=屏蔽
图3,15
42
3、 状态寄存器
状态寄存器用于寄存8251A的状态信息,供CPU查询。各位定义如下:
7 6 5 4 3 2 1 0
DSR SYNDET FE OE PE TXE RXRDY TXRDY
帧错误除外同管脚定义 :*** TXRDY 帧出错由 1=,
命令中复位奇偶错误出错。由命令中复位 ER :1=ER
溢出错误溢出错。由命令中复位 :**1=ER
TXRDY位:当数据缓冲器空时置位,而TXRDY引脚只有当条件( 数据缓冲器
空? /CTS?TXE )成立时才置位。
溢出错误:CPU没读走前一个字符,下一个字符又接收到,称为溢出错误。
帧错误:在字符结尾没检测到停止位,称为帧错误。
三、实验内容
如图3,16所示,TXC和RXC分别为8251A的发送时钟和接收时钟。它由片外8253A的OUT1提供。8251A的片选地址为050,05FH(系统中已连好)。本实验要求以查询方式进行收发,在1号机上装串行发送程序,在2号机上装串行接收程序,则在1号机上键入的字符显示在2号机的显示器上。
U34 由于本系统监控中已对8253A、8251A进行初始化,因此本实验可以直接进入对串行口810D0OUT0OUT0711D1GATE0GATE069U36CU36DD2CLK0CLK05状态的查询 D34VCC5698D43D52130.01D6OUT174LS0474LS04114D7GATE13K15CLK1211K1KCSXRD228253CSRDXTAL3XWR23WR171.8432MY4OUT2OUT2KBB-2XA019168251CSA0GATE2GATE2XA12018GNDA1CLK2CLK2Y58253
U352719XD0D0D0TxD28D1TXD1115D2TxRDY29D3TxCLKTXDKBB-1518D4TxEMPTRXD16D573D6RxDRXD8XD7D7D714RxRDY1125CSRxCLKXRD1316RDSYNDETXWR10WRXA01222C/DDSR24DTRPCLK2017CLKCTSRST2123RESETRTS8251 GND
图3,16
43
四、实验线路连接
(1)将1号机SIO区RXD1插孔和2号机的TXD1插孔相连。
(2)将1号机SIO区TXD1插孔和2号机的RXD1插孔相连。
(3)将1号机和2号机的地线GND插孔相连。 五、实验程序框图
开始
“8251——1” 调用显示子程序
读取键盘状态
判有键按下否,N
Y
延时
读取键值
Y 是数字键否, Y
N 键值转换成显示代N 判是MON键 码 读取串行口状态 Y
按MON键前未按数字键, N 判可发送否,
Y
显示“Err” Y
发送键值所对应的显示代码
结 束
读取串行口状态
N 判可接收否, 显示
GOOD Y 结束 从串行口读数据
判接收到的数据是否Y 按键次数加1
和
刚才发送的数据相等 N 显示“Err”
结束
44
六、实验步骤
1、准备2台DVCC系列实验系统,确定1号为发送,2号为接收。
2、确认1号和2号机通信线路连接无误。
3、联机时,必须要2台上位机,接收实验程序文件名\DVCC\H8EXE\H88S.EXE。发送实验程序的文件名为\DVCC\H8EXE\H87S.EXE。
在单机时:
先运行2号机,在2号机处于命令提示符“P.”状态下输入F000,按F1键,再输入9500,
。 按EXEC键。即可进入等待接收状态,显示器显示8251,2
注意:串行接收实验的有关内容见实验八。
后运行1号机,在1号机处于命令提示符“P.”状态下,输入F000,按F1键,再输入9300,按EXEC键。即可进入串行发送状态,显示器显示8251,1。
6、在1号机键盘上按动数字键,在2号机的显示器上应显示对应数字键值。当1号机
上按“MON”键时,1号机显示GOOD,此时可按RESET键或STOP键退出。
45
实验八 使用8251A的串行接口应用实验(二)—串行接收
一、基本内容详见实验七,接收程序框图如
开始
“8251——2” 调用显示子程序
读取串行口状态
N 判允许接收否,
Y
RAM 读取串行口数据存入区
读取串行口状态
N
判允许发送否, Y
取刚才接收的数据发送
显示刚才接收的数
二、实验步骤
同实验七的实验步骤
46
实验九 小直流电机调速实验
一、实验目的
1、 掌握直流电机的驱动原理。
2、 了解直流电机调速的方法。
二、实验内容
1、用DAC0832D/A转换电路的输出,经放大后驱动直流电机。
2、编制程序,改变DAC0832输出经放大后的方波信号的占空比来控制电机转速。 三、实验线路
-5V+12V8550VCCVCC10K10K300RES2U32A2U315.1KU32BPNP61117D0XD0Iout1lsbDI0DOUTDJAOUT73126Vcc20J4Iout2DI155LM324DI28050GND94LM324AOUT011RfbDI3164DI4300GND81510KVrefDI5VCC-12V14RES2DI6GND13D7XD7msbDI7NPN19ILE181VREF10KWR2CS+5VCS217WRY2WR1XferVREFXWR0832GND+12V3-17W210K100
图3,17
四、连接方法
(1)将D/A区0832的片选信号CS插孔和译码输出Y2插孔相连。
(2)用排线将D/A区的D0,D7连到BUS2区的XD0,XD7上。
(3)将D/A区0832的WR信号线连到BUS3区的XWR上。
(4)D/A区的?12V插孔分别与外置电源的?12V端相连,DMOT区的,5V插孔与
外置电源的,5V相连(如果不接,5V,直流电机只按一个方向转)。
(5)W2区的VIN结?12V,如果电源内置,VIN插孔和D/A区的,12V插孔相连。
(6)D/A区的VERF接W2区VERF,并调节W2使VERF,,5V。
(7)将直流电机插头连到DMOT区的J4插座上。
(8)Aout接DJ(不是-5V)。
注意:直流电机区的DJ直接接Vcc或者+5V,电机会直接转,可以用这个方法来测试电机是否能正常工作。
五、实验程序框图
47
开始
置0832口地址
数字量FF送0832,启动D/A
N 数字量减1后=0否,
Y
数字量00送0832,启动D/A
N 数字量加1后=FF否,
Y
六、实验步骤
1、确认连好实验线路。
2、从起始地址开始连续运行程序。
(1)联机时,实验程序文件名为\DVCC\H8EXE\H89S.EXE。
(2)单机时,实验程序起始地址为F000:9600。
在系统显示监控提示符“P.”时:
输入F000按F1键
输入9600按EXEC键
观察直流电机的转速和正反向变化情况。
48
实验十 步进电机控制
一、实验目的
1、 了解步进电机控制的基本原理。
2、 掌握步进电机转动编程方法。
二、实验内容
1、 用8255APB0~PB3输出脉冲信号,驱动步进电机转动。
2、 硬件线路原理图如图3,18。
VCC
4.7K4.7K4.7K4.7KU25U21APB0BA121J3U22A3754522A74LS04U21B
PB1BB346U22B5754527B74LS04U21C
PB2BC561U23A3754522C74LS04U21DPB3BD986U23B5754527D74LS048255
10GP3-18
图3,18
3、 实验预备知识
步机电机驱动原理是通过对它每相线圈中的电流的顺序切换来使电机作步进式旋转。驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可改变步进电机的转速,用微电脑控制步进电机最适合。
三、连接方法
1、8255PB0,PB3依次连到步进电机插头BJDJ区步进电机插头J3右边的BA,BD插孔。
2、将步进电机插头连到DVCC实验系统BJDJ区步进电机驱动输出插座J3上。
四、实验步骤
1、按图3,18连好实验线路图。
2、运行实验程序
(1)联机时,实验程序文件名为\DVCC\H8EXE\H810S.EXE。
49
(2)单机时,实验程序起始地址为F000:9630。
在系统显示监控提示符“P.”时:
输入F000按F1键
输入9630按EXEC键
观察步进电机转动情况。
50
实验十一 继电器控制
一、 实验目的
掌握用继电器控制的基本方法和编程。
二、 实验内容
1、利用8255A PB0输出高低电平,控制继电器的开合,以实现对外部装置的控制。
2、硬件线路原理如图3,19所示
3、实验预备知识: 现代自动化控制设备中都存在一个电子与电气电路的互相联结问题,一方面要使电子电路的控制信号能够控制电气电路的执行元件(电动机、 电磁铁、电灯等);一方面又要为电子电路的电气提供良好的电隔离, 以保护电子电路和人身的安全,电子继电器便能完成这一桥梁作
VCC
JZGNDIN4001U2516EXIC1A4JBJKJINPC01218L2L12740774LS2408255
L1L2330LAMPLAMP
330VCC
图3,19
三、连线方法
1、在EXEC1区插座上插上07芯片。
2、8255A的 PC0连EXEC1区07芯片的第一脚。
3、将JDQ区的JIN插孔与07芯片的第二脚相连。
4、将继电器的常开触点JK接发光二极管L1,常闭触点JB接发光二极管L2,继电器中心抽头JZ接地GND插孔。
四、实验程序框图
51
开始
PC、0清0
延时
PC、0置1
延时
五、实验步骤
1、按图3,19连好实验线路图。
2、运行实验程序
(1)联机时,实验程序文件名为\DVCC\H8EXE\H811S.EXE。
(2)单机时,实验程序起始地址为F000:9680。
在系统显示监控提示符“P.”时:
输入F000按F1键
输入9680按EXEC键
3、继电器应循环吸合,L1和L2交替亮灭。
52
实验十二 存贮器读写实验
一、实验目的
1、熟悉静态RAM的使用方法,掌握8088微机系统扩展RAM的方法。
2、熟悉静态RAM读写数据编程方法。
二、实验内容
对指定地址区间的RAM(2000H~23FFH)先进行写数据55AAH, 然后将其内容读出再写到3000H~33FFH中。
三、硬件电路(系统中已连接好)
查看该实验的存储器运行结果方法为:可以拔掉键盘上方的HM62256芯片,右击调试后出现的数据窗口,设置块地址输入:2000确定后,查看该地址的内容,再右击输入3000确定后,查看是否与2000查看到的内容一致。 四、实验步骤
1、运行实验程序
(1)联机时,实验程序文件名为\DVCC\H8EXE\H812S.EXE。
(2)单机时,实验程序起始地址为F000:9700。
在系统显示监控提示符“P.”时:
输入F000按F1键
输入9700按EXEC键
稍后按RESET键退出,用存贮器读写方法检查2000H,3000H 中的内容应都是
55AA。
53
实验十三 8237A可编程DMA控制器实验 一、实验目的
1、掌握8237A可编程DMA控制器和微机的接口方法。
2、学习使用8237A可编程控制器,实现数据直接快速传送的编程方法。 二、预备知识
DMA—存贮器直接访问技术,用以实现高速CPU 和高速外设之间的大量数据传输。利用DMA方式传送数据时,数据的传送过程完全由硬件控制。其工作过程如下:
* 外设向DMA控制器发DMA请求。
* DMA控制器向CPU发请求。
* CPU执行完现行的总线周期,向DMA控制器发回答信号。
* CPU出让数据、地址及控制总线,由DMA控制接管。
* 进行DMA传输,传输的内存地址、字节数由DMA控制器控制。
* 规定的字节数传完,DMA撤消向CPU的请求信号,CPU重新控制总线。
当然,据此DMA传送不仅适用于高速外设和存贮器间的数据传递,也适用于存贮器与存贮器间、外设与外设之间的数据传送。
1、8237A可编程 DMA控制器结构和信号名称。
8237A可编程 DMA控制器内部结构如图3,20所示。主要有如下几部分组成:
-EOP RESET 1 加计数器1 减计数器-CS I/O A0~A3 READY 时序 缓冲16 CLOCK 16 地址暂存器()字数暂存器() 和控制AEN ADSTB 逻辑-MEMR 输出-MEMW -IOR 缓A4~A7 -IOW / 读写缓冲器 读缓冲器 冲
优 当前地址当前字数 基地址基本字数 先()()16 16 ()()16 16 DREQ 级命令控 0~3
编 制
码 逻辑HLDA 写缓冲器读缓冲器和
循 I HRQ 环8 命令() O DB0~DB7 优 缓 先 DACK 8 屏蔽() 冲0~3 逻 状态 读写方式暂存器 辑
8 请求()8 ()4x6 8 ()()
3-20 8237DMA 图内部结构
(1) 时序和控制逻辑:接收外部时钟及片选信号,产生内部时序和读写控制信号及地址输
54
出信号。
CLK:外时钟输入,控制数据传输速率。
/CS :片选低有效。
RESET:复位输入,高有效,置位屏蔽寄存器,清除其余寄存器。
READY:准备好信号, 高有效。当选用慢速器件时, 需延长总线周期, 逼使READY为低,一旦传输完成,READY变高,表示准备好,可以进行下一次传输。
AEN:地址允许输出,高有效。
/MEMR:存贮器读输出,低有效(三态)。
/MEMW:存贮器写输出,低有效(三态)。
/IOR:输入/输出口读,为双向三态,低有效。 在空闲周期作为输入,用于读取内部寄存器;在芯片操作期,作为输出,从输入/输出器件读出数据。
/IOW:输入/输出写,双向三态,低有效。在芯片空闲周期,作为输入信号, 用于CPU将信息写入内部寄存器;在芯片操作周期,作为输出信号,将数据写入输入/输出器件中。
EOP:过程结束双向信号线,低有效。当外部信号加到EOP脚时,DMA传输被终止;任一通道上当计数终止时,产生一个有效的EOP输出信号。终止DMA服务并复位内部寄存器。
(2) 优先级编码逻辑: 对同时提出的多个DMA通道进行优先级排队。8237A有两种优先级编码(固定优先级和循环优先级)。
固定优先级:通道0最高,依次类推。
循环优先级:本次循环中,最近的一次服务的通道在下次循环中变成最低。
DREQ0,3 :四个DMA通道请求信号,有效电平通过编程确定,芯片复位时处于低电平。
HRQ:总线请求输出信号,高电平有效。
HLDA:总线保持响应输入信号,高有效。表示芯片取得总线控制权。
DACK0,3:四个通道的DMA应答输出信号,以
通知
关于发布提成方案的通知关于xx通知关于成立公司筹建组的通知关于红头文件的使用公开通知关于计发全勤奖的通知
外设。有效电平编程确定。
(3) 程序控制逻辑: 对CPU送来的命令进行译码,程序命令表如表3,5所示
55
3-5 表
A3 A2 A1 A0 读操作写操作
1 0 0 0 读状态寄存器写命令寄存器
1 0 0 1 无效写请求寄存器
1 0 1 0 无效写单个通道屏蔽
1 0 1 1 无效写方式寄存器
/ 1 1 0 0 无效清除先后触发器
() 1 1 0 1 读暂存寄存器复位芯片主清除
清除主屏蔽寄存 1 1 1 0 无效
1 1 1 1 无效写主屏蔽寄存器 器
(4) 数据、地址缓冲器组
A0,A3:最低四位地址线,双向三态。芯片空闲周期,作为输入线,用于对芯片内部寄存器的寻址;在芯片操作周期,作为输出信号,提供低4位地址。
A4,A7:高四位地址线,输出三态。在芯片操作周期,提供高4位地址。
DB0,B7:8位双向数据线。在芯片空闲周期,经/IOR命令,将内部寄存器值送到系统总线上;而在/IOW命令下,由CPU写内部寄存器;在芯片操作周期,作为高8 位地址,经数据缓冲器送到地址总线上,并由ADSTB选通到外部锁存器,与A7,A0组成16 位地址。在芯片处理存贮器,存贮器传送期间,存贮器的读出数据经数据总线送入数据缓冲器;然后在存贮器写周期,此数据经数据总线装入到存贮器的新单元里。 2、8237A可编程 DMA控制器内部寄存器及其功能
地址 功能
00H 通道0基地址寄存器和当前地址计数器
01H 通道0基字节寄存器和当前字节计数器
02H 通道1基地址寄存器和当前地址计数器
03H 通道1基字节寄存器和当前字节计数器
04H 通道2基地址寄存器和当前地址计数器
05H 通道2基字节寄存器和当前字节计数器
06H 通道3基地址寄存器和当前地址计数器
56
07H 通道3基字节寄存器和当前字节计数器 08H 命令寄存器(写)/状态寄存器(读)
09H 请求寄存器(只写)
0AH 屏蔽位寄存器(只写)
0BH 方式寄存器(只写)
0CH 清先/后触发器(只写)
0DH 总清除(只写)
0EH 清除主屏蔽寄存器(只写)
0FH 写主屏蔽寄存器(只写)
0DH 暂存寄存器(只读)
3 、 8237寄存器编程
(1)命令寄存器(地址08H,只写)
7 低电平有效;高电平有效 0=DACK1=DACK
6 高电平有效;低电平有效 0=DREQ1=DREQ
5 滞后写入;扩展写入。当时任意 0=1=bit 3=1
4 固定优先权;循环优先权 0=1=
3 正常时序;压缩时序。当时任意 0=1=bit 0=1
允许芯片工作;禁止芯片工作 0=1= 2
禁止通道地址保持允许通道地址保持 00;1=0 1
禁止存储器到存储器传送;允许传送 0=1= 0
(2) 请求寄存器(地址09H,只写)
7 6 5 4 3 2 1 0
通道 00=0
请求位复位通道 0= 01=1
请求位置位通道 1= 10=2
通道 11=3
57
(3) 屏蔽位寄存器(地址0AH,只写)
7 6 5 4 3 2 1 0
通道 00=0
清除屏蔽位通道 0= 01=1
置屏蔽位通道 1= 10=2
通道 11=3
(4) 方式寄存器(地址0BH,只写)
7 请求方式;单字节方式;块传送方式; 00=01=10=
级连方式 6 11=
5 地址递增;地址递减 0=1= 4 禁止自动预置;允许自动预置 0=1=
3
校验传送;写传送;读传送;无效 00=01=10=11= 2 1 通道;通道;通道;通道 00=001=110=211=3
0
单字节传输方式: DMA传送时,仅传送一个字节数据,传输后,字数计数器减1, 地址寄存器加1或减1,并释放总线,将控制权交给CPU。而在新的HLDA后,下一个字节开始传输,当字数计数器从0减至FFFFH时,产生终止计数T/C信号。
块字节传输方式: 在DMA传送周期,实现多字节的传输,直至字数计数器由0减到FFFFH时,产生终止计数信号T/C;或外界输入一个过程结束信号/EOP为止。这种方式下,在DACK变成有效之前,DREQ应一直保持有效。
请求传输方式: 只要没有T/C信号或外界过程结束信号/EOP或DREQ 一直有效,DMA传送可一直进行到外设已传输完全部数据字节为止。
58
级联传输: 连接多个8237A 芯片, 其中一片为主片, 其余为附加片。附加片的8237A的HRQ和HLDA信号分别到主片的DREQ和DACK上。附加片的DMA 请求通过主片的优先级编码电路传给CPU,主片仅对附加片的DREQ请求作出DACK响应, 本身不能输出地址和控制信号。
(5) 主屏蔽寄存器(地址0FH,只写)
7
6 5 4 3 通道:清屏蔽位;置屏蔽位 30=1= 2 通道:清屏蔽位;置屏蔽位 20=1=
通道:清屏蔽位;置屏蔽位1 10=1= 0 通道:清屏蔽位;置屏蔽位 00=1=
(6) 状态寄存器(地址08H,只读)
通道有请求 1=3
通道有请求 1=2
通道有请求 1=1
通道有请求 1=0
通道已终止计数 1=3
通道已终止计数 1=2 通道已终止计数 1=1 通道已终止计数 1=0
三、实验内容
用8237A可编程 DMA控制器实现数据从RAM到RAM的高速传递。
四、实验说明
8237A可编程DMA控制器有四个通道,每个通道都可以独立工作,控制RAM和I/O
59
接口之间高速数据传递,而且通道0和通道1的配合还可以控制实现RAM与RAM之间的数据传递。当系统中需要告诉数据传递或需要分任务工作时,可采用8237A控制器。
由于8237A可编程DMA控制器是与8088/8086微机配套的器件,本实验中介绍的电路既可在8088/8086系统中应用,又可在单片机系统中应用。如图3—21所示,图中设计了总线隔离电路(U3—U5),左边是微机总线,右边是8237总线,8237总线上接有一片6264RAM(U9),当8237A不进行DMA操作时,AEN=0,总线隔离电路开通,微机可以对6264进行读写,8237A也可以作为微机的一个扩展口;当8237A进行DMA操作时,AEN=1,总线隔离电路关闭,微机不能访问6264RAM,而由8237控制6264进行RAM间的相互传递,但这时微机照常对微机总线上的存储器和接口进行访问。
本实验学习使8237控制RAM间的数据高速传递,规定通道0为源地址,1通道为目的地址,通过设置通道0的请求寄存器产生软件请求,8237响应这个软件请求后发出总线请求信号HRQ,使8237进入DMA操作的方法有以下几种:
(1)自动启动
8237的HRQ直接接8237的HLDA上,用HRQ作为8237的总线响应信号。
(2)由微机控制启动
由微机控制在HRQ信号发出以后,待微机总线结束当时的总线周期后,通过控制电路产生高电平总线响应信号接HDLA上,就可以启动8237工作。
在8237进行DMA传递时,当字节计数器减为0时,8237的/EOP引脚输出一个负脉冲表示传递结束。/EOP可以作为外中断信号,以判断DMA传递是否结束。本实验中未用/EOP信号,而是用延时等待传送结束。
实验要求是,将6264RAM中地址为8000,87FFH的2KB数据传送到地址为9000H,97FFH的区域中,8237采用自动启动方式。为了验证传递是否正确,用户可以在源地址区8000,87FF首末地址的几个单元中设置标志字节,传递结束后再检查目的地址区的相应单元的标志字节是否和设置的一致。
五、实验原理图
60
U28237VCC3032MD0MA0DB0A02933DB1A12834DB2A22735DB3A32637DB4A42338DB5A54.7K2239DB6A62140MD7MA7DB7A7U35NC74LS245619READYDREQ0182MD03618XD0D0B0A0EOPEOPDREQ1173317B1A1MMEWRMEMRDREQ2164416B2A2MMEMWMEMWDREQ31551B3A3MIORI/OR146225B4A4MIOWI/OWDACK01371024B5A5HRQDACK1128714B6A6HLDADACK21198237CSMD71115XD7D7B7A7Y0CSDACK319CLKG19129EAENCLKCLKAEN1RSTG12138DIRADSTBRSTRESETADSTB
U4U574LS24474LS244218MA0218XA0A01A11Y1MA8XA8A81A11Y14164161A21Y21A21Y26146141A31Y31A31Y38128121A41Y41A41Y41192A12Y11191372A12Y12A22Y21371552A22Y2XA7A72A32Y3155173XA15A152A32Y3MA72A42Y41732A42Y41G191G1G17191G2G192G
U6U7U874LS25774LS25774LS373MWMR24IOR2432MMEMRXRDMIORMD0MA8XMEMR1A1Y1A1YD0Q0VCCVCC33451B1BD1Q1MEMW57IOW5776MMEMWXWRMIOWXPSEN2A2Y2A2YD2Q26689VCCVCC2B2BD3Q311911913123A3Y3A3YD4Q4101014153B3BD5Q51412141217164A4Y4A4YD6Q613131819MD7MA154B4BD7Q715151G19G19G18GGOE1111RAMCS8237CSADSTBA/BA/BLE
U962641011MA0MD0A0D0912A1D1813A2D2715A3D3616A4D4120517MA15VCCA5D52418NCA6D6319319MA14G19MD7A7D741825MA13373OEA851724MA12U8NCA961621RAMCSPLDNCA107152322MIORRAMCSMMEMRA11OE814227MMEMRDACSMA12MMEMWA12WE91320RAMCS8237CSADCSCS11226VCCDIRCS21011GNDAEN
六、实验程序框图
61
开始
设置8237口地址
8237主清除
设置源地址
写通道0基地址字节低位
写通道0基地址字节高位高
位 设置目的地址
写通道1基地址字节低
位 写通道1基地址字节高
位
设置传送的字节数
08 写通道基字节低位
08 写通道基字节高位
18写通道基地址字节低
位
18写通道基地址字节高 位
写通道0方式控制
字
1 写通道方式控制字
写主屏蔽寄存器
写命令寄存器
写请求寄存
器
启动8237工作
延时等待传递结 束
七、实验步骤
62
1、将DMA实验模块通过死角固定孔连到DVCC实验系统上。(左中下)
2、将DMA实验模块上有关信号线按图连接到DVCC实验系统上。
(a)将DMA实验模块上D0,D7用排线对应到DVCC实验系统BUS2区的XD0,XD7。
(b)将DMA实验模块上A0,A7用排线对应到DVCC实验系统BUS1区的XA0,XA7。
(c)将DMA实验模块上A8,A15用排线对应到DVCC实验系统BUS3区的XA8,XA15。
(d)将DMA实验模块上IOR、IOW、MEMR、MEMW分别连到BUS3区的XRD、XWR、
XMEMW上。 XPSEN、
(e)将DMA实验模块上RST连到DVCC系统键盘下面的RST上。
f) 将DMA实验模块上CLK连到DVCC系统SIO区的CLK上。 (
(g) 将DMA实验模块上8237CS片选信号连到DVCC系统的SELECT区的Y0上。
查看该实验的存储器运行结果方法为:可以拔掉键盘上方的HM62256芯片,右击调试后出现的数据窗口,设置块地址输入:2000确定后,查看该地址的内容,再右击输入3000确定后,查看是否与2000查看到的内容一致。
3、在源数据区首末地址用存储器写命令写入标志字节,例如:写入数据55、AA相间。
4、运行实验程序
在联机时,实验程序文件名为\DVCC\H8EXE\H813S.EXE。
5、稍后,在DVCC系统上应显示“GOOD”,表示传送结束。然后,按RESET键,返回初始状态再按PCDBG键。再用存储器成组显示命令来看目标地址中首末几个单元中的内容是否和设置的数据相同。
63
实验十四 8259A串级中断控制实验 一、实验目的
掌握8259中断控制器级联方式的硬件设计和软件编程。
二、实验内容
用2片8259A组成串级中断实验系统,可将外中断源扩展8×2,1=15个,本实验从片IR3上接正单脉冲SP。从片的中断请求INT2接在主片的IR3上,主片的中断请求INT1接在8088的INTR上,两片8259的级连线CAS0,CAS2对应相连。15个中断源的优先权安排如下:
主片IR0>主片IR1>主片IR2>从片IR0,IR7>主片IR3,IR7。
三、实验说明
1、中断控制器8259A是专为控制优先级中断而设计开发的芯片,它将中断源优先级排队,辨别中断源以及提供中断矢量的电路集于一片中。因此,无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。同时在不需要增加其他电路的情况下,通过多片8259A的级联,能构成多达64级的矢量工作系统。
2、图3-22中主从2片8259A的外中断输入信号IR0、IR1、IR3,IR7和2IR0,IR7都是直接连到8259的对应IR0,IR7上,若8259A设置成高电平触发,则IR0,IR7,2IR0,IR7为高电平有效;若8259A设置成上升沿触发,则IR0,IR7、2IR0,IR7为上升沿有效。
3、8259A是和8088/8086CPU配套的芯片,这些CPU的中断响应信号/INT当CPU响应中断后会自动发3个负脉冲,使8259的中断请求寄存器复位,并将CALL指令码及中断向量从8259A中取走。本实验中串级中断实验模块中有2片8259A芯片U1和U2,U1工作在主片方式,U2工作在从片方式,主片的IR0、IR1、IR3,IR7和从片的2IR0,2IR7全部提供给用户使用。中断矢量的地址和中断号之间的关系如下表所示。
四、实验原理图
64
U1JR111181XD0D0D0IR010192D1IR19203D2IR28214D3IR37225D4IR46236D5IR55247D6IR64258XD7D7D7IR79INT117VCCINTRINT4.7KX82616GNDINTASP/ENCS11Y2CS312RDCAS0CAS0213WRCAS1CAS12715A0CAS2CAS28259
U2JR111181D0IR010192D1IR19203D2IR28214D3IR37225D4IR46236D5IR55247D6IR64258D7IR79INT217IR3INT4.7KX8INTA2616GNDINTAINTASP/ENCS21GND2IR0SPY6CSRD312XRDRDCAS0CAS0WR213XWRWRCAS1CAS1A02715XA0A0CAS2CAS28259
图3-22
五、实验程序框图
主程序 3号中断服务程序:
开始 关中断
“8259——2” 调用显示程序
good 调用显示程序
8259 初始化主片
返回
8259 初始化从片
开中断
等待中断 7号中断服务程序:
关中断
“Err” 调用显示程序
返回
六、实验步骤
1、将串级中断实验模块通过二角固定角连到DVCC实验系统上
65
2、将串级中断实验模块上有关信号按图连到DVCC实验系统上
(a)将模块上的D0,D7用排线对应连到DVCC实验系统BUS2区XD0,XD7上
(b)A0连到BUS1区XA0上
(c)WR连到BUS3区XWR上
(d)RD连到BUS3区XRD上
(e)INT1连到DVCC实验系统键盘下方INTR上
(f)INTA连到DVCC实验系统键盘下方INTA上
g)模块上主片U1的IR3连到从片INT2上 (
0 1 2 3 4 5 6 7 中断序号
20H~23H 24H~27H 28H~2BH 2CH~2FH 30H~33H 34H~37H 38H~3BH 3CH~3F 变量地址
(h)模块上从片的2IR0连到DVCC系统MP区单脉冲SP上
(i)模块上主片片选CS1连到DVCC系统SELECT区的Y2上,从片片选CS2连到DVCC系统SELECT区的Y6上
3、运行实验程序
在联机时,实验程序文件名为\DVCC\H8EXE\H814S.EXE,运行实验程序。
4、显示器显示8259-2。
5、按AN按钮一次,产生中断,显示器应显示GOOD 。如果显示器显示ERR,则表示中断出错,原因是中断触发电平不到位。
66
实验十五 使用8250A的串行通信实验 一、实验目的
1、进一步了解串行通信的基本原理。
2、掌握串行接口芯片的工作原理和编程方法。
二、预备知识
1、 8250A内部结构
接收器 数据 数据寄存器D0~7 I/O 缓冲器 A0 A1 接收器 SIN A2 移位寄存器ADS DOSTR 接收器DISTR RCLK 控制逻辑DDIS MR 读/写 1~2 XTAL 发送器BAUD CSOUT OUT ? ? 控制逻辑INTRPT 控制逻辑 CS0 CS1 CS0 发送器CS2 保持寄存器OUT1 OUT2 MODEM DSR CTS 发送器 控制逻辑 Sout DTR 移位寄存器 RTS RTSD RLSD 图3-23 RI
8250A是一种可编程的通用异步通信接口芯片,其内部结构如图3-23所示。图中I/O数据缓冲器通过双向三态数据线D0—D7和CPU传输信息;读写控制逻辑是通过片选CS0、CS1、/CS2、选片输出线CSOUT、端口地址线A0—A2, 以及其它读写选通线DISTR、DOSTR、时钟线XTAL1、XTAL2等信号线来控制8250A 与CPU间的信息传输; 调制解调器控制逻辑作为8250A和调制解调器之间的控制部件;涉及的引脚有:
/DSR: 数据装置就绪信号输入,低有效。
/DTR: 数据终端就绪信号输入,低有效。
/RTS: 请求发送信号输出,低有效。
/CTS: 清除发送信号输入,低有效。
67
/RLSD: 接收线路检测信号输入线。
/RI: 振铃指示信号输入线。
/OUT1、/OUT2:用户定义的输出线。
收发器逻辑包括收发保持寄存器和移位寄存器以及相应的控制逻辑。RCLK 、
SOUT分别为串行输入、输出线。 BAUFOUT分别为收发时钟,通常连在一起。SIN、
2、 8250A内部寄存器。
* 接收器数据寄存器RBR: 寄存接收字符(只读)。
寄存发送字符(只写)。 * 发送器数据寄存器THR:
* 波特率因子寄存器(16位):决定发送器和波特率输出信号BAUDOUT的频
16×波特率因子) BAUDOUT和外部时钟的频率关系为:BAUDOUT 波特率=外部时钟频率(/
* 中断允许寄存器IER(复位后为00H)
D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 0
为允许接收数据就绪中断(优先级) 11
为允许发送器保持寄存器空中断(优先级) 12
为允许接收器线路状态中断(优先级) 13
为允许调制解调器状态中断(优先级) 14
* 中断标志寄存器IIR
D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 0 0
为表示有中断为表示无中断 0,1
调制解调器状态中断 00
中断类型发送器保持寄存器空中断 01
接收数据就绪中断 10
接收器线路状态中断 11
68
D7 D6 D5 D4 D3 D2 D1 D0
* 线路控制寄存器LCR
位 00 5 位 01 6
数据长度位 10 7
位 11 8
停止位数位 0 1
位(对位数据) 1 1.55
位(对位数据) 26/7/8
禁止 0
奇偶校允许位产生(发送时)或检查(接收时) 1
奇偶校验位
奇偶类型奇 0
偶 1
无奇偶 0
奇偶保持奇偶位保持为(若为)或保持 1 0D4D311 为(若为) 1D4D301
间断设置禁止间断产生 0
设置间断(此时发送空格) 1 SOUT
不允许 0
除数锁存允许访问波特率因子寄存器锁存除数 1 ,
* 线路状态寄存器LSR
它为CPU提供与数据传送有关的状态信息,复位后为60H。LSR格式如下:
69
D7 D6 D5 D4 D3 D2 D1 D0
0
为表示接收器数据就绪。读接收器数据 1CPU
寄存器后复 0
为表示在数据接收过程中出现溢出错。 1CPU
读后复 LSR0
为表示有奇偶校验错。读后复 1CPULSR0
为表示出现帧格式错。读后复 1 CPULSR0
为表示接收到的间断状态超过一个完整的字符传送时间。 1
待读后复 CPULSR0
为表示发送器保持寄存器空。将字符写入发送器保持寄存 1CPU
器后复 0
为表示发送器移位寄存器空。当数据由保持寄存器送到移位寄存器后复 1.0
* 调制解调器控制寄存器MCR
D7 D6 D5 D4 D3 D2 D1 D0
0 0 0
数据终端脚为 0 DTR“1”
脚为 1 DTR“0”
请求发送脚为 0 RTS“1”
脚为 1 RTS“0”
脚为 OUT1 0 OUT1“1”
脚为 1 OUT1“0”
脚为 OUT2 0 OUT2“1”
脚为 1 OUT2“0”
自诊断允许禁止自诊断 0
允许自诊断 1
70
* 调制解调器状态寄存器 MCR
本寄存器高4位反映调制解调器控制输入线当前状态,低4位反映调制解调器输入端状 态变化信息。MCR格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
为表示在上次读操作后输入端改变状态 1CPU, CTS
为表示在上次读操作后输入端改变了状态 1CPU, DSR
为表示输入端已改变了状态 1RI
为表示输入端已改变了状态 1 RLSD
其状态对应引脚(或当自诊断方式时) CTSMCR.1,
其状态对应引脚(或当自诊断方式时) DSRMCR.0,
其状态对应引脚(或当自诊断方式时) R1MCR.2,
其状态对应引脚(或当自诊断方式时) RLSDMCR.3,
注低位中任一位被置均会引起调制器中断。读后低位被清。 : MCR41,CPUMCR,MCR4 0
三、实验内容
实验原理如图3-24所示,图中8250A芯片插在40芯通用插座上。按图连好线路,本实验要求在键盘上输入一个字符,将其加1后发送出去, 再接收回来在系统显示器上显示,实现自发自收。图中8250A时钟接2.0MHZ,若选波特率为9600,波特率因子为16, 则因子寄存器值低字节为13(0DH),高字节为00H。
71
1VCCD0XD0D0240D1VCC339D2/RI438D3/RLSD534D4/OUT1631D5/OUT2713D6CS1812D7CS0XD7D782502835XA0A0MRRST27XA1A12616XA2A2XTAL1T12117XRD/DISTRXTAL218XWR/DOSTR1415Y6/CS2RCLK309INTRPTBOUTINTRPT1910DOSTRSINSIN22DISTR2511ADSSOUTSOUT36/CTS3732/DSR/RTS2033GND/DTR
图3-24 四、实验程序参考流程图
开始
80H :线控制器为送因子寄存器准备
写因子寄存器
=0DH 低字节 =00H 高字节
1BH 8 :线控制器个数据位,一个停止位
否 判有键按下否,
从键盘接受一个字符
是
MON 是键,
否
1 字符加后发送到串行口“8250good” 调显示
接收数据否
是否准备好, 是
接收数据并显示A
72