2009级微机原理与接口技术实验
更新时间:2024-05-13 13:19:01 阅读量: 综合文库 文档下载
微机原理及接口技术实验
2009级计算机专业
上课地点: 勤学楼2507
能电学院电工电子实验中心
2011年8月
目 录
软件试验部分 ................................................... 2 实验一 初级程序的编写与调试实验 ............................... 2 实验二
加法程序的编写与调试实验 ............................... 7
硬件接口试验部分 .............................................. 11 使用微机实验装置须知 .......................................... 11 DVCC─8086H实验系统性能特点简介................................ 12 DVCC─8086H实验装置软件使用说明................................ 14 实验一 8279A可编程键盘显示接口实验 ........................... 21 实验二 A/D转换实验 .......................................... 27 实验三 8255A可编程并行口实验 ................................ 30 实验四 D/A转换实验 .......................................... 32 实验五 微机硬件实验 ......................................... 34 实验六 简易电子琴实验 ....................................... 37 实验七 简易时钟电路实验 ...................................... 39
1
软件试验部分
实验一 初级程序的编写与调试实验
一、实验目的
熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
深入了解数据在存储器中的存取方法,及堆栈中数据的压入与弹出。 掌握各种寻址方法以及简单指令的的执行过程。
二、实验内容 1、设堆栈指针SP=2000H,AX=3000H,BX=5000H,请编一程序段将AX的内容和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行编写、汇编和调试。 2a、设DS=当前段地址,BX=0300H,SI=0002H,请用DEBUG的命令将0AH、0BH、0CH、0DH、0EH等数据顺序装入存储器偏移地址300H~304H单元。 2b、在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程?当数据传送完毕时,AX中的内容是什么?
程序清单如下: MOV AX,BX MOV MOV MOV MOV MOV MOV
AX,0304 AX,[0304] AX,[BX]
AX,0001[BX] AX,[BX][SI]
AX,0001[BX][SI]
3、设AX=0002H,编一个程序段将AX的内容乘以10,要求用移位的方法完成。
三、实验要求 1、实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分析等。
2、本实验要求在PC机上进行。
3、本实验要求只能在DEBUG调试状态下进行,包括汇编程序、调试程序、执行程序。
4、三个实验做完后,有时间将实验二所附程序看一看,不懂得语句用DEBUG运行一下,以便下次弄懂程序。
四、编程提示 实验内容1 将两个寄存器的内容进行交换时,必须有一个中间寄存器才行。如果用堆栈作为中间存储单元,必须遵循先进后出的原则。同学们也可以试试不用堆栈而用一般寄存器,结果又如何?
实验内容2
2
(1)其中数据段寄存器中的段地址为进入DEBUG状态后系统自动分配的段地址。
(2)SI和BX的初值可在DEBUG状态下,用R命令装入,也可以在程序中用指令来完成。 (3)用T或P命令执行程序,可进行单步跟踪执行,每执行一条指令就可以看到各寄存器的状态变化。也可用R命令直接调出寄存器,来检验各寄存器内容是否正确。 (4)在执行程序前,可用E命令将0AH~0EH送入偏移地址300H~304H。
实验内容3
(1)用移位的方法完成某些乘法运算,是较为常见的方法,操作数左移一位为操作数乘2运算。 (2)算式2×10的程序流程图如下:
开始 ↓ ↓
AX、BX装入操作数2 AX左移两位→AX ↓ AX+BX→AX ↓ AX左移一位→AX ↓ 结束
(3)程序的的执行可用DEBUG的G命令,也可用T或P命令单步跟踪执行。
在程序送入后,最好将它存入磁盘,以免程序丢失时又需重新输入。
附:DEBUG的主要命令
1、DEBUG命令的有关规定
(1)DEBUG命令都是一个英文字母,后面跟着一个或多个有关参数。多个操作参数之间用“,”或
空格隔开。
(2)DEBUG命令必须接着按ENTER键,命令才有效。
(3)参数中不论是地址还是数据,均用十六进制数表示,但十六进制数后面不要用“H”。 (4)可以用Ctrl和Break键来停止一个命令的执行,返回到DEBUG的提示符“-”下。 (5)Ctrl-Num Look用来中止正在上卷的输出行,再通过按任意键继续输出信息。 2、DEBUG命令集 A 汇编命令 D E
显示内存命令 修改内存命令 填充命令
移动内存命令 比较命令
查找命令
显示和修改寄存器内容命令 跟踪命令 反汇编命令 命名命令 读盘命令 写盘命令
3
F M C S R T U
N L W
I O G H Q
输入命令
输出命令 运行命令
十六进制运算命令 退出命令
P 进程命令
现在开始将各个命令格式说明一下。
A汇编命令,A汇编命令有三种格式: A
A偏移地址——A与偏移地址之间可以不空格 A段地址:偏移地址
如果是第一次输入A后,将出现 xxxx:0100提示符。
如果是输入A偏移地址后,将出现 xxxx:偏移地址提示符。
如果是输入A段地址:偏移地址后,将出现 段地址:偏移地址提示符。
在xxxx:xxxx提示符后就可以输入汇编程序,每输完一句按回车键又出现xxxx:xxxx提示符。这样一句一句输完,就可运行该程序。
注意:在DEBUG中出现和使用的数字只有一种形式——十六进制,而且不用跟后缀H。如果数字是十进制或二进制的请全部转换成十六进制。否则易出错。
U反汇编命令,U反汇编命令有五种格式: U
U偏移地址
U偏移地址1 偏移地址2 U段地址:偏移地址
U段地址:偏移地址1 段地址:偏移地址2 U反汇编命令执行后,显示器将出现: xxxx:xxxx 二进制机器码 汇编语句 ┇ xxxx:xxxx 二进制机器码 汇编语句 的形式。U反汇编命令只是用来察看汇编程序的。
D显示内存命令,D显示内存命令有四种格式:
D——从偏移地址0100单元开始一次显示128个单元内容;
D偏移地址——从偏移地址开始一次显示128个单元内容;
D偏移地址 L范围——从偏移地址开始一次显示范围内个单元内容;
D段地址:偏移地址 L范围——从段地址:偏移地址开始一次显示范围内个单元内容;
E修改内存命令,E修改内存命令有两种格式: E偏移地址
E段地址:偏移地址
输入E修改内存命令后,显示相应单元的内容,等待用户修改其值,此时可用下述两种方法操作。 按空格键
4
按空格键完成一个字节的显示与修改(不修改可不输入数据),且显示下一个字节的地址和内容的等待修改。若多个单元不修改,则可连续按空格键。 按“-”键
按“-”键完成一个字节的显示与修改(不修改可不输入数据),且显示前一个字节的地址和内容的等待修改。若多个单元不修改,则可连续按“-”键。 若要结束修改,可按回车键终止E命令。
R显示和修改寄存器命令,其格式有两种: R——显示寄存器命令;
R待修改的器存器,如RAX;RBX等; N命名文件,其格式只有两种:
N文件名.后缀——无盘符默认为当前盘符; N盘符:文件名.后缀;
N命令需要和L读文件命令或W写文件命令在一起使用。 L读文件命
当N命名的文件后缀是COM时,只能用L或L100。文件只能从偏移地址100H处开始存放。 当N命名的文件后缀是EXE时,只能用L。文件只能从偏移地址0000H处开始存放。 当N命名的文件是其他方式时,可用L或L偏移地址(任意)。文件可以从任意偏移地址处开始存放。 读文件,其方式有两种,我们只用一种: N盘符:文件名.后缀; L或L偏移地址。 W写文件命令
当N命名的文件后缀是COM时,只能用W或W100。从偏移地址100H处开始的内容写入文件,文件长度由寄存器CX值决定。
当N命名的文件后缀是EXE时,用W则出错。
当N命名的文件是其他方式时,可用W偏移地址(任意)。 写文件,其方式有两种,我们只用一种: N盘符:文件名.后缀;
RCX——将文件长度值送入CX 。 W或W偏移地址; F 填充命令,其方式有两种: F起始地址 终止地址 值表; F起始地址 L字节数 值表。
例如:FD68:100 120 1,2,3,’ABCD’,’C’
FD33:20 L10 1,2,3,’A’,’V’
M移动内存命令,其方式有两种: M起始地址 终止地址 目的地址; M起始地址 L字节数 目的地址。 具有移动数据块的功能。
C比较命令,其方式有两种:
5
C起始地址 终止地址 目的地址; C起始地址 L字节数 目的地址。 具有比较数据块的功能。 S检索或查找命令,其方式有两种:
S起始地址 终止地址 值表(为单个字符或数字,与 F填充值表不同); S起始地址 L字节数 值表。 在数据块中查找值表所在单元。 I输入命令,其方式为: I外部端口地址 O输出命令,其方式为: O外部端口地址 字节数据 H十六进制数加减命令,其方式为: H数1 数2 G连续运行命令,其方式为两种: G=起始地址; G=起始地址 断点地址
通常不用第二种方式,因为用T单步跟踪命令也有同样功能。 T单步跟踪命令,其方式为两种: T=起始地址; T=起始地址 指令条数 P进程命令,与T单步跟踪命令用法一样。其区别在于它遇子程序不追踪。
注意:在DEBUG命令中,逗号可以用空格来代替。但在A命令中写汇编程序时不行。
6
实验二 加法程序的编写与调试实验
实验目的
熟练掌握编写汇编语言程序的基本方法和基本框架。
学会编写顺序结构、分支结构和循环结构的汇编程序,掌握宏定义与宏调用的方法。 掌握程序中数据的产生与输入输出的方法。 掌握源程序的汇编和连接方法。
实验要求
实验前准备
要弄懂所提供的源程序中的每一指令,不懂的可查各种汇编语言书籍。
对程序中结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。
本实验要求在PC机上用EDIT平台编写源程序,用MASM和LINK对其进行汇编和连接,然后在DOS下执行所生成的.exe文件,如果源程序不错,应能显示正确结果。
用DEBUG对已生成的可执行文件进行调试,分单步和连续两种方式,并查看各寄存器的变化和数据在内存中的情况。 修改源程序,将其变成一个可以进行5位数加法的程序。编写一个1234+5678的固定4位数加法程序。 (注意:编缉程序时,不能在中文模式下进行。除非注释。当程序编辑完保存时,文件名中不能有中文,而且文件名字符数不能超过8个。) 编程提示
两个数据可用相反的顺序以ASCII码的形式存放在数据段的DATA1和DATA2中,相加时可从DATA1和DATA2的起始字节开始相加,即从数的个位数开始相加。相加结果可存放在DATA2开始的存储单元中。
程序中的加法运算是ASCII码运算,采用带进位的加法运算指令ADC,后面应加一条ASCII码加法调整指令AAA,经AAA调整的加法指令,将ASCII码的数据高4位清“0”,然后将结果每位数高4位拼成3,变成ASCII码存放到DATA2中,则可方便地取出输出。
程序中应有输出程序段,采用MOV AH,02H ,INT 21H,将要输出字符的ASCII码送入 AL中。 思考题
程序中的原始数据是以怎样的形式存放的数据区中?请用DEBUG调试程序进行观察、分析。
实验报告
写出1234+5678的固定4位数加法程序,并注释。画出程序流程框图。
附录1. 汇编程序MASM和连接程序LINK简介:
当在EDIT平台上写好源程序,并以.asm的扩展名存盘后(注意存盘路径),用两个可执行文件masm.exe和link.exe,对源程序进行汇编和连接,生成.exe文件后执行该文件,如程序正确,必能显示正确结果;如不能显示,则要查找出原因改正,直到能正确显示为止。
在汇编过程中,如出现错误,要根据提示返回EDIT查找源程序中的相应行,找出错误并修改好,再进行汇编,直到没有错误为止。
附录2. DOS中断功能调用简介: 本实验两个题目的程序中,都要用到DOS软中断系统功能调用。DOS中断功能有很多,这儿用到的只是其中一种,即“INT 21H”,这是最常用的中断功能,包含了几十种子功能。调用这个中断功能,必须预先输入中断功能调用号,即子功能号,调用号都送进AH中。在提供的三段程序中,共用到三种:
1.01H号功能(输入一个字符) 该功能将等待用户从标准输入设备(如键盘)上输入一个字符,把它传送到AL中并在标推输出设备(如屏幕)上输出。同时检查输入的字符是否为“Ctrl+Break”,若是,则终止程序运行。入口参数:AH=01H;
7
出口参数:AL中存放的从键盘输入的ASCII码。
如键盘输入字母A,该字母除了存入AL外,还将它显示在屏幕上。
2.02H号功能(输出一个字符)
该功能将寄存器DL中一个字符的ASCII码输出到标准输出设备(如屏幕)上。同时,系统将检查输出的字符是否为“Ctrl+Break”,若是,则终止程序运行。入口参数:AH=02H;出口参数:无。
3.09H号功能(字符串显示)
这一功能可以在标准输出设备上显示某个字符串。调用前应当先将待显示的字符串首地址送到DS:DX中,即把字符串所在段的段地址送DS,位移量送DX,系统将按地址的先后顺序将待显示字符串依次输出。入口参数:AH=09H,DS:DX指向存放字符串的地址;出口参数:无。
有一点需要注意,用于显示的字符串都是ASCII码,以美元符号“$”为结尾,“$”也称为界定符,在半角输入(英文)状态下为“$”,在全角输入(中文)状态下为“¥”。如果希望在输完一组数后自动换行,要在界定符前加上回车符(0DH)和换行符(0AH)。
附录3:
下面的程序就是可以通过键盘输入任意4位数据的加数和被加数,进行加法运算。
程序中SAV过程为接收键盘键入的数据,并保存到SI所指的数据区的偏移地址的单元中。 宏定义CFD为在通过键盘键入4位数据后回车换行,使执行结果比较清晰。 (2)程序清单如下: DATA SEGMENT DATAl DB 4 DUP(?) DATA2 DB 5 DUP(?) DATA3 DB 0DH,0AH,'$' DATA ENDS STACK SEGMENT PARA STACK 'STACK' DB 64 DUP(?) STACK ENDS CFD MACRO MOV DX,OFFSET DATA3 MOV AH,09H ;显示字符串 INT 21H ENDM ;回车换行宏定义 CODE SEGMENT PARA 'CODE' ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START PROC FAR PUSH DS MOV AX,00H PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX ;程序初始化 MOV SI,OFFSET DATA1 ;将DATAl的偏移地址送SI CALL SAV ;调用将键盘键入数据保存过程 CFD ;调用回车换行宏定义 MOV SI,OFFSET DATA2 ;将DATA2的偏移地址送SI CALL SAV ;调用将键盘键入数据保存过程 CFD ;调用回车换行宏定义 STD ;方向标志DF为“1”,为反向串 MOV SI,OFFSET DATA1+3 ;将加数最末位地址送SI
8
LOPl:
MOV DI,OFFSET DATA2+3 ;将被加数最末位地址送DI MOV CX,04H ;共4位数相加 MOV AH,00H ;清AH LODS DATA1+3 ;取串:([SI])→AL,(SI一1)→SI SAHF ;将AH中进位标志送标志寄存器 ADC AL,[DI] ;带进位加,结果送AL AAA ;ASCII码十进制加法调整 LAHF ;将标志寄存器内容暂存在AH中 OR AL,30H ;将计算值拼成ASCII码
INC DI ;将计算值的ASCII码存入DATA2中
STOSB ;存串, AL→[DI],(DI-1)→DI DEC DI ;调整被加数地址指针,指向下一位数 LOOP LOP1 ;取下一位数转到LOP1 INC DI ;4位加完,调整结果地址指针 AND AH,01H ;将最高位进位取出送AH OR AH,30H ;拼成ASCII码 MOV [Dl],AH ;存到DATA2的最高位 MOV AH,02H ;调用DOS的显示功能 MOV CX,05H ;共显示5位数
LOP2: MOV DL,[DI] ;将显示结果从最高位开始送入DL中 INT 2lH ;调用21H号中断 INC DI ;使结果地址指针指向下一位 LOOP LOP2 ;显示下一位转LOP2 RET ;5位显示完毕 START ENDP SAV PROC NEAR ;取键盘键入的数据,并存入数据段过程 MOV CX,04 ;取4位数
LEP: MOV AH,0lH ;调用DOS读取键入数据功能 INT 21H ;调用21H中断 MOV [Sl],AL ;将键入数据存入数据段 INC SI ;移动地址指针 LOOP LEP ;共键入4位并存入数据段 RET ;4位键入完毕 SAV ENDP
CODE ENDS END START 执行结果:
c:>DATADD2↓ 1234 5678
6912
可以通过DEBUG调试程序,观察数据段在程序执行前后,DATA1和DATA2中数据存放的情况。 1. 进入DEBUG状态 C:>DEBUG DATADD.EXE↓(如果程序是DATADD.EXE的话) 2. 用U命令得到源程序 注:(1)执行第一次U命令显示17行程序,再执行U命令显示后面余下的程序。 (2)从U命令显示的内容,找到代码段地址(CS),代码段偏移地址(IP),数据段地址(DS,ES),数据段偏移地址(SI) 以及DATA1、DATA2的偏移地址。 (3)执行程序
9
-G=起始地址)(结束地址) 6912
Program terminated normally
即6912为1334+568 和。
(4)在执行程序后,用D命令再观察DATA1和DATA2中数据的存放情况: -D (DS):(IP) ????
从中可以看到,程序执行后,相加结果是以ASCII码按相反的顺序存放在DATA2中,因此显示时,是从高位到低位。
(6)用P命令跟踪执行(单步执行)
①先用R命令检查IP寄存器是否为0,不是0要改过来(程序的开始偏移地址为0000)。 ②用P命令逐行执行命令,注意观察各寄存器状态的变化。 ***注意:使用T命令在遇到有中断(如INT 21H)时,则要谨慎,千万不要执行这一条,否则程序会跑飞。如果要单步执行此句,可用P命令代替。
10
硬件接口试验部分
使用微机实验装置须知
在计算机与实验装置都通电的情况下,不得插拔计算机与实验装置之间的连接线。因为这样做容易烧坏计算机主板和实验装置。不要带电在实验装置上连接。
编写程序时,由于实验装置的原因,不要像常规方法那样,分数据段、堆栈段、代码段。直接用一个代码段就可以。数据段可以写在代码段中,对其中数据的读写,与读写数据段一样。具体编程结构方法如下:
CODE SEGMENT ASSUME CS:CODE ORG 1000H START:JMP L DATA DB 1,2,3 L:汇编指令1 汇编指令2 · 汇编指令n K:JMP K CODE ENDS END START
文件名不能用中文名,文件名长度不能超过8个字符。
文件夹也不能用中文名,其长度也不能超过8个字符。 不要在中文格式下编写程序。
11
DVCC─8086H实验系统性能特点简介
DVCC─8086H实验系统性能特点
用主频为4.77MHZ的8088CPU为主CPU,并以最小工作方式构成系统。
系统以二片62256静态RAM构成系统的64K基本内存,地址范围为00000H-0FFFFH。其中00000H-004FFH为系统数据区,00500-00FFFH为用户数据区,01000H-0FFFFH为用户程序区,另配一片32K EPROM用于存放系统程序和实验程序,地址范围为F8000H-FFFFFH。 自带键盘数码管显示,能单机独立运行。
备有通用外围电路,包括逻辑电平开关电路、发光二极管电路、时钟电路、单脉冲发生电路、继电器及驱动电路、直流电机及驱动电路、步进电机及驱动电路、电子音响及驱动电路、模拟电压产生电路。
DVCC─8086H系统资源分配 中断矢量区 系统数据区系统栈区 用户数据区 用户数据区用户栈区 00000H-000FFH 00100H-004FFH 00500H-00FFFH 01000H-0FFFFH 中断矢量区00000H-00013H作为单步(T)、断点INT3、无条件暂停(NMI)中断矢量区,用户也可以更改这些矢量,指向用户的处理,但失去了相应的单步、断点、暂停等系统功能。
DVCC─8086H输入/输出接口地址分配 电路名称 口地址 000H-01FH 提供给用户的扩展口 060H-06FH 070H-07FH 通道0计数器048H 8253A定时/计数器接口 通道1计数器049H 通道2计数器04AH 控制寄字存器04BH 8259A中断控制器接口 命令寄存器020H 状态寄存器021H 数据口0DEH 8279A键盘显示口 命令状态口0DFH 数据口050H 8251A串行接口 状态口051H 12
8259A中断源、中断类型号、中断向量表地址
8259A中断源 中断类型号
IR0 8 IR1 9 IR2 A IR3 B IR4 C IR5 D IR6 E IR7 F
中断向量表地址
20H~23H 24H~27H 28H~2BH 2CH~2FH 30H~33H 34H~37H 38H~3BH 3CH~3FH
13
DVCC─8086H实验装置软件使用说明
由于实验时,除连线外,基本上不需要在装置上操作,程序的编写、调试、运行都在计首先打开实验装置电源开关,数码管显示DVCC-86H。
然后打开计算机,计算机进入WINDOWS系统界面,如果显示桌面上有“DV86H调试软件”就直接运行它,否则,就从开始——程序——DVCC8086H实验系统——“DV86H调试软件”运行它。程序运行后将出现图0—1窗体。注意:不要和52196单片机系统“DVCC实验系统”混淆。
算机上进行。因此,掌握了实验装置软件使用方法,也就能知道如何进行实验了。
图0—1
第一步、检查计算机与实验装置连接是否正常。在图0—1窗体上,选择“联接”工具。若出现图0—2窗体,即为连接正常。否则,为不正常。如果出现连接不上情况,请报告老师。
图0—2
14
第二步、编写程序。检查计算机与实验装置连接正常、并且实验连线正确后,在图0—2窗体上,选择“新建”工具,将出现图0—3窗体。现在在这个名为“新文件0”窗体内,我们开始编写一个在数码管上显示“12”的程序。
图0—3
第三步、保存程序。程序编写完成后,按图0—4将文件另存,将中文文件名“新文件0”进行修改,要求文件名长度不能超过“8”个字符,其中保存文件的文件夹名也不能用中文名,文件夹名长度也不能超过“8”个字符。
图0—4
15
现在我们将图0—5中的“新文件0”改为图0—6中的“1”,然后按“保存(S)”按钮,得到一个文件名为“1.asm”合乎要求的文件。
图0—5
图0—6
第四步、编译、连接、传送文件。文件保存好后,不能立即用来运行,必须将其编译、连接生成机器码文件。并且生成的机器码文件此时还在计算机上,还是不能运行。因为软件最终还是要在装置上运行,因此要将机器码文件传送到装置内存中才能运行。
如何才能完成上述任务,先选择图0—7 中的“调试”工具,出现图0—8窗体,在此窗体中选择“Yes”按钮,出现图0—9窗体,默认地址1000选择“OK”按钮即可。如果程序中有ORG 1000H 语句,将不会出现0—8、0—9窗体。
其实第四步也是检查编写程序语法是否正确的一步。在图0—10窗体中打开信息窗口,如果出现图0—11中的信息窗口的内容,表示程序语法没错。如果与图0—11中的信息窗口的内容不同,则程序都是错误的。
如图0—12中的信息窗口的内容,表示程序语法有错。而且指出错误所在行是第5行。 如果信息窗口中无错,也并不表示程序逻辑上没错。逻辑上的错误检查,需单步运行程序。单步执行时,需观察相应的寄存器、存储单元,并根据试验现象来判断。所以比较复杂。
16
如果要观察寄存器、存储单元,请参考图0—10,可根据需要按窗体所列打开相应窗口。
图0—7
图0—8
图0—9 第五步、程序正确无误,“调试”完成后,便可在图0—13中,选择“运行”工具运行程序。如果要停止运行,根据图0—13中弹出窗口提示操作。
如何单步运行程序。程序“调试”完成后,选择“单步”工具运行程序。注意工具栏中有两个“单步”工具,他们是有区别的。一个是“遇子程序追踪”,当遇见CALL、JAMP等语句时,要到子程序中单步执行;一个是“遇子程序不追踪”,当遇见CALL、JAMP
17
等语句时,不到子程序中单步执行,而是连续执行完子程序,IP指向主程序中CALL或JAMP语句
图0—10
18
图0—11
图0—12
图0—13
的下一句,也就是说:程序只在主程序中单步执行。
19
图0—14
图0—15
20
实验一 8279A可编程键盘显示接口实验
因为对8259A只须简单了解,知道如何使用它。如果对8259A不需要详细了解的同学可直接从预备知识第四项相关表格开始。 一、预备知识
8279A是一种通用的可编程键盘/显示器接口电路,可对64个开关矩阵组成的键盘进行自动扫描,接受键盘上的输入信息,存入内部的FIFO寄存器,并在有键输入时,CPU请求中断。8279A内部还有一个16×8的显示缓冲器,能对8位或16位LED进行扫描,使显示缓冲器的内容在LED上显示出来。
(1)、引脚功能
DB0—DB7:双向数据总线。
CLK:时钟输入线,以产生内部时钟。
RESET:复位线,高电平有效。复位后,8279A置为16位显示左边输入。 /CS:片选,低电平有效。
A0:地址输入线,用于区分数据线传送的是数据还是命令。A0=0传送数据,A0=1传送命令。
/RD:读信号线,低电平有效。内部缓冲器信息送DB0-DB7。
/WR:写信号线,低电平有效。数据总线上的信息写入内部缓冲器。
IRQ:中断请求输出线,高电平有效。当FIFORAM中有键输入数据时,IRQ升为高电平,向CPU 请求中断。CPU读出FIFORAM时,IRQ变为低电平,若RAM中还有数据,IRQ又为高电平,直至RAM中为空,IRQ才保持低电平。 SL0-SL3:输出扫描线
RL0-RL7:键盘矩阵的行(列)数据输入线。其内部有拉高电阻,使之保持高电平。 SHIFT:换挡输入线。其内部有拉高电阻,使之保持高电平。
CNTL/STB:控制/选通输入线。其内部有拉高电阻,使之保持高电平。 OUTA0-OUTA3:四位输出口。 OUTB0-OUTB3:四位输出口。
这两个口是16×4显示器更新寄存器的输出端,输出的数据和SL0-SL3信号同步,用于多位显示器显示。
/BD:显示消隐输出线。低电平有效。
(2)、8279A内部结构
8279A内部具有时序控制逻辑,通过控制和时序寄存器存放键盘和显示器的工作方式和其它 状态信息。内部还包含有N分频器,分频系数为N,由2—31之间任意一数可编程确定,对CLK上时钟进行N分频以产生基本的100KHZ的内部计数信号。 8279A内部的扫描计数器有两种工作方式:一是编码方式,计数器以二进制方式计数,4位计数器的状态直接从SL0—SL3上输出,由外部译码器对SL0—SL3译码产生键盘和显示的扫描信号,高电平有效;二是译码方式,对计数器的低二位译码后从SL0—SL3上输出,做为4×8键盘和4位显示器的扫描信号,低电平有效。
8279A在键盘工作时,由输入缓冲区锁存RL0—RL7上的信息,以确定键入情况。 FIFP/传感器RAM:它是一个双功能的8×8RAM,在键盘和选通方式中,它是一个先进
21
先出的数据缓冲器。当/CS=0,A0=1,/RD=0时,读出FIFO的内容,FIFO中有数据时,由控制电路发IRQ信号。在传感方式中,8×8RAM 用作传感器RAM,当检测到某个传感器发生变化时,IRQ变高。
显示器地址寄存器和显示RAM:用以存放CPU当前正在读写的显示RAM单元地址,以及正在显示的两个4位半字节地址。在选定了工作方式和地址后,CPU可直接读出显示RAM中的内容。
(3)、8279A的控制命令
① 键盘显示方式设置命令
D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 D D K K K
显示方式 数据输入及扫描方式
0 0—8字符显示,左端输入* 0 0 0—编码扫描,键盘输入,2键互锁* 0 1—16字符显示,左端输入 0 0 1—译码扫描,键盘输入,2键互锁 1 0—8字符显示,右端输入 0 1 0—编码扫描,键盘输入,多键有效 1 1—16字符显示,右端输入 0 1 1—译码扫描,键盘输入,多键有效 1 0 0—编码扫描,传感器陈列检测 * RESET后,设定为该种方式 1 0 1—译码扫描,传感器陈列检测 D7、D6、D5=000,键盘显示命令 1 1 0—编码扫描,选通输入 特征字 1 1 1—译码扫描,选通输入
扫描频率控制命令
D7 D6 D5 D4 D3 D2 D1 D0
0 0 1 P4 P3 P2 P1 P0
D7、D6、D5=001,扫描频率控制命令特征字。
P4,P3、P2、P1、P0,对外部时钟CLK的分频系数,使CLK÷分频系数=100KHZ
* RESET后P4—P0=31。
读FIFO/传感器RAM命令
D7 D6 D5 D4 D3 D2 D1 D0
0 1 0 AI X A A A
D7、D6、D5=010,读FIFO/传感器RAM命令特征字。 AI=1,自动增1。AI=0,不自动增1。
D2、D1、D0=AAA,8×8 bit FIFO的地址000—111
该命令字只在传感器方式使用。在键盘工作方式时,由于读出操作严格按照先入先出的顺序,因此,不必使用此条命令。
读显示RAM命令
D7 D6 D5 D4 D3 D2 D1 D0
0 1 1 AI A A A A
D7、D6、D5=011,读显示RAM命令特征字。
22
D3、D2、D1、D0=AAAA,16×8 bit FIFO的地址0000—1111 AI=1,自动增1。AI=0,不自动增1。
写显示RAM命令
D7 D6 D5 D4 D3 D2 D1 D0
1 0 0 AI A A A A
D7、D6、D5=100,写显示RAM命令特征字。
D3、D2、D1、D0=AAAA,16×8 bit FIFO的地址0000—1111 AI=1,自动增1。AI=0,不自动增1。
显示禁止写入/消隐命令
D7 D6 D5 D4 D3 D2 D1 D0
1 0 1 X IWA IWB BLA BLB
D7、D6、D5=101,显示禁止写入/消隐命令特征字。
D3、D2=IWA,IWB,此二位分别用来屏蔽A、B两组显示。例如,当A组的屏蔽位D3=1时,A组显示RAM禁止写入。当B组的屏蔽位D2=1时,B组显示RAM禁止写入。
D1、D0=BLA,BLB是二个消隐特征位。当D1=1时,A组被屏蔽。当D0=1时,B组被屏蔽。
清除命令
D7 D6 D5 D4 D3 D2 D1 D0
1 1 0 CD2 CD1 CD0 CF CA
D7、D6、D5=110,清除命令特征字,此命令用来清除FIFO RAM和显示RAM。
D4、D3、D2=CD2,CD1,CD0用来设定清除显示RAM的方式。共有四种清除方式。 A、 D4、D3、D2=10X—将显示RAM全部清
B、 D4、D3、D2=110—将显示RAM全部清成20H,A组=0010,B组=0000 C、 D4、D3、D2=111—将显示RAM全部置1
D4、D3、D2=0XX—不清除,但CA=1时,则D3、D2仍有效
D1=CF用来置空FIFO存贮器、当CF=1时、FIFO RAM被置空,使中断输出线TRQ复位。同时,传感器RAM的读出地址也被置0。
D0=CA为总清的特征位。当CA=0时,清除显示RAM。当CA=1时,对显示的清除方式由D3、D2的位编码决定。
中断结束/出错方式没置命令
D7 D6 D5 D4 D3 D2 D1 D0
1 1 1 E X X X X
D7、D6、D5=111,该命令特征字。 E=1为设置中断结束/出错方式
RESET后E=0
上述8279的8种命令字皆由D7、D6、D5特征位确定。
8279A的FIFO状态字
D7 D6 D5 D4 D3 D2 D1 D0
Du S/E O U F N N N
Du=1,显示无效
23
S/E=1,传感器信号进入RAM/多键同时按下错误 O=1,FIFO溢出出错 U=1,FIFO取空出错 F=1,FIFO满
NNN,FIFO中的字符数(000—111) FIFO状态字由控制字口读入
(4)、相关表格
键值和键名的对照表2—1 键名 0 1 2 3 4 5 6 7 8 9 A 键值 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 键名 B C D E F EXEC MON MOV NEXT STEP LAST 键值 0BH 0CH 0DH 0EH 0FH 10H 10H 10H 显示值和显示代码对照表2—2
显示值 显示代码 11H 11H 14H 0 3FH 8 7FH 1 06H 9 6FH 2 5BH A 77H 3 4FH B 7CH
4 66H C 39H 5 6DH D 5EH 6 7DH E 79H 7 07H F 71H 显示值 显示代码 (5)、显示值和显示代码的关系 (6)、编程提示: 通常只要是可编程接口,便一定要在程序前先写控制字。在预备知识中,我们时常看到
24
有标注“*”号的控制字,标注“*”号的控制字就是说:当实验装置开机或复位时,标注“*”号的控制字已由监控程序写入。因此程序中我们就不用再写了。其实我们对8279内容只是部分掌握,因为好多事生产厂家已为我们做好。 当我们需要在数码管上显示数字时,可直接用下面语句:
MOV MOV
OUT MOV MOV OUT L:MOV
DX,00DFH AL,90H DX,AL DX,00DEH AL,显示代码 DX,AL
DX,0DFH ;0DFH 8279控制端(或状态)口
当我们需要从键盘获取键值时,可直接用下面语句:
IN AL,DX AND AL,01H JZ L
MOV CX,0FFFH
LOOP $ MOV DX,0DEH ;0DEH 8279数据口 IN
AL,DX
;AL寄存器里的内容即键值
二.实验内容:
写一程序,要求按什么键就将其键值在数码管最右边2位上显示出来。
三.实验器材:
DVCC—8086实验装置一台; 微机一台;
电源线一根及通讯电缆各1根;
四.实验要求:
先编写一简单的程序,在数码管上任意显示8个数字。然后再将8279的“写显示控制(或命令)字”从90H-97H进行改动,看看程序运行后的状态。通过实验将有关“写显示控制字”弄懂。
记住从键盘获取键值的程序,获取键值的过程。
学会从数据段中查寻数据的编程方法(变址寻址或用XLAT指令)。
弄清显示值和显示代码的区别。写一程序,要求按什么键就将其键值在数码管最右边2位上显示出来。
五.实验步骤(对实验内容而言):
本实验不需连线。
打开实验装置电源,进入DVCC实验系统窗口。
点“新建程序”键,出现“新文件0”编辑窗口。在此窗口中将你所写程序按规定写入。保存时不要用“新文件0”或其他中文名作为文件名,而只能用字符或数字作为文件名保存。文件名不要超过8个字符。文名夹也不能用中文,其长度也不要超过8个字符。 程序编好后,点击 “调试”键,在点“调试”键时,会出现传送起始地址错误信息,只
25
要选“YES”后选默认值“1000”,就可以了。如果程序前有ORG 1000H,点击 “调试”键后,就不会出现传送起始地址错误信息,可直接进行下面操作。
在动态调试菜单中点“连续执行”键后,屏幕上显示“程序正在运行中”。当从装置小键盘键入任意键时(除Reset、Intr键外),装置上的八位LED数码管最右二位将显示出其相应的键值。
当你要停止执行这个程序时,可按屏幕上提示按Reset、Intr键作相应操作。
六.实验报告:(只写一个最右边2位上显示的试验) 实验内容。
程序流程框图。
源程序(加注释。注释时不要每句注释,只需对程序段进行功能注释)。
附原理图:
图3-1 8279A可编程键盘显示接口实验原理图
26
实验二 A/D转换实验
一.实验内容:
1 、实验原理
本实验采用 ADC0809 做 A/D 转换实验。ADC0809 是一种8路模拟输入、8位数字输出的逐次逼近法A/D器件,转换时间约100us以上,转换精度为±1/512,适用于多路数据采集系统。ADC0809片内有三态输出的数据锁存器,故可以与8088微机总线直接接口。
图5-1 A/D 转换实验原理图
图中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为通道值。
OUT DX, AL ; 通道值送端口。 MOV CX, 200
LOOP $ ;延时100us以上
读取A/D转换结果用下面二条指令: MOV DX,ADPORT IN AL,DX
2 、实验线路的连接
在原理图中,粗实线是学生需要连接的线, 粗实线两端是需连接的信号名称。
27
①、IN0插孔连W1的输出V1插孔。
②、0809CS连译码输出000H~01FH、060H~06FH或070H~07FH任意一插孔。
③、调节电位器W1,以改变模拟电压值,显示器上会不断显示新的A/D转换结果。用ADC0809做A/D转换,其模拟量与数字量对应关系的典型值为+5V-FFH,2.5V-80H,0V-00H。(注意:由于所接基准电压不等于5V,是5V左右。所以,实际情况是5V左右-FFH,2.5V左右-80H,0V-00H)
二.实验器材:
DVCC—8086实验装置一台; 微机一台;
电源线一根及通讯电缆各1根; 专用实验细导线2根。
三.实验要求:
在做实验前,首先要熟悉DVCC—8086实验装置的结构、各单元电路的位置以及实验中要用到的各个插孔、插座的位置,并注意其用途。
根据原理图及接线,编写一程序,要求调节电位器W1时,这时装置上的八位LED数码管最右二位不断显示A/D转换结果。
四.实验步骤:
按原理图粗实线,将实验细导线插到相应插孔中(注意在插、拔线时一定要关掉装置电源开关,插、拔COM1、COM2插头前,一定要关掉微机电源,切记! 另外,插、拔细接线时一定要用手捏住手枪式插头,千万不要直接拉细线,要轻轻插入,避免插得太紧拔不出)。
打开实验装置电源,进入DVCC实验系统窗口。
程序编好后,点击 “调试”键,在点“调试”键时,会出现传送起始地址错误信息,只要选“YES”后选默认值“1000”,就可以了。如果程序中开始写入ORG 1000H,点击 “调试”键后,就不会出现传送起始地址错误信息,可直接进行下面操作。 在动态调试菜单中点“连续执行”键,屏幕上显示“程序正在运行中”,同时装置的八位LED数码管最右二位显示出A/D转换结果(两位16进制数,最大为FF,对应电压5V;最小为00,对应电压0V)。调节W1,改变输入电压大小,显示数据也跟着改变。
当你要停止执行这个程序时,可按屏幕上提示按Reset、intr键即可。
五.思考题
如接IN0的电压从0—5V变化时,数码管显示从00—99,如何修改程序?
28
六.实验报告:
实验题目。 原理简图。
程序流程框图。 源程序(加注释)。
七.编程提示:
A/D转换程序编写较简单,转换结果显示编程稍微复杂些。因为,转换结果显示要用到8279A可编程键盘显示接口电路。所以,编写程序时,请参阅8279实验程序。
29
正在阅读:
2009级微机原理与接口技术实验05-13
2018-2023年百叶条中线行业市场全景评估及发展趋势预测报告(目05-23
北师大版生物八年级下复习提纲 doc.deflate - 图文10-12
商务谈判试题及答案05-02
综合测试 - (1)答案04-27
外贸企业出口退税申报系统最新最全面操作指引(图文版)05-19
南京师范大学事业发展战略规划12-09
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 微机
- 接口
- 原理
- 实验
- 技术
- 2009
- 质量手册
- 我国网上银行风险管理研究
- CRH1动车组试题汇总(300题)-08.7.16
- 水箱漏斗项目可行性研究报告(发改立项备案+2013年最新案例范文
- 思想管理者2009
- 质量员岗位知识和专业技能
- 成套配电柜、动力开关柜(盘)安装施工工艺
- 城市轨道交通技术管理制度
- 停车场说明书
- 中国石油天然气集团公司交通安全管理办法(中油质安字672号
- 2012年电子科技大学电工导师分组情况(绝密)
- 陈家璧版_光学信息技术原理及应用习题解答(8-11章)
- 2017届天津市十二区县重点学校高三毕业班联考(二)生物试题及答案
- 岚山制梁场测量施工方案 - 图文
- 1250板带轧机课程设计
- 16秋《现代远程学习概论》作业 答案
- 浅谈中国移动电子商务及其发展
- 2-8、填充墙砌体植筋锚固力检测记录
- 新人教版八年级数学上册第十一章三角形单元测试题
- 研究报告如何撰写