DEI1016功能和原理簡介及其與單片機的接口設計
本文引用地址:http://www.104case.com/article/171365.htm
mov a,#d2h ;取字2的高8位
movx @dptr,a ;把字2的高8位鎖入U3
clr p3.4 ;打開U3、U4的輸出
nop
clr p1.4 ;字2數據裝入DEI1016
nop
setb p3.4
setb p1.4
用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
4 結束語
實際上,上述AT89C52與DEI1016的接口電路經改進也可以應用到其它16位數據總線接口的電路中,而如果用ISP器件替代鎖存器及其門電路,還可大大減小電路板的面積。
評論