微机接口技术综合例题_第1页
微机接口技术综合例题_第2页
微机接口技术综合例题_第3页
微机接口技术综合例题_第4页
微机接口技术综合例题_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上微机接口技术综合例题例10.1 在8086最小方式系统中,利用8255A某端口输入8位开关量,并通过另一个端送出,以发光二极管指示数据,灯亮表示数据“1”,灯灭表示数据“0”。8255A的端口地址为280H287H中的奇地址,设计系统总线与8255A的连接电路,并编程实现。 解题分析:按照题目要求,可以采用端口A输入开关量(数字量),采用端口B输出数据,而且没有增加联络信号的必要,因此可以采用最简单的方式0。根据§10.4节内容,很容易设计出8255A与8086最小方式系统的连接关系,如图10.15所示,为了使发光二极管具有足够的亮度,我们采用图示的方法连接

2、,这时,当端口B的某一位为0时,相应的发光二极管亮,这一点可以通过程序进行控制。 8255A的应用程序段如下: MOV DX, 287H ;设置8255A的工作方式 MOV AL, B ;端口A方式0输入 OUT DX, AL ;端口B方式0输出RER1: MOV DX, 281H ;从端口A读取开关量 IN AL, DX NOT AL ;按位取反 MOV DX, 283H ;从端口B送出 OUT DX, AL JMP RER1例10.2 在8088最大方式系统中,由一片8255A构成输入输出接口,端口地址为240H243H,外设准备好的8位数据已送入8255A的某端口,要求将这一数据的低4位

3、取反(高4不变)后,从另一端口送出。要求: (1)说明各端口的工作方式; (2)编写8255初始化及输入输出程序段。解题分析: 由于题目给定已经将外设准备好的8位数据送入8255A的某端口(可设为端口A),因此A组可以设定为方式1输入。对输出端口(设为端口B)题目并没有限定,我们可以将B组设定成方式0输出。 8255初始化及输入输出程序段如下页: MOV DX, 243H ;设定8255A的工作方式 MOV AL, B OUT DX, AL MOV DX, 240H ;从端口A读数据IN AL, DX XOR AL, 0FH ;低4位取反,高4不变MOV DX, 242H ;从端口B送出OUT

4、 DX, AL例10.3 在8088最大方式系统中,有一片8255A,其端口地址为20H、22H、24H、26H,采用低8位地址总线设计译码电路及与系统总线的连接图,并编程实现使端口A的低4位产生如图10.16所示的信号(各个信号的节拍不必严格相等)。 解题分析:根据8255A在8088最大方式系统中的端口地址,可以画出8255A与系统总线的连接框图,如图10.17所示。 为使8255A的端口A产生如图10.16所示的信号,可以将端口A设定成方式0输出,端口B和C与本题无关,均设定为方式0输出。端口A低4位的波形为分频形式,因此,可以通过计数方式实现。 MOVDX, 26H;设定8255A的工

5、作方式 MOV AL, 1000 0000B OUT DX, AL MOV DX, 20H;产生指定的信号 XOR AL, AL OUT DX, AL REP1: MOV CX,4 REP2: INC AL OUT DX, AL LOOP REP2 XOR AL, AL JMP REP1例10.5 在IBM PC系统机的扩充槽上,利用8255A和8位A/D变换器开发数据采集系统如图10.19所示。要求计算8255A占用的四个端口地址,并编写程序完成N点数据的采集工作。 解题分析:由于A14A9没有参加地址译码,因此并行接口8255A会占用多组地址。为了简单起见,我们只给出A14A9取全0时的一

6、组地址:81D1H、81D3H、81D5H 和81D7H。 为了完成一个字节的数据采集,需要给A/D变换器产生START信号,当变换结束时,会产生EOC信号,经单稳电路后,可以将A/D变换器产生的数据锁存到8255A的端口A,因此,8255A的A组为方式1,并且端口C的高4位方向为输出。 P8255A=81D1HP8255A=81D3HP8255A=81D5HP8255A=81D7HMOV DX, P8255DMOV AL, 1011 0000BOUT DX, ALLEA SI, BUFMOV CX,NL1: MOV DX, P8255D MOV AL, 0000 1110B OUT DX,

7、AL OR AL, 01H OUT DX, AL AND AL, 0FEH OUT DX, AL MOV DX, P8255C L2: IN AL, DX TEST AL, 20H JZ L2 MOV DX, P8255A IN AL, DX MOV SI,AL INC SI LOOP L1例9.1 在以8086构成的最大方式系统中,有一片8254的端口地址分别为301H、303H、305H和307H,给定的外部时钟为512kHz。要求:(1) 利用计数器0产生周期为1ms的周期信号,请编写初始化程序;利用这一计数器能产生的最低信号频率为 ,这时的时常数CR0= 。 (2)利用计数器1和2产生

