6.设8255A的A口工作于方式1输出,B口工作于方式0输入,试编写初始化程序(设端口地址为40H~43H)。 解:
MOV DX, 43H
MOV AL, 10100010B(A2H) OUT DX,AL
7.使用8255A作为开关和LED指示灯的接口。要求8255A的A 口连接8个开关,B口连接8个LED指示灯,将A口的开关状态读入,然后送至B口控制指示灯亮、灭。试画出接口电路设计图,并编写程序实现之。 解:电路图参见教材P193图7-14。A口接入8个开关,B口用LED替代数码管,共阴接法。 设8255四个端口的地址为FFE0H~FFE3H。 DATA SEGMENT PORTA EQU 0FFE0H PORTB EQU 0FFE1H CONTR EQU 0FFE3H DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX
MOV AL, 90H ;初始化8255,PA为输入,PB为输出 MOV DX, CONTR OUT DX, AL
L0: MOV DX, PORTA ;读PA口 IN AL, DX
NOT AL ;按下开关灯亮 MOV DX, PORTB
OUT DX,AL ;送PB口显示 MOV CX,1000 ;延时 L1: DEC CX JNZ L1 JMP L0
CODE ENDS END START 8.在甲乙两台微机之间并行传送1 KB的数据,甲机发送,乙机接收。要求甲机一侧的8255A工作在方式1,乙机一侧的8255A工作在方式0,双机都采用查询方式传送数据。试画出通信接口电路图,并编写甲机的发送程序和乙机的接收程序。
13
1甲机发送程序段
MOV DX,303H ;8255A命令目 MOV AL,10100000B ;初始化工作方式字 OUT DX,AL
MOV AL,0DH ;置发送中断允许INTEA=1 OUT DX,AL ;PC6=1
MOV SI,OFFSET BUFS ;设置发送区的指针 MOV CX,3FFH ;发送字节数
MOV DX,300H ;向A口写第一个数,产生 ;第一个OBF信号
MOV AL,[SI] ;送给乙方,以便获取乙方的 ;ACK信号 OUT DX,AL
INC SI ;内存地址加1 DEC CX ;传送字节数减1
L:MOV DX,302H ;8255A状态口
IN AL,DX ;查发送中断请求INTRA=1? AND AL,08H ;PC3=1
JZ L ;若无中断请求,则等待
;若有中断请求,则向A口写数 MOV DX,300H ;8255APA口地址 MOV AL,[SI] ;从内存取数
OUT DX,AL ;通过A口向乙机发送第二个数据 INC SI ;内存地址加1 DEC CX ;字节数减1
JNZ L ;字节未完,继续 MOV AH,4C00H ;已完,退出 INT 21H ;返回DOS BUFS DB 1024个数据 2、乙机接受数据
14
MOV DX,303H ;8255A命令口 MOV AL,10100000B ;初始化工作方式字 OUT DX,AL
MOV AL,00000111B ;置
=1(PC3=1)
OUT DX,AL
MOV SI,OFFSET BUFR ;设置接收数据的指针 MOV CX,3FFH ;接收字节数 L1:MOV DX,302H ;8255APC口
IN AL,DX ;查甲机的OBF=0? ;(乙机的PC7=0)
AND AL,80H ;即查甲机是否有数据发来 JNZ L1 ;若无数据请求,则等待 ;若有数据,则从口读取 MOV DX,300H ;8255A PA口地址 IN AL,DX ;从A口读入数据 MOV [DI],AL ;存入内存
MOV DX,303H ;产生ACK信号,并发给甲机 MOV AL,00000110B ;PC3置”0” OUT DX,AL NOP NOP
MOV AL,00000111B ;PC3置”1” OUT DX,AL
INC DI ;内存地址加1 DEC CX ;字节数减1
JNZ L1 ;字节未完,则继续 MOV AX,4C00H ;已完,退出 INT 21H ;返回DOS BUFR DB 1024DU(?
9.8254定时/计数器有哪几种工作方式?它们的主要特点是什么? 共有六种工作方式,分别对应与六种不同的用途。 解:
方式0:计数结束
方式1:可重复触发的单稳态触发器 方式2:分须器 方式3:方波发生器
方式4:软件触发的选通信号发生器 方式5:硬件触发的选通信号发生器
10.利用8254的通道1,产生500 Hz的方波信号。设输入时钟频率CKL1=2.5 MHz,端口地址为FFAOH~FFA3H,试编制初始化程序。 解:
MOV AL, 01110110B MOV DX, 0FFA3H
15
OUT DX, AL
MOV AX, 5000 ;2.5MHz/500Hz=5000 MOV DX, 0FFA1H OUT DX, AL MOV AL, AH OUT DX, AL
11.某系统使用8254的通道0作为计数器,计满1 000,向CPU发中断请求,试编写初始化程序(端口地址自设)。 解:
设端口地址为80H~83H MOV AL, 00110000B OUT 83H, AL MOV AX, 1000 OUT 80H, AL MOV AL, AH OUT 80H, AL
12.采用8254的通道0产生周期为10 ms的方波信号,设输入时钟的频率为100kHz,8254的端口地址为38H~3BH,试编写初始化程序。 解: MOV AL, 00110110B OUT 3BH, AL
MOV AX, 1000 ; 10ms*100kHz=1000 OUT 38H, AL MOV AL, AH OUT 38H, AL
注意: 计数值的高低字节的装入;
13.串行通信有哪几种通信方式?它们的特点是什么? 有同步通信和异步通信两种 (1)同步通信
同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符。它们均由同步字符、数据字符和校验字符(CRC)组成。其中同步字符位于帧开头,用于确认数据字符的开始。数据字符在同步字符之后,个数没有限制,由所需传输的数据块长度来决定;校验字符有1到2个,用于接收端对接收到的字符序列进行正确性的校验。同步通信的缺点是要求发送时钟和接收时钟保持严格的同步。 (2)异步通信
异步通信中,在异步通信中有两个比较重要的指标:字符帧格式和波特率。数据通常以字符或者字节为单位组成字符帧传送。字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。接收端检测到传输线上发送过来的低电平逻辑\(即字符帧起始位)时,确定发送端已开始发送数据,每当接收端收到字符帧中的停止位时,就知道一帧字符已经发送完毕。
14.异步串行通信的数据格式是什么?
异步通信数据帧的第一位是开始位,在通信线上没有数据传送时处于逻辑“1”状态。当发
16