设8259A的I/O地址为20H,21H,中断类型号0AH,从IR2引入 DATA SEGMENT
MESS DB '*****',OAH,ODH,'$' INTA00 EQU 0020H INTA01 EQU 0021H DATA ENDS
STACK SEGMENT STACK DB 100H DUP (?) STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK MAIN:MOV AX,DATA MOV DS,AX
MOV DX,INTA00 ;8259A初始化 MOV AL,13H ;写ICW1 OUT DX,AL
MOV DX,INTA01
MOV AL,08H ;写ICW2 OUT DX,AL
MOV AL,01H ;写ICW4 OUT DX,AL PUSH DS
MOV AX,SEG INT-P ;设置中断矢量 MOV DS,AX
MOV DX,OFFSET INT-P MOV AL,0AH MOV AH,25H INT 21H POP DS
MOV AL,0FBH ;写中断屏蔽字OCW1 OUT DX,AL
MOV DX,INTA00
MOV AL,20H ;写中断结束方式OCW2 OUT DX,AL MOV BX,10
WAIT1: STI ;开中断 JMP WAIT1 ;等待中断
INT-P:MOV AX,DATA ;中断服务程序入口 MOV DS,AX
MOV DX,OFFSET MESS ;输出指定字符串 MOV AH,09H INT 21H
MOV DX,INTA00 ;写OCW2,送中断结束命令EOI
MOV AL,20H OUT DX,AL
DEC BX ;控制10次循环 JNZ NEXT
MOV DX,INTA01 ;读屏蔽寄存器IMR IN AL,DX
OR AL,04H ;屏蔽IR2请求 OUT DX,AL
STI ;开中断
MOV AX,4C00H ;返回操作系统 INT 21H
NEXT: IRET ;中断返回 CODE: ENDS
END MAIN
第七章
3、CPU与IO接口设备数据传送的控制方式有哪几种?它们各有何特点? 答:(1)查询方式:不需要额外的硬件支持,但由于CPU与外设工作的不同步,致使CPU利用率低,适用于工作不太繁忙的系统中。 (2)中断方式:CPU与外部设备并行工作
(3)DMA方式:数据传送过程中,由DMA控制器参与工作,不需要CPU的干预,对批量数据传送效率高。
6、设8255A的A口工作于方式1输出,B口工作于方式0输入,试编写初始化程序(设端口地址为40H~43H) 答:MOV DX ,43H
MOV AL ,10100010 OUT DX,AL 7.使用8255A作为开关和LED指示灯电路的接口.要求8255A的A口连接8个开关,B口连接8个LED指示灯,将A口的开关状态读入,然后送至B口控制指示灯亮、灭。试画出接口电路设计图,并编写程序实现。
VCCR1R2R3R4R5R6R7R8D0-D7U13433323130292827RDWRA0A1RESET53698356D0D1D2D3D4D5D6D7RDWRA0A1RESETCSPA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5PC6PC7825513432140393837181920212223242514151617131211101U3A74063U3B740656740698D4D34D2S1S2S3S4S5S6S7S8VCC2D1U2A2A3A4123ABCY0Y1Y2Y3Y4Y5Y6Y715141312111097U3C456VCCU3D7406E1E2E374LS13811U3E740610D5U3F740612D61U4A74062D73U4B74064D8 程序实现:
设8255的地址:0FFE0H~0FFE3H DATA SEGMENT
DB 100H DUP(?) DATA ENDS
CODE SEGMENT
ASSUME CS:CODE ,DS DATA
START:MOV AX,DATA MOV DS,AX
MOV AL,10010000 ; A口方式0输入B口方式0输出 MOV DX,0FFE3H OUT DX,AL
MOV DX, 0FFE0H IN AL,DX ;读取A口开关状态 INC DX NOT AL OUT DX,AL ;输出B口驱动LED,开关闭合则LED亮 RET
CODE ENDS
END START
10、利用8254的通道1,产生500Hz的方波信号。设输入时钟频率CKL1=2.5MHz,端口地
址为FFA0H~FFA3H,试编写初始化程序。 答:端口地址:FFA0H-FFA3H
计数器1的控制字:01110110B=76H 计数常数=2.5M/500=5000 初始化程序: MOV AL,76H MOV DX,0FFA3H OUT DX,AL MOV AX,5000 MOV DX,0FFA1H
OUT DX,AL ;写入计数器1的低字节 MOV AL,AH OUT DX,AL ;写入计数器1的高字节
11、某系统使用8254的通道0作为计数器,记满1000,向CPU发中断请求,试编写初始化程序(端口地址自设)。
答:设8254端口地址:40H-43H
计数器0的控制字:00110000B=30H 计数常数=1000 初始化程序: MOV AL,30H OUT 43H,AL MOV AX,1000 OUT 40H,AL MOV AL,AH
;写入计数器0的低字节
OUT 40H,AL ;写入计数器0的高字节
12、采用8254的通道0产生周期为10ms的方波信号,设输入时钟频率为100kHz,8254的端口地址为38H-3BH,试编写初始化程序。 答:8254端口地址:38H-3BH
计数器0的控制字:00110110B=36H 计数常数=100K*10ms=1000 初始化程序: MOV AL,36H OUT 3BH,AL MOV AX,1000 OUT 38H,AL ;写入计数器0的低字节 MOV AL,AH OUT 38H,AL ;写入计数器0的高字节
15、什么是波特率?假设异步传输的一帧信息由1为起始位,7位数据位、1为校验位和1位停止位构成,传送的波特率为9600,则每秒钟能传输字符的个数是多少?
答:波特率是指数据传送的速率,含义是指每秒钟传二进制数的位数,单位用bps或波特表示每秒可传送的字符个数。 9600/(1+7+1+1)=960
16、一个异步串行发送器,发送的字符格式为:1位起始位、7位数据位、1位奇偶校验位和2位停止位,若每秒传送100个字符,则其波特率为多少? 答:100*(1+7+1+2)=1100bps
19、设某系统使用一片8250进行串行通信,要求波特率为2400,8位数据位,2位停止位,偶校验,对接收缓冲器满开中断,试编写初始化程序。