8、如下图所示的周期信号,并编写初始化程序。(3)画出8253的端口译码电路(地址线只使用 A0A9)及其连接图。解:设给定的外部时钟为CLK,其周期T = 1/512kHz = 1.s。(1)为了得到1ms的周期信号,因此计数器0应该采用方式2或方式3,其时常数CR0 = 1ms/1.s =512。利用这个计数器分频时,其最大的分频次数为62256,这时得到最低的频率为512kHz/62256,即约为8.22Hz。(2) 为了产生如图9.17所示的周期信号,应该采用方式2,但在方式2下,其低电平时间仅为一个时钟周期,因此,利用一个计数通道无法实现这个任务。现在采用计数器1和计数器2联合,先利用计

9、数器1产生周期为1.5ms的周期信号,然后将输出OUT1信号作为计数器2的时钟输入CLK2,这样可以实现题目的要求。对于计数器1,工作方式可以选用方式2或方式3,一般采用方式3,这样可以使产生的信号(近似)对称,其时常数CR1 = 1.5ms/1.s = 768 ,需要采用16位的时常数表示。对于计数器2,工作方式只能选用方式2,其时常数CR2 =(3s +1.5ms)/ 1.5ms = 3001, 也需要采用16位的时常数表示。 8253的初始化程序段如下:MOVDX,307H;写计数器1方式控制字MOV AL,0111 0110BOUT DX,ALMOV DX,303H;写计数器1时常数M

10、OV AX,768OUT DX,ALXCHG AL,AHOUT DX,ALMOV DX,307H;写计数器2方式控制字MOV AL,1011 0100BOUT DX,ALMOV DX,305H;写计数器2时常数MOV AX,3001OUT DX,ALXCHG AL,AHOUT DX,AL(3)根据上面分析和题目给定的条件,可以画出8253的地址译码电路和连接图,如下图所示。例9.2 设8253的端口地址为260H263H,外部时钟信号为1MHz,要求产生如下图所示的周期波形,画出8253的连接图,并编写初始化程序段。解:本题仅采用8253的三个计数通道来实现。分两步实现:(1)由于要产生周期信

11、号,因此必定包含方式2或方式3,我们采用方式3产生周期为1s+12ms = 1012ms的方波信号,题目给定的外部时钟为1MHz,这时需要的分频系数(即时常数)为:1012ms/1s = ,显然,通过一个计数通道无法实现,所以,采用计数器0和计数器1联合产生,CR0 = 1000,CR1=1012,这样OUT1的周期为1ms。(2)利用计数器2的方式1实现单脉冲形成,以此作为要求产生信号的低电平,其时常数CR2 = 1s/1ms - 1 = 999,计数器0的OUT0信号作为计数器2的时钟输入信号,OUT1作为计数器2的硬件触发信号,确保周期为1012ms。8253的连接图如图9.20所示,各

12、个OUT端产生的信号如下图所示。 例9.3 有一个未知频率的对称周期信号s(t)(频率范围在100Hz2kHz之间),现在8086最小系统中已经设计了一片8253,其端口地址为380H、382H、384H和386H,外部可以使用的标准信号源为1MHz,设计测量输入s(t)信号的频率,并将结果保存在SFR字单元中。解:测量信号频率的方法有两种:计数法和测周期法,所谓计数法是指在一个确定的时间t内测出s(t)的脉冲个数N,这样s(t)的周期约为t/N,要求t足够长,使N100。所谓测周期法是指在s(t)的一个周期内测出已知标准周期信号(设周期为T0)周期数N,则s(t)的周期约为N×T0

13、,这种方法也要求N100,即基准频率信号的周期足够短。 根据题目给定的信号,这里应该采用测周期法,基准频率信号为1MHz,T0 = 1 s。由于题目给定被测信号s(t)为对称的周期信号,因此只需要测量半个周期Th,根据给定的频率范围可以计算出250sTh5000s,这样可以保证测出的周期数250N5000,确保测量的精度要求。 利用计数器0实现输入信号s(t)频率的测量,将基准信号1MHz加到CLK0端,s(t)加到GATE0端,并同时将s(t)连接到8259的中断请求TR0端,8253的连接图如图9.22所示。信号频率测量关系如图9.23所示。计数器采用方式2,时常数取最大值,这样当GATE

