2 DEI1016的工作原理 DEI1016的引脚功能及特点以前已有介绍,现仅对该器件的工作原理作以描述。 2.1 DEI1016的复位及初始化 电路上电后,首先在MR引脚施加200μs的低电平脉冲以使DEI1016复位,然后把控制字写到16位数据总线上,这样,在LDCW引脚施加低电平便可把控制字写入到控制字寄存器,尔后便可接收和发送数据。 2.2 DEI1016的数据发送过程 DEI1016的数据发送时序如图1所示。发送数据时,首先应查询TXR引脚是否为高电平,若是高电平,表明发送存储器已空;此时置ENTX引脚为低电平可停止发送数据,并把要发送的数据写到16位数据总线上。之后,若要发送数据字1,则置LD1为低,LD2为高;若发送数据字2,则置LD1为高,LD2为低?此时再查询TXR引脚是否为低电平,若为低电平,表明发送数据已装载到存储器中,此时再置ENTX引脚为高电平即可发送数据。DEI1016的发送存储器最多可装载8个32位字长的数据,DEI1016采用的是先进先出的发送顺序。 2.3 DEI1016的数据接收过程 DEI1016的数据接收时序如图2所示。当接收器1接收到数据后,系统会置DR1为低电平;而当接收器2接收到数据后,系统将置DR2为低电平。欲使接收器1将接收数据的字1送至16位数据总线上,应先置SEL为低电平,再置OE1为低电平且置OE2为高。而后再置SEL为高电平,便可将字2送至16位数据总线。要使接收器2的数据送至16位数据总线上,则置OE2为低电平,OE1为高电平即可。
表1 74LS373功能表
输出控制OE | 使能G | 输入D | 输出Q |
L | H | H | H |
L | H | L | L |
L | L | X | Qo |
H | X | X | Z |
用U1接收数据,应将DR1、DR2及TXR经与门U13接至U1的INT0,在INT0口产生中断后,U1便执行读操作,并通过RD和Y5控制U14、U15以读入DR1、DR2及TXR的状态。U2接收到数据或发送数据完毕后,即向U1的INT0口申请中断,并在中断程序中判断DR1、DR2及TXR的状态。TXR为低表明发送完毕,而DR1或DR2为低则表明已收到数据。此时可置P1.2(SEL)为低电平,同时也置P1.0(接DEI1016的OE1)或P1.1 ?接DEI1016的OE2?为低电平,以使字1的数据出现在数据总线上,而使P1.0、P1.1经U11异或后输出以使U5、U6的G端为高电平,从而把数据锁入U5、U6。由于RD分别与Y7、Y6相或后的输出是与U5、U6的OE门相连接的,因此,U1 执行读操作时,应先后打开U5、U6的OE门来把数据读入。其接收程序如下:(以接收器1为例)。 DEI1016的两路接收可能产生同时接收的现象。即在上述两路共用一个中断源时,如果某一路申请中断已进入接收程序,那么另一路同时接收的数据就可能被屏蔽。解决方法是:进入中断程序后,在接收数据过程中再查询另一路DR的状态。当然,如果每路单独使用一个中断源,效果将会更好。 clr p1.2 ;置DEI1016的SEL=0,读字1 clr p1.0 ;置DEI1016的/OE1=0 setb p1.1 ;置DEI1016的/OE2=1 nop mov dptr,#e000h movx a,@dptr ;把字1的低8位读入 mov 10h,a mov dptr,#c000h movx a,@dptr ;把字1的高8位读入 mov 11h,a setb p1.2 ;置DEI1016的SEL=1,读字2 nop mov dptr,#e000h movx a,@dptr ;把字2的低8位读入 mov 12h,a mov dptr,#c000h movx a,@dptr ;把字2的高8位读入 mov 13h,a setb p1.0 ;置DEI1016的/OE1=1 setb p1.1 ;置DEI1016的/OE2=1 setb p1.2 ;置DEI1016的SEL=1
图3
4 结束语 实际上,上述AT89C52与DEI1016的接口电路经改进也可以应用到其它16位数据总线接口的电路中,而如果用ISP器件替代锁存器及其门电路,还可大大减小电路板的面积。