科目:微机原理与系统设计授课老师:李明、何学辉
学院:电子工程学院
专业:电子信息工程
学生姓名:
学号:
微机原理硬件设计综合作业
基于8086最小方式系统总线完成电路设计及编程:
1、扩展16K字节的ROM存储器,起始地址为:0x10000;
Intel 2764的存储容量为8KB,因此用两片Intel 2764构成连续的RAM存储区域的总容量为2 8KB=16KB=04000H,鉴于起始地址为10000H,故最高地址为
10000H+04000H-1=13FFFH
电路如图
2、扩展16K 字节的RAM 存储器,起始地址为:0xF0000; Intel 6264的存储容量为8KB ,因此用两片Intel 6264构成连续的RAM 存储区域的总容量为2 8KB=16KB=04000H ,鉴于起始地址为F0000H ,故最高地址为
F0000H+04000H-1=F3FFFH
片内地址总线有13根,接地址总线的131~A A ,0A 和BHE 用于区分奇偶片,用74LS155作译码电路,如图所示
3、设计一片8259中断控制器,端口地址分别为:0x300,0x302; 鉴于端口地址分别是300H 和302H ,可将82590A 接到80861A ,其他作译码。
电路如图:
4、设计一片8253定时控制器,端口地址分别为:0x320,0x322,x324,0x326;
根据端口地址可知,825301,A A 应该分别接到8086的12,A A ,其余参与译码。
电路如图:
5、设计一片8255并行接口,端口地址分别为:0x221,0x223,x225,0x227;
由于端口地址为奇地址,8086数据总线应该接158~D D ,且BHE 参与译码。
根据端口地址可得825501,A A 应该分别接到8086的12,A A ,其余参与译码。
电路如图:
6、设计外部连接电路实现通过8253每一秒钟产生周期中断信号,并利用该信号通过8259向8086处理器发送中断请求,利用该中断同步,8086处理器周期的从8255并行接口输入8位开关量的值,并存入到RAM的某个地址中。
IR 利用8253输出端(OUT)产生的信号接入8259的中断请求输入端,以
0为例,然后8259向8086处理器发中断请求,可利用8086中断响应信号参与到8255译码电路中来同步,从而周期的从8255输入开关量的值。
可将8255的A端口作为8位开关量的输入,B端口作为输出存到RAM中。
省略各个O
I/
端口的译码电路,主要控制信号的连接如图:
7、请编写实现上述功能的完整的汇编程序代码,包括主程序及中断服务程序,在主程序中需要完成中断向量表的初始化(假定8259采用8086的30号中断进行同步,中断服务程序段的标号为:INT30_ISR),8259,8253(假定外部能有的时钟源为1MHz)及8255的初始化;在中断服务程序实现从8255中输入开关量并存储到RAM的某个地址中。
STACK SEGMENT STACK
DB 256 DUP(?)
TOP LABEL WORD
STACA ENDS
DATA SEGMENT
IN_BUFFER DB 100 DUP(?)
IN_POINTER
IN_IMR
DATA ENDS
CODEM SEGMENT
ASSUME CS:CODEM,DS:DATA,ES:DATA,SS:STACK START:
MOV AX,INT30_ISR ;设置中断向量
MOV DS,AX
LEA DA,INT30_ISR
MOV AX,300BH
INT 21H
MOV AX,DATA
MOV DS,AX
MOV IN_POINTER OFFSET IN_BUFFER
MOV DX,302H
IN AL,DX
MOV INT_IMR,AL
AND AL,1111110
OUT DX,AL
MOV DX,227H
MOV AL,10010000B
OUT DX,AL
MOV DX,326H
MOV AL,00110110
OUT DX,AL
MOV DX,320H
MOV AX,1000H
OUT DX,AL
XCHG AL,AH
OUT DX,AL
MOV DX,326H
MOV AL,01110110
OUT DX,AL
MOV DX,322H
MOV AX,1000
OUT DX,AL
XCHG AH,AL
OUT DX,AL
STI
;中断服务程序
CODES SEGMENT
ASSUME CS:CODE INT30_ISR PROC FAR
PUSH DS
PUSH AX
PUSH BX
PUSH DX
MOV BX,IN_POINTER
MOV DX,221H
IN AL,DX
MOV [BX],AL
INC BX
MOV IN_POINTER,BX EXIT:CLI
MOV AL,20H
MOV DX,300H
OUT DX,AL
POP DX
POP BX
POP AX
POP DS
IRET
INT30_ISR ENDP
CODES ENDS
END START。