err=getPCImembase1(); err=getPCImembase0();
membase0=membase0+membase1<<16; //左移16位,将高位地址变换成双字中的高位字
printf(\ err=getPCIIRQ();
printf(\
//////////////////////////////////////////////////////////////////////////// }
21
实验六 简单I/O端口实验
1. 掌握三态门,锁存器构成简单I/O端口的原理及应用 2. 完成流水灯及其控制的编程实验
一、 实验目的和内容
二、实验电路及说明
实验电路图1,2,3所示,74ALS273锁存器的输出控制LED发光管的亮暗(1:亮0:暗)74ALS273的CLK被一些地址线所控制,它的地址为60H(16进制)
ADD7, ADD6, ADD5, ADD4, ADD3, ADD2, ADD1, ADD0 0 1 1 0 0 0 0 0 只有这时7430与非门才输出低电平(八段LED是阴极型)
在DOS下,它的真实地址为PCI接口板的I/O地址加上60H为真实地址。如PCI的I/O起始地址0为E000H , I/O起始地址1为E400H。 74ALS273的地址为E460H。
注意:PCI板卡分配了2块I/O空间,I/O空间0是分配给PCI板卡内部寄存器使用的,即9052专用,空间大小128BYTE。I/O空间1是分配给PCI板卡用户电路使用的,其大小为256BYTE。
流水灯原理如下:
K1、K2是八位拔动开关(位于区域A)的1,2位。 K1=K2=H 发光管从上到下移位 K1=L,K2=H 发光管从下到上移位 KI=H,K2=L 发光管全部闪烁 K1=K2=L-退出
注:ON方向为L,OFF方向为H
K1、K2为主板上J41数码拔动开关的1、2位。
22
图1
图1
图2
图2
23
图3
三、程序方框图
闪 烁 从下-上 退 出 从上-下 K1H,K2L K1L,K2H K1L,K2L K1H,K2H 初始化计数器,一个为0,另一个为8 提示 开始 读K1、K2电平
24
闪烁程序框图
入口 N 计数器==0
00->IO地址 0FFH->IOADD 计数器=0 计数器加1 延时
返回 从上->下
计数器减1
0FEH右移一位 赋予TEMP TEMP取反 TEMP输出到IO地址 延时 计数器==0 计数器=8
返回 25