14、0端有上升沿查询时,可以启动计数器进行“减1”计数,当GATE0出现低电平时,暂停计数,并一直保留到CPU产生中断,在中断服务子程序中可以读取计数值,与初值相减后再加1就可以得到s(t)半周期内所包含的基准周期数。8253的初始化程序段如下:MOVDX,386H ;写计数器0方式控制字MOV AL,0011 0100BOUT DX,ALMOV DX,380H ;写计数器0时常数MOV AL,0OUT DX,ALOUT DX,ALSTI ;开中断中断服务子程序的主要内容为:PUSH AXPUSH BXPUSH DXMOV DX,386H;发计数器0的锁存命令MOV AL,0000 0000BOU

15、T DX,ALMOV DX,380H;读计数值IN AL,DXXCHG AL,AHIN AL,DXXCHG AL,AHNEG AXINC AXMOV BX,AX ;计算信号频率MOV DX, 000FHMOV AX, 4240HDIV BXMOV SFR,AX ;保存信号频率POP DXPOP BXPOP AXIRET例94 利用8253产生可变频率的时钟信号y(t),外部基准时钟为1MHz,要求根据键盘输入的2位十进制数,产生100种时钟信号,其分频系数分别是基准信号的2分频101分频。解:这里只需要一个计数器,设采用计数器0,其CLK0接外部基准时钟1MHz,GATE0接+5V,OUT0即

16、为产生的时钟信号y(t)。工作方式设置成方式3,其时常数为输入十进制数加2。设在数据段已经定义好键盘缓冲区KB_BUFF:KB_BUFF DB 10DB ?DB 10 DUP(?)设8253的控制字寄存器地址为COUNTD,计数器0的端口地址为COUNTA,则8253的应用程序段如下:MOVDX,COUNTD ;写计数器0方式控制字MOV AL,0001 0110BOUT DX,ALINPUT: MOV AH,0AH;输入2位十进制数LEA DX,KB_BUFFINT 21HMOV CL,KB_BUFF+1;取出输入个数CMP CL,2JA INPUT ;输入个数超出2个时,无效MOV AL,

17、KB_BUFF+2;取出十位SUB AL,30HJC INPUT ;非数字时,无效CMP AL,9JA INPUT ;非数字时,无效MOV CL,KB_BUFF+3 ;取出个位SUB CL,30HJC INPUT ;非数字时,无效CMP CL,9JA INPUT ;非数字时,无效MOV BL,10 ;十进制数变换成二进制数MUL BLADD AL,CLADD AL,2;修正MOV DX,COUNTA;写计数器0时常数OUT DX,ALJMP INPUT例95 在一个由8086构成的最小方式系统中,周期执行某一段程序(设用子程序MAIN_PROC表示),设MAIN_PROC子程序的执行时间为15

18、ms,要求设计一片8253(端口地址为20H27H中的偶地址),外部基准时钟为100kHz,完成当程序执行异常时,自动进行复位操作。解:当程序正常执行时,每次执行MAIN_PROC子程序的时间为15ms,如果一旦程序执行异常,则执行MAIN_PROC子程序的时间必定会超过15ms,根据这一点可以判定程序执行是否正常。8086 CPU的RESET(复位)端为高电平时,可以使CPU得到复位,为此可以采用8253计数器的方式0实现程序执行异常的检测。如图所示。我们在每次调用子程序MAIN_PROC之前都写入计数器的时常数,这样,两次写时常数的时间间隔为15ms。然后计数器0工作在方式0,其时常数确定

19、的定时时间为18ms,即时常数为 18ms/0.1ms-1=179。这样,在程序执行正常情况下,写入时常数后执行MAIN_PROC子程序,还没有达到定时的时间,又会写入时常数,从而确保OUT0端一直为低电平;当程序执行异常情况下,写入时常数后执行MAIN_ PROC子程序,由于程序执行异常,未能按时返回到主程序,当达到18ms时(如图虚线表示),就会在OUT0产生上升沿,通过处理后,可以产生CPU的RESET信号。8253的连接图如右上图所示。 8253的应用程序段如下:MOVDX,26H ;写计数器0方式控制字MOV AL,0001 0000BRESTART:OUT DX, ALMOV DX

