LP: IN AL,9CH
AND AL,01H ;判断PC0=1? JZ LP ;PC0=0,继续查询
IN AL,9AH ;PC0=1,纸带机准备就绪 MOV CH,AL ;输入到CH MOV AL,09H
OUT 9EH,AL ;暂停纸带读入机 RET
RDST ENDP CODE ENDS
END MAIN
5、8086CPU通过8255同开关K与7段LED显示器的接口如图所示。开关设置的二进制信息由8255A的B口输入,经程序转换为对应的七段LED的段选码(字形码)后,通过A口输出。由七段LED显示二进制状态值,试编写其控制程序。
D0~D7A0A1CSPA0PA1PA2PA3PA4PA5PA6PA7+5VRDWRRESETRDWRRESETPB3PB2PB1PB0K3K2K1K0AD0~AD7ALEAD0~AD15A16~A10锁存器1A1A2A3·····A15·&8255AA0808611111111abcdefgDp+5V设8255A的
端口地址为:
端口A:0FFF8H 端口B:0FFFAH 端口C:0FFFCH 控制口:0FFFEH
为增加8255A的负载能力,所以A口经驱动器同七段LED显示器相连。由图可见,8255A的地址线A1、A0分别同地址锁存器输出的A2、A1相连,故每个端口可以有二个端口地址,如A口为0FFF8H和0FFF9,可以为未参加译码的地址线A0为0的地址,所以通常使用0FFF8H地址。
假设B口用于输入,8255A工作方式控制字为82H。 程序如下:
ORG 2000H ;从2000H开始存放数据 MOV AL , 82H ;置工作方式控制字 MOV DX , 0FFFEH OUT DX , AL
RDPORTB:MOV DL , 0FAH ;读入B口信息 IN AL , DX
AND AL , 0FH ;屏蔽AL高4位,B口读入的信息 只低4位有效
MOV BX , OFFSET SSEGCODE ;地址指针BX指向段选码表守地址 XLAT ;[BX+AL] AL
MOV DL , 0F8H ; 段选码 A口,由七段LED显
示器显示 OUT DX , AL
MOV AX , 56CH ;延时,使读入的信息保持显示一段 时间 DELAY:DEC AX JNZ DELAY
JMP RDPORTB ;进入新一轮的显示操作 HLT
ORG 2500H ;从2500H开始为段选码表
如果要求LED显示器循环显示0到F十六个数字,每个数字显示10s,显示100遍。则控制程序为: ORG 2000H
MOV AL , 82H MOV DX , 0FFFEH OUT DX , AL MOV BX , 100
DISFLOP:LEA DI , SSEGCODE MOV CX , 16 LOP: MOV AL , [DI] MOV DL , 0F8H OUT DX , AL INC DI
CALL DELAY10s LOOP LOP DEC BX
JNZ DISFLOP HLT
ORG 2500H
SSEGCODE:DB 0C0H , 0F9H , 0A4H , 0B0H , 99H , 92H , 82H ,0F8H , 80H , DB 98H , 88H , 83H , 0C6H , 0A1H , 86H , 8EH
6、ADC0809通过8255A同8086CPU连接如图所示。要求从模拟通道IN0开始转换,连续采样24个数据。然后采样下一个通道,同样采集24个数据,直至IN7。采样后的数据存放在数据段中2000H开始的数据区中。
其控制程序如下:
DATA1 SEGMENT ORG 2000H
AREA DB 200 DUP (?) .
. . DATA1 ENDS
STACK1 SEGMENT
DB 50 DUP(?) . . . STACK1 ENDS
CODE1 SEGMENT
ASSUME DS: DATA1 , SS: STACK1 , CS: CODE1 STACK: MOV AL , 92H MOV DX , 1C3H
OUT DX , AL MOV AX , DATA1 MOV DS , AX MOV SI , 2000H MOV BL , 8 MOV DX , 1C8H
LOP1: MOV CX , 18H LOP2: IN AL , DX PUSH DX
MOV DX , 1C11H
LOP3: IN AL , DX
TEST AL , 01H JZ POP3
MOV DX , 1C0H IN AL , DX MOV [SI] , AL INC SI POP DX LOOP LOP2 INC DX DEC BL JNZ LOP1 HLT 7、D/A转换器产生两个不同极性的方波信号,试进行软硬件设计
(1)如图所示,V1是单极性的方波,V2是双极性的方波,需两个DAC0832转换器,一个为单极性输出,另一个为双极性输出。
V15V0V2+1.2V0-2.0Vtt
(2)V1产生正跳变时,V2也产生正跳变,V1产生负跳变时,V2也产生负跳变,要求两个DAC0832的工作方式需采用双缓冲方式。
(3)需要三个地址,第一个地址作为第一片0832的片选信号,第二个地址为第二片0832的片选信号,第三个地址作为同时打开两个DAC0832的8位DAC寄存器的控制信号,该信号连接到两片0832的XFER端。
(4)第二片0832输出电压范围为-2.5-+2.5V,可题目要求产生方波的电压范围为-2.0到+1.2V,模拟电压所对应的数字量计算方法如下:
Dx=(Vx-V2)*(FFH/(V1-V2))
其中V1为上限范围电压,等于+2.5V;V2为下限范围电压,等于-2.5V;Vx为待输出电压植。1.2V对应的数字量等于BCH,-2.0V对应的数字量等于19H。
(5)在双缓冲方式时,需要执行两条输出指令。第一条输出指令打开DAC0832的输入寄存器,把来自CPU的8位数据送入寄存器锁存。第二条指令打开8位DAC寄存器。使输入的数据通过DAC寄存器送到D/A转换器中进行转换。但第二条输出指令中输出的数据无意义,此指令只为使XFER控制引脚有效,打开8位DAC寄存器,如图所示。 程序如下:
AA1: MOV AL , 00H ; 设定输出电压值
MOV DX , 04A0H ;设置第一片DAC0832地址
OUT DX , AL ;数据被锁存在8位输入寄存器 MOV AL , 19H ;输出电压-2.0V对应数字值 MOV DX , 04A2H ;设置第二片DAC0832地址 OUT DX , AL ;数据被锁存在8位输入寄存器 MOV DX , 04A4H ;设置两片DAC0832共同地址 OUT DX , AL ;启动两片DAC0832同时转换 MOV AL , 0FFH ;输出电压5V对应数字值 MOV DX , 04A0H ;设置第一片DAC0832地址 OUT DX , AL
MOV AL , 0BCH ;输出电压1.2V对应数字值 MOV DX , 04A2H ;设置第二片DAC0832地址 OUT DX , AL
MOV DX , 04A4H ;设置两片DAC0832共同地址 OUT DX , AL ;启动两片DAC0832同时转换 JMP AA1
ADC0832DI0~DI7ILE+5VRfb译IOUT1-码CSIOUT2+A1器XFERVREFVR1WR(-5V)1WR2ADC0832DI0~DI7ILE+5VRfbIOUT1-CSIOUT2+A2XFERVREFVR1WR(+2.5V)1WR2VOUT1VR2R2RR--++A3VOUT2D0~D7A0~A158086CPUIOW
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库微机原理补充习题(5)在线全文阅读。
相关推荐: