问一道关于《微机原理与接口技术的题》的题,请高手帮忙解答下, 一个8086系统中,采用8255A芯片,令8255
一个8086系统中,采用8255A芯片,令8255端口A接8个发光二极管LED,8255端口B接8个开关,要求用开关控制相应的发光二极管LED的亮或灭。开关断开,相应的L...
一个8086系统中,采用8255A芯片,令8255端口A接8个发光二极管LED,8255端口B接8个开关,要求用开关控制相应的发光二极管LED的亮或灭。开关断开,相应的LED点亮,开关合上,LED熄灭。已知8255A端口地址为F0H,F2H,F4H,F6H。
请画出该系统的硬件连线图并写出相应的应用程序 展开
请画出该系统的硬件连线图并写出相应的应用程序 展开
3个回答
展开全部
#include<stdio.h>
#include<conio.h>
#include"ApiEx.h"
#pragma comment(lib,"ApiEx.lib")
void main()
{
BYTE data;
printf("Press any key to begin!\n\n");
getch();
printf("Press any key to exit!\n");
if(!Startup())
{
printf("Error!\n");
return;
}
PortWriteByte(0xF6,0x031); //
PortWriteByte(0xF0,0x10);//
while(!kbhit())
{
PortReadByte(0xF0,&data);
printf("%d\n",data);
}
Cleanup();
}
这个是我用c写的,程序查询方式。接线就是cs接地址译码,A0-A7接LED,B0-B7接开关。
#include<conio.h>
#include"ApiEx.h"
#pragma comment(lib,"ApiEx.lib")
void main()
{
BYTE data;
printf("Press any key to begin!\n\n");
getch();
printf("Press any key to exit!\n");
if(!Startup())
{
printf("Error!\n");
return;
}
PortWriteByte(0xF6,0x031); //
PortWriteByte(0xF0,0x10);//
while(!kbhit())
{
PortReadByte(0xF0,&data);
printf("%d\n",data);
}
Cleanup();
}
这个是我用c写的,程序查询方式。接线就是cs接地址译码,A0-A7接LED,B0-B7接开关。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
代码部分
PORT_A EQU F0H
PORT_B EQU F2H
PORT_C EQU F4H
PORT_CT EQU F6H
STACK SEGMENT PARA 'STACK'
SA DW 100 DUP(?)
TOP EQU LENGTH SA
STACK ENDS
CODE SEGMENT PARA 'CODE'
ASSUME CS:CODE,SS:STACK
MAIN PROC FAR
MOV AX,STACK
MOV SS,STACK
MOV AH,10010000B;A口接键盘,B口接LED,选择共阳极接法
OUT PORT_CT,AH
CHECK_PRESS: IN AH,PORT_A;
CMP AH,0FFH
JE CHECK_PRESS
MOV CX,16EAH
DELAY: LOOP DELAY
IN AH,PORT_A
CMP AH,0FFH
JE CHECK_PRESS
OUT_PORTB: OUT PORT_B,AH
IN AH,PORT_A
CMP AH,0FFH
JNE OUT_PORTB
JMP CHECK_PRESS
MOV AH,4CH
INT 21H
MAIN ENDP
CODE ENDS
END
关于接线的问题,8255的A1A2两个引脚应该和8086的A1A2(空出A0)地址线相连接,CS引脚和地址译码电路相连接,这个数电内容,A口和键盘的连接选择是阳极连接,按键按下接地的这种方式,B口的共阳极连接方式,你要是想用共阴极,B口每个中间加上反向就好了,程序要改,不过不难。其他的引脚对应接就可以了
PORT_A EQU F0H
PORT_B EQU F2H
PORT_C EQU F4H
PORT_CT EQU F6H
STACK SEGMENT PARA 'STACK'
SA DW 100 DUP(?)
TOP EQU LENGTH SA
STACK ENDS
CODE SEGMENT PARA 'CODE'
ASSUME CS:CODE,SS:STACK
MAIN PROC FAR
MOV AX,STACK
MOV SS,STACK
MOV AH,10010000B;A口接键盘,B口接LED,选择共阳极接法
OUT PORT_CT,AH
CHECK_PRESS: IN AH,PORT_A;
CMP AH,0FFH
JE CHECK_PRESS
MOV CX,16EAH
DELAY: LOOP DELAY
IN AH,PORT_A
CMP AH,0FFH
JE CHECK_PRESS
OUT_PORTB: OUT PORT_B,AH
IN AH,PORT_A
CMP AH,0FFH
JNE OUT_PORTB
JMP CHECK_PRESS
MOV AH,4CH
INT 21H
MAIN ENDP
CODE ENDS
END
关于接线的问题,8255的A1A2两个引脚应该和8086的A1A2(空出A0)地址线相连接,CS引脚和地址译码电路相连接,这个数电内容,A口和键盘的连接选择是阳极连接,按键按下接地的这种方式,B口的共阳极连接方式,你要是想用共阴极,B口每个中间加上反向就好了,程序要改,不过不难。其他的引脚对应接就可以了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询