微型计算机原理及应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
答:MOV AL,1BH(13H?) ;写ICW1,高电平,单片,要ICW4 OUT 76H,AL MOV AL,80H ;写ICW2,中断类型号从80H开始 OUT 77H,AL NOP ;系统中仅有一片8259,不需设ICW3 MOV AL,13H (03H) ;写ICW4,用特殊(一般)全嵌套方式,不需要缓冲
• 7-12 有一片8253接在系统中,其端口地址分配如下: 0# 计数器 :340H 1# 计数器 :341H 2# 计数器: 342H 控制口 : 343H 设已有信号源频率1MHZ ,现要求用一片8253定时1秒钟,设计 出硬件连接图,并编程初始化。
答:使用定时器0、1串联,经两次1000分频
CS
7-26 如果需要8255A的PC3口输出频率是2KHZ的连续方波,如何使用 C口的置位与复位控制命令字编程实现它(主频2MHZ)? 第一种方法:软件延时的方法 分析:主频2MHZ,则一个机器周期0.5微秒, PC3口输出频率是2KHZ的 连续方波,则半个周期是0.25毫秒(即0.25毫秒翻转一次),构造一个延 时0.25毫秒的子程序.PC3口伴随着PC口联动. ⑴ MOV AL,92H; A组与B组均设为方式0, A口,B口均设为 输入, C口为输出, MOV DX,203H OUT DX,AL ;写控制字 MOV DX,202H ABC: MOV AL,08H ;PC3输出高电平 OUT DX,AL ;1 CALL DELAY ; MOV AL,00H ;PC3输出低电平 OUT DX,AL ; CALL DELAY ;延时 JMP ABC
嵌套, 8088/8086配置,未提自动结束否。
OUT DX,AL MOV AL,0 OUT DX,AL
;写OCW1(一个都不屏蔽)
7.22 试按照如下要求对8259中断控制器设置命令字。系统中有一 片8259,中断请求信号用电平触发方式,下面要用ICW4,中断类型 码为80H~87H,用特殊全嵌套方式,不用缓冲方式,采用中断自动 结束方式,8259的端口地址为76H,77H
• ⑵ 利用1(2)# 计数器高、低8位计数,计数值为1000, BCD 方式计数,选用方式2工作,试编程初始化。 • MOV AL,75H(0B5H);1(2)#计数器16位,方式2,BCD计数 MOV DX,223H OUT DX,AL ;写控制字 MOV AX,1000H ;1000=3E8H • MOV DX,221H(222H) OUT DX,AL ;先送低字节00 MOV AL,AH ; • OUT DX,AL ;再送高字节10(1000D) ,必须送高字节 • 必须分两次送,不能 OUT DX,AX 一次完成
DELAY PRCO NEAR MOV CX,49 ;4 BCD: LOOP BCD ;10 RET ;8 DELAY ENDP (4+8+10×49) ×0.5us=250us=0.25ms
7-22 如果需要8255A的PC7口输出频率是2KHZ的连续方波,如何使用 C口的置位与复位控制命令字编程实现它(主频2MHZ)? 第二种方法:软件延时的方法(硬件电路如题7-16图) 分析:主频2MHZ,则一个机器周期0.5微秒, PC3口输出频率是2KHZ的 连续方波,则半个周期是0.25毫秒(即0.25毫秒翻转一次),构造一个延 时0.25毫秒的子程序. PC3口不是伴随着PC口联动,而是单独被置1或 清0.
7-11 有一片8253接在系统中,其端口地址分配如下: 0# 计数器 :220H 1# 计数器 :221H 2# 计数器:222H 控制口 : 223H ⑴ 利用0# 计数器高8位计数,计数值为256,二进制方式, 选用方式3工作,试编程初始化。 答:⑴ MOV AL,26H;选择0#计数器高8位,方式3 ,二进制方式 MOV DX,223H OUT DX,AL ;写控制字,必须使用DX MOV AL,0 ; 计数器0高8位计数256≠FFH , MOV DX,220H;(上行注释:256是一个字节写不下的) OUT DX,AL ;或AL,或AX,而不能AH
MOV AL,34H;选择0#计数器16位计数,方式2,2进制计数方式 MOV DX,343H; OUT DX,AL ;写控制字; MOV AX,1000 MOV DX,340H OUT DX,AL ;先送低字节 MOV AL,AH OUT DX,AL ;再送高字节 (所设计出的定时器1的初始化程序见下页)
⑴ MOV AL,0B6H; A组与B组均设为方式1, A口,B口均设为输入, C口为
输出, MOV DX,203H OUT DX,AL MOV DX,203H ABC: MOV AL,07H OUT DX,AL CALL DELAY MOV AL,06H OUT DX,AL CALL DELAY JMP ABC ;写控制字
;PC3输出高电平 ;1 ; ;PC7输出低电平 ; ;延时
A8 A7 A6
G2A G2B
G1
Y0 Y174LS138Y7 去8255的片选引脚
OBF
ACK
RESET
A0 A1
RD
WR
RESET
PB5
A0
A1
RD
WR
CS
来自138的Y0
(2)
方法2 CSEG SEGMENT ASSUME CS:CSEG AAA:MOV DX,201H IN AL, DX ; AND AL,01H CMP AL,0 JNE AAA ;查询PB0( 输入选通信号,低有效把外设输入的数据进入A口缓冲器 MOV DX,200H IN AL, DX MOV AH,AL BBB: MOV DX,201H IN AL,DX AND AL,02H CMP AL,0 JNE BBB ;查询PB1( 外设应答信号,低有效,将外设由A口输入的数据传送到C 口缓冲器 ) MOV DX,202H MOV AL,AH OUT DX, AL ;C口输出 JMP AAA CSEG ENDS END AAA
答:⑴ MOV AL,92H; A组与B组均设为方式0, A口,B口均设为输入, C口为输出, MOV DX,203H OUT DX,AL ;写控制字
(2) MOV DX,202H ;PC口地址 START:MOV DX,201H ;取B口状态 MOV AL,BL Detect: IN AL, DX OUT DX,AL;用PA口状态去控 RCR AL,1 ;将PB0位移至C 制PC口 JC Detect ;检测 STB 等待低 MOV DX,201H ;取B口状态 IN AL, DX OR AL,02H ; PB1 置1 OUT DX,AL ;发出IBF信号 AND AL,0FBH ; MOV DX,201H ;取B口状态 OUT DX,AL ;发出 OBF 信号, IN AL, DX Detect1: IN AL, DX AND AL,0FDH MOV CL,4 OUT DX,AL;清除IBF信号, RCR AL,CL ;将PB3位移至C 至此,输入结束 JC Detect1 ;检测 ACK JMP START 硬件图见下页 STB 选通信号低有效,输入缓冲器接收 硬件图见下页 OBF 输出缓冲器满信号,低有效, 到一个来自外设的8位数据, IBF输入缓冲器满的输出信号,高电 通知外设取走端口数据 平有效 : ACK 外设应答信号,低有效, P265 方式1(输入) 表示外设已取走PC口数据
高电平
去8253的片 选引脚
1MHz 频率信号
图如 可果 不要 能求 不画 画图 。
,
7.21编写8259的初始化程序,系统中仅有一片8259,允许8个中断边
沿触发,不需要缓冲,一般全嵌套工作方式,中断向量为40H。(设其 片选地址20H、21H)
答:MOV DX,20H MOV AL,13H (1BH?) ;写ICW1,上升沿,单片,要ICW4 OUT DX,AL MOV DX,21H MOV AL,40H ;写ICW2,中断类型号从40H开始 OUT DX,AL NOP ;系统中仅有一片8259,不需设ICW3 MOV AL,01H(03H);写ICW4,不需要缓冲工作方式,非特殊完全
8253 - 5
A11 A10 A9
IOR 0 RD 0 WR 0 CS A1 A0 CLK2
IOW
来自74LS138的Y5 A1 A0 D0 ~ D7 + 5V
A8 A7 A6
G2A G2B
G1
Y0 Y574LS138Y7
0
OUT1
D0 ~ D7 GATE0 GATE1 GATE2 OUT2 CLK0 CLK1 OUT0
答案当然不唯一:也可以将三个定时器全用上:使用定时器0、1、2串联,各进行100分频
MOV AL,14H;选择0#计数器8位计数, MOV DX,343H;方式2,二进制计数方式 OUT DX,AL;
式
MOV AL,100 MOV DX,341H OUT DX,AL
MOV AL,100 ;64H MOV DX,340H
8255
D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4
A11 A10 A9
STB IBF
MOV AL,98H;选择2#计数器8位计数 MOV DX,343H;方式4/0/1,二进制计数方
OUT DX,AL MOV AL,100 MOV DX,341H OUT DX,AL
OUT DX,AL ; MOV AL,54H;选择1#计数器8位计数
MOV DX,343H;方式2,二进制计数方式
OUT DX,AL
;工作方式,采用中断自动结束方式,088/8086配置
OUT 77H,AL MOV AL,0 OUT 77H,AL
;写OCW1(一个都不屏蔽)
7-26 有一片8255接在系统中,其A口,B口,C口,控制口地址 分别是200H,201H,202H , 203H,实现: ⑴ A组与B组均设为方式0, A口,B口均设为输入, C口为输 出,试编程初始化。 (2) 在上述情况下,设查询信号从B口输入,如何实现查询式 输入(输入信号从A口输入)与查询式输出(输出信号从C口 输出)
硬件图见下页
8
D0~D7
8255
D0~D7 PA0
8
A5 A6
A7 A8
A9
+
8
PC0~ PC7 PB0
+
G1ຫໍສະໝຸດ Baidu
G2B
STB
ACK
PB1
A4 A3 A2
G2A
Y0
74LS138
PB2~ PB7
PB2~PB7
RESET
A0 A1
RD
WR
RESET A1
A0
去8255的片选 (200H)
RD
WR
来自138的Y0
MOV AL,73H;#1计数器16位计数,方式1/0/4,BCD计数方式 MOV DX,343H ; 72H,#1 16位计数,方式1/0/4,二进制计数方式. OUT DX,AL ;写控制字;1000的二进制数是3E8H MOV AL,00H MOV DX,341H OUT DX,AL ;先送低字节 MOV AL,10H OUT DX,AL ;再送高字节