《2022年微机原理习题 .pdf》由会员分享,可在线阅读,更多相关《2022年微机原理习题 .pdf(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1. 设 8255A 的 A 口、 B 口、C 口和控制字寄存器的端口地址分别为80H 、82H 、84H 和 86H 。要求 A 口工作在方式 0 输出,B 口工作在方式 0 输入,C 口高 4 位输入,低4 位输出,试编写 8255A 的初始化程序。MOV AL ,10001010B ;方式控制字OUT 86H ,AL 2. 8255A 的 A 口、B 口、C 口和控制字寄存器的端口地址分别为80H 、82H 、84H 和 86H, 要求 PC4 输出高电平,PC5 输出低电平, PC6 输出一个正脉冲,试写出完成这些功能的指令序列。MOV AL ,00001001B ;PC4 输出高电平
2、OUT 86H ,AL MOV AL ,00001010B ;PC5 输出低电平OUT 86H ,AL MOV AL ,000001100B ;PC6 先输出低电平OUT 86H ,AL MOV AL ,00001101B ;PC6 再输出高电平OUT 86H ,AL MOV AL ,00001100B ;PC6 再输出低电平,形成一个正脉冲OUT 86H ,AL 3. 8255A 的口地址为80H83H ,8253 的口地址为84H87H ,(1 )若 A 口接 8 个开关 K7K0,B 口接 8 个指示灯 LED 7 LED0 ,当开关合上时相应的指示灯亮, 断开时灯灭, 要求每隔 0.5
3、s 检测一次开关状态, 并在 LED 上显示出来,试画出硬件连线图,编写实现这种功能的程序。(2 )若把接在端口A 上的开关去掉, 要求接在端口B 上的指示灯轮流熄灭,每只灯熄灭1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 16 页 - - - - - - - - - 秒钟,请编程实现这种功能。答: (1 )8255A :A 口输入, B 口输出8253:2MHz/2Hz 1000000 通道 0 工作于方式2 ,取 N01000 通道 1 工作于方式0 ,取 N1
4、999,即得 OUT1 每 0.5 秒中断一次。本题用 8253 定时中断,中断处理时检测开关状态,并点亮相应的LED 。 假设 8259A 已初始化,主程序如下:MOV AX, SEG INTR ;形成中断矢量表MOV DS, AX MOV DX, OFFSET INTR MOV AL, N MOV AH, 25H INT 21H MOV AL, 10010000B ;8255初始化OUT 83H, AL MOV AL, 00110101B ;通道 0 方式 2 ,BCD 计数OUT 87H, AL MOV AL, 00H ;置初值 1000 OUT 84H, AL MOV AL, 10H
5、OUT 84H, AL MOV AL, 01110001B ;通道 1 方式 0 ,BCD 计数OUT 87H, AL MOV AL, 99H ;置初值 999 OUT 85H, AL MOV AL, 09H OUT 85H, AL STI AGAIN:HLT JMP AGAIN 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 16 页 - - - - - - - - - 中断服务程序:INTR: PUSH AX STI IN AL, 80H ;检测开关,合上为0 NOT
6、 AL ;取反OUT 81H, AL ;点亮相应 LED (合上)MOV AL, 01110001B ;通道 1 方式 0 ,BCD 计数OUT 87H, AL MOV AL, 99H ;置初值 999 OUT 85H, AL MOV AL, 09H OUT 85H, AL CLI MOV AL, 20H ;普通 EOI 命令OUT 20H, AL POP AX IRET 2 )8255A :B 口输出8253:通道 0 工作于方式2 ,取 N02000 通道 1 工作于方式3 ,取 N11000,即得 OUT1 频率为 1Hz (周期为1 秒)的方波,接到 8259A 的 IRi ,边沿触发
7、中断请求。主程序如下:MOV AX, SEG INTR ;形成中断矢量表MOV DS, AX MOV DX, OFFSET INTR MOV AL, N MOV AH, 25H INT 21H 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 16 页 - - - - - - - - - MOV AL, 10000000B ;8255初始化OUT 83H, AL MOV AL, 00110101B ;通道 0 方式 2 ,BCD 计数OUT 87H, AL MOV AL,
8、00H ;置初值 2000 OUT 84H, AL MOV AL, 20H OUT 84H, AL MOV AL, 01110111B ;通道 1 方式 3 ,BCD 计数OUT 87H, AL MOV AL, 00H ;置初值 1000 OUT 85H, AL MOV AL, 10H OUT 85H, AL MOV AL, 0FEH ;熄灭 LED0 OUT 81H, AL STI GOON:HLT JMP 中断服务程序如下:INTR: PUSH AX STI ROL AL, 1 ;AL 左循环移位 1 位OUT 81H, AL ;点亮下一位 LED CLI MOV AL, 20H OUT
9、20H, AL ;普通 EOI 结束命令POP AX IRET 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 16 页 - - - - - - - - - 硬件连接图如下:4. 设 8255A 的口地址为 300H303H,A 口接 4 个开关 K3K0,B 口接一个七段 LED 显示器,用来显示4 个开关所拨通的16 进制数字 0F,开关都合上时,显示 0 ,都断开时显示 F,每隔 2 秒钟检测一次,试画出硬件连线图,并编写实现这种功能的程序。名师资料总结 - - -
10、精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 16 页 - - - - - - - - - 与上题思路相同8255A :A 口方式0 输入, B 口方式 0 输出,端口地址300H303H 8253:用于 2 秒定时,端口地址为304H307H 2MHz/0.5Hz 4000000 通道 0 工作于方式2 ,取 N04000 通道 1 工作于方式0 ,取 N1999,即得 OUT1 每 2 秒中断一次。本题用8253 定时中断,中断处理时检测开关状态,并点亮相应的LED 。名师资料总结 - -
11、 -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 16 页 - - - - - - - - - 假设 8259A 已初始化,主程序如下:TABLE DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H ; 七段码表格DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71H MOV AX, SEG INTR ;形成中断矢量表MOV DS, AX MOV DX, OFFSET INTR MOV AL, N MOV AH, 25H INT 21
12、H MOV AL, 10010000B ;8255初始化MOV DX,303H OUT DX, AL MOV AL, 00110101B ;8253初始化,通道0 方式 2 ,BCD 计数MOV DX ,307H OUT DX ,AL MOV AL, 00H ;置初值 4000H MOV DX ,304H OUT DX, AL MOV AL, 40H OUT DX, AL 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 16 页 - - - - - - - - - MOV
13、 AL, 01110001B ;通道 1 方式 0 ,BCD 计数MOV DX ,307H OUT DX, AL MOV AL, 99H ;置初值 999 MOV DX ,305H OUT DX, AL MOV AL, 09H OUT DX, AL STI AGAIN:HLT JMP AGAIN 中断服务程序:INTR: PUSH AX STI MOV DX ,300H IN AL, DX ;检测开关,合上为0 AND AL ,0FH ;只保留低 4 位 PA 3 PA 0 MOV BX ,OFFSET TABLE XLAT TABLE MOV DX ,301H OUT DX ,AL ;点亮
14、LED ,显示数字MOV AL, 01110001B ;通道 1 方式 0 ,BCD 计数MOV DX ,307H OUT DX ,AL MOV AL, 99H ;置初值 999 MOV DX ,305H OUT DX ,AL MOV AL, 09H OUT DX ,AL CLI 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 16 页 - - - - - - - - - MOV AL, 20H ;普通 EOI 命令OUT 20H, AL POP AX IRET 5. 利
15、用 8255A 和 ADC0809 等芯片设计PC 机上的 A/D 转换卡,设 8255A 的口地址为3C0 H3C3H, 要求对 8 个通道各采集 1 个数据,存放到数据段中以D_BUF 为始址的缓冲器中,试完成以下工作:(1 )画出硬件连接图。(2 )编写完成上述功能的程序。(2 )AD_SUB PROC NEAR MOV CX,8 ;CX 作数据计数器MOV BL,00H ;模拟通道号存在BL 中LEA DI ,D_BUF ;缓冲区名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第
16、 9 页,共 16 页 - - - - - - - - - NEXT_IN : MOV DX,3C2H ;8255A 端口 C 地址MOV AL ,BL OUT DX ,AL ;输出通道号MOV DX,3C3H ;指向控制口MOV AL ,00000111B ;PC3 置 1 OUT DX ,AL ;送出开始启动信号NOP ;延时NOP NOP MOV AL ,00000110B ;PC3 复位OUT DX ,AL ;送出结束启动信号MOV DX,3C2H ;C 口NO_CONV : IN AL ,DX ;读入 C 口内容TEST AL ,80H ;PC7 ,EOC 信号JNZ NO_CONV
17、 ;PC7=1 ,未开始转换,等待NO_EOC :IN AL ,DX ;PC7=0 ,已启动转换TEST AL ,80H ;再查 PC7 JZ NO_EOC ;PC7=0 ,转换未结束,等待MOV DX ,3C0H ;PC7=1 ,转换结束, DX 指向 A 口IN AL ,DX ;读入数据MOV DI ,AL ;存入缓冲区INC DI INC BL ;指向下个通道LOOP NEXT_IN RET AD_SUB ENDP 6. 试利用 ADC0809,8253 和 8259A 等芯片设计 8 通道 A/D 转换电路。系统名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
18、- - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 16 页 - - - - - - - - - 中用 8253 作定时器,采用中断方式控制采样率, 采样率为 500Hz 。 设 8253 的通道 0 输入时钟脉冲为2MHz ,输出端 OUT0 接 8259A 的 IR2 ,8253 的口地址为 300H303H,8259A 的口地址为 304H 和 305H,ADC0809 的 8 个输入通道的口地址为308H30FH,查询EOC 信号和状态口地址为306H,ADC0809 的输入时钟频率为640KHz ,A/D 转换的结果依次存入数据段中以B
19、UFFER 为始址的内存中,从通道0 开始先存入各通道的第一个数据,再存放第二个数据,采集10 秒钟后停止工作。要求:(1 )画出硬件连线图,可以不画具体的译码电路。(2 )编写 8253,8259A (只需写入中断屏蔽字)的初始化程序及采集8 路模拟信号的中断服务程序。答: (1 )(2 )因为 8253 的时钟输入频率为2MHz ,而要求的采样频率f=500Hz ,即用 8253 定时,每隔2ms 中断一次,因此8253 的分频次数(时间常数)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - -
20、- - 第 11 页,共 16 页 - - - - - - - - - N=2MHz/500Hz=4000 。采集 10 秒钟,共采集10s/2ms=5000 次,即8253 中断次数为5000 次。DATA SEGMENT BUFFER DB 8*5000 DUP(?)DATA ENDS ;数据采集子程序8253初始化编程,通道0,方式 2 ,先写低字节,后高字节, BCD 计数,时间常数 4000 MOV DX ,303H MOV AL ,00110101B OUT DX,AL MOV DX ,300H ;通道 0 MOV AX ,4000H ;时间常数OUT DX,AL MOV AL ,
21、AH OUT DX,AL ;8259A 设置屏蔽字,仅允许8259A 的 IR2 和键盘中断,其余禁止MOV AL ,11111001B ;屏蔽字MOV DX ,305H OUT DX,AL ;向屏蔽寄存器输出屏蔽字; 设置数据缓冲区始址到SI 中, 计数初值到BX 中, 等待中断,每通道采完5000 次后结束中断MOV SI,OFFSET BUFFER ;SI 指向数据缓冲区MOV BX ,5000 STI ;开中断AGAIN :CMP BX,0 JNZ AGAIN MOV AL ,11111101B ;采集完,禁止IR2 中断名师资料总结 - - -精品资料欢迎下载 - - - - - -
22、 - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 16 页 - - - - - - - - - MOV DX ,305H OUT DX,AL MOV AH ,4CH ;退出中断INT 21H ;中断服务程序,对每个通道均采集一个数据,存入BUFFER ADINT PROC NEAR MOV CX ,0008H ;设置通道计数器初值MOV DX ,308H ;DX 指向 ADC 通道 0 NEXT :OUT DX,AL ;启动一次转换PUSH DX ;保存通道号MOV DX ,306H ;DX 指向状态口POLL :IN AL ,DX
23、;读入 EOC 状态TEST AL ,80H ;EOC (D7)=0?即开始转换了JNZ POLL ;非 0 ,循环等待NO_END :IN AL ,DX ;EOC=0,开始转换TEST AL ,80H ;再查 EOC 是否为 1 JZ NO_END ;EOC=0,等待转换结束POP DX ;EOC=1 ,恢复通道地址IN AL ,DX ;读取结果MOV SI ,AL ;存储到缓冲区INC DX ;DX 指向下一个通道INC SI ;地址指针指向下一个缓冲单元LOOP NEXT ;通道计数器减1 ,结果非0 则循环DEC BX ;为 0 ,缓冲数据计数器减1 MOV AL ,20H MOV D
24、X ,304H OUT DX ,AL STI ;开中断IRET ADINT ENDP 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 16 页 - - - - - - - - - 7. 利用 8255A 和 AD574A 设计数据采集系统,输入模拟电压为0 +10V,若每秒采集 100 个数据,转换后的数据字存放在W_BUF 开始的缓冲器中,低字节在前,高字节在后,采满16K 字节的数据后停止工作,要求:(1 )画出硬件连线图。(2 )编写启动AD574A 工作和读取转
25、换结果的子程序。(2 )16K 字节的数据共需要8K=8192 次采集;8255A 的端口地址PORT_A EQU 0F0H ;A 口地址PORT_B EQU 0F1H ;B 口地址PORT_C EQU 0F2H ;C 口地址PORT_CTL EQU 0F3H ;控制口地址;8255A 控制字: A 口和 B 口工作于方式0 ,A 口、 B 口和 C 口的上半部分为输入, C 口的下半部分为输出LEA DI ,W_BUF MOV CX,8192 AD_CONT :MOV AL ,10011010B ;方式字名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -
26、 - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 16 页 - - - - - - - - - OUT PORT_CTL ,AL ;输出方式字;启动 A/D 转换MOV AL ,00H OUT PORT_C ,AL ;使 CS,CE, R/C 均为低NOP ;延时NOP MOV AL ,04H OUT PORT_C ,AL ;使 CE=1,启动 A/D 转换NOP NOP MOV AL ,03H OUT PORT_C ,AL ;使 CE=0,CS=R/ C =1,结束启动状态READ_STS :IN AL ,PORT_C ;读 STS 状态TEST AL ,
27、80H ;转换 (STS=0) 完了吗?JNZ READ_STS ;否,则循环等待;转换完成,启动读操作MOV AL ,01H OUT PORT_C ,AL ;使 CS=0,CE=0, R/C=1 NOP MOV AL ,05H ;使 CE=1,CS=0, R/C=1 OUT PORT_C ,AL ;读取数据,存入BX 中IN AL ,PORT_A ;读入高 4 位数据AND AL ,0FH MOV BH ,AL ;存入 BH IN AL ,PORT_B ;读入低 8 位MOV BL ,AL ;存入 BL MOV DI ,BX ;存入缓冲区INC DI INC DI 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 16 页 - - - - - - - - - ;结束读操作MOV AL ,03H ;使 CE=0,CS=1 OUT PORT_C ,AL ;结束读操作CALL DELAY_10MS ;延时 10 个毫秒LOOP AD_CONT 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 16 页 - - - - - - - - -