20、, 20H;写计数器0时常数MOVAL, 179OUT DX, ALCALL MAIN_PROCJMP RESTART例8.1 在某微机系统中配置了一片8259A可编程中断控制器芯片,且初始化为完全(正常)嵌套方式,即中断优先权的级别是固定的,IR0优先权最高,IR1IR6逐级次之,IR7最低。IR0IR7均未屏蔽,CPU处于开中断状态,在每个中断服务程序开始均排有STI指令。若在CPU执行程序期间,IR2和 IR4同时有中断请求,在IR2服务期间(服务结束前),IR1有中断请求,在IR4服务期间,IR3有中断请求。试画出完全嵌套方式的中断响应过程示意图。 例8.2 若要开发一条INT 40H

21、软件中断指令,该指令完成的功能为光标回车换行。设中断服务程序的入口地址为INTRUP,使编写完成此功能的主程序和中断服务程序主程序:PUSH DSMOV AX,0MOV DS,AXMOV BX,40H*4MOV AX,OFFSET INTRUPMOV BX,AXMOV AX,SEG INTRUPMOV BX+2,AXPOP DSINT 40H中断服务程序:Intrup:PUSH AXPUSH BXMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HPOP BXPOP AXIRET例8.3 中断向量的形成方法与步骤 主程序中向量的建立方法还

22、可以利用DOS 25H号功能调用来实现,具体做法如下:AH中预置入功能号25H;AL中预置要设置的中断类型号n;DS:DX中预置入中断服务程序的入口地址(两个寄存器分别置入段地址和偏移地址) 设置中断向量的程序如下:MOV DX,OFFSET INTRUPPUSH DSMOV AX,SEG INTRUPMOV DS,AXMOV AL,40HMOV AH,25HINT 21HPOP DS例8.4 以下图的输入设备为例,使用PC/XT机中的8259A的IR3引脚申请中断,中断类型OBH。给出一个完整的中断方式输入程序。设该输入设备的数据端口地址为240H, 8259A端口地址为20H、21H。输入

23、“回车”字符表示结束。STACK SEGMENT STACKDB 256 DUP(?)STACK ENDSDATA SEGMENTIN_BUFFER DB 100 DUP(?)IN_POINTER DW ?INT_IMR DB ?DATA ENDS;主程序CODEM SEGMENT ASSUME CS:CODEM,DS:DATA,SS:STACKSTART:MOV AX,SEG IN_INTRMOV DS,AXLEA DX,IN_INTRMOV AX,250BHINT 21HMOV AX,DATAMOV DS,AXMOV IN_INPOINTER,OFFSET IN_BUFFERIN AL,2

24、1HMOV INT_IMR,ALAND AL,BOUT 21H,ALSTIW:MOV AH,06HMOV DL,0FFHINT 21HCMP AL,0DHJNZ WMOV AL,INT_IMROUT 21H,ALMOV AX,4C00HINT 21HCODEM ENDS;中断服务程序CODES SEGMENTASSUME CS:CODEIN_INTR PROC FARPUSH DSPUSH AXPUSH BXPUSH DXSTIMOV BX,IN_POINTERMOV DX,240HIN AL,DXMOV BX,ALINC BXMOV IN_POINTER,BXEXIT:CLIMOV AL,2

25、0HOUT 20H,ALPOP DXPOP BXPOP AXPOP DSIRETIN_INTR ENDPCODES ENDSEND START例7.1 在PC/XT系统总线上扩充设计一个数据输出端口, 分配给该端口的地址为280H,输出端口芯片用74LS374,输出设备为8个LED发光二极管(1)画出此输出端口与PC/XT系统总线以及与LED发光二极管的连接图。(2)编写使8个LED发光二极管每间隔一段时间交替亮灭的功能段程序。解:74LS374的功能和74LS373相同,都是8位数据输出锁存器,不同之处是使能信号的有效形式,74LS374的使能信号CP为上升沿有效。LED发光二极管导通时流过

26、的电流应20mA,否则会损坏器件。设计的此输出端口与PC/XT系统总线以及与LED发光二极管的连接图如图7.9所示。 编写使8个LED发光二极管每间隔一段时间交替亮灭的功能段程序如下: MOV DX,280HLOP: MOV AL,0FFH OUT DX,AL ;使8个LED发光二极管亮 CALL DELAY1S ;调用1秒延时子程序 MOV AL,00H OUT DX,AL ;使8个LED发光二极管灭 JMP LOP例7.2 在8086 CPU工作在最小方式组成的微机系中.扩充设计一个数据输入端口,分配给该端口的地址8001H,输入端口芯片用74LS245,输入设备为8个乒乓开关。 (1)画出此输入端口与8086系统总线以及与输入设备的连接图。(2)编写

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论