对C口作输入或输出操作时,高4位、低4位,互不影响;
例如,设定C口高4位输出,低4位输入,假设C口地址为82H,
若执行MOV DX,82H //IN AL,DX 两条指令,从C口读入的数值仅对AL的低4位有影响;
若执行OUT DX,AL 指令,从AL的输出的数值仅对C口高4位有影响。
1、首先用串口模块将一个从PC机发来的串行数据转换成并行数据存放到数据输出选择模块的DOUT口,至于这个八位数据是输入到控制寄存器还是从PA/PB/PC口输出,就由另一个输入输出逻辑判断模块来控制。
2、逻辑判断模块根据A0-A1,WR,RD,还有控制字来判断三个端口处于什么工作方式,并将数据发送(接收)至A口、B口、C口的缓冲区。
3、通过PA输出模块、PA输入模块、PB输出模块、PB输入模块、PC输出模块将缓存区中的数据根据不同的工作方式进行输入输出。
8个模块的作用:
1、串口通信模块(Rs232RefComp):由于8255端口众多,而fpga板载I/O口不够用,所以采用串口输入的方式来给8255提供所需的数据(D0-D7)。
2、数据输出选择模块(dout_mux):8255A有3个8位数据端口,即端口A、端口B和端口C,通过数据输出选择模块来最终判断选择哪个端口输出。
3、数据输入输出逻辑判断模块(cntl_log):8255A的三个端口,还有一个控制寄存器,通过数据输出输入逻辑判断模块来判断8255处于何种工作方式。
4、PA口输出模块(portaout):用来控制PA的缓存区的八位数据输出到PA口。
5、PA口输入模块(portain):用来控制PA口读到的数据放到PA的缓存区。
6、PB口输出模块(portbout):用来控制PB的缓存区的八位数据输出到PB口。
7、PB口输入模块(portbin):用来控制PB口读到的数据放到PB的缓存区。
8、PC口输出模块(portcout):用来控制PC口的位输出。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)