
3. 應(yīng)用實(shí)例
在我們開發(fā)的智能流量積算儀中,需要每秒記錄一次累積流量,并且該累積流量在設(shè)備停用或掉電時(shí)要被保存,以便重新運(yùn)行時(shí)繼續(xù)對(duì)累積流量進(jìn)行累積。在該積算儀中采用了一片X24C45來存儲(chǔ)累積流量,很好的滿足了系統(tǒng)的要求。X24C45與系統(tǒng)中的8051微處理器的接口如圖3所示。DO和DI口被接到微處理器的同一個(gè)I/O口P1.7上,從而節(jié)省一個(gè)I/O口。
微處理器以字節(jié)為單位,讀寫X24C45的程序如下:
SK BIT P1.5;SK接在P1.5口
CE BIT P1.6;CE接在P1.6口
DIO BIT P1.7 ;DI與DO接在P1.7口
WRDS EQU 80H ;各個(gè)指令字
STO EQU 81H
ENAS EQU 82H
WRITE EQU 83H
WREN EQU 84H
RCL EQU 85H
READ EQU 86H
DATAHI EQU R0 ;數(shù)據(jù)的高位寄存器
DATALO EQU R1 ;數(shù)據(jù)的低位寄存器
ADDR EQU R2 ;地址寄存器
COUNT EQU R3 ;計(jì)數(shù)器
INST EQU R4 ;命令寄存器
ORG 0000H ;程序復(fù)位地址
LJMP BEGIN
ORG 0100H ;程序起始地址
BEGIN MOV SP,#60H ;初始化堆棧指針
CLR CE ;復(fù)位控制信號(hào)
CLR SK
CLR DIO
MOV A,#RCL ;進(jìn)行一次調(diào)出操作以便設(shè)置“先前調(diào)用”鎖存器
MOV INST,A
SETB CE
LCALL OUTBYT
CLR CE
MOV A,#WREN ;設(shè)置“寫允許”鎖存器
MOV INST,A
SETB CE
LCALL OUTBYT
CLR CE
MOV A,#05H ;讀地址5中的內(nèi)容,并保在寄存器DATALO與DATAHI中
MOV ADDR,A
LCALL RDWRD
MOV A,#09H ;將前面地址5中讀出的內(nèi)容寫入地址9中
MOV ADDR,A
LCALL WDWRD
MOV A,#STO 。贿M(jìn)行一次存儲(chǔ)操作
MOV INST,A
SETB CE
LCALL OUTBYT
CLR CE
DONE: LJMP DONE ;循環(huán)直到復(fù)位
;將寄存器DATALO與DATAHI中的內(nèi)容寫入X24C45,地址由寄存器ADDR指定。
WRWRD SET CE。粚⒓拇嫫鱀ATALO與DATAHI中的內(nèi)容寫入寄存器ADDR指定的地址中
MOV A,ADDR
RL A ;將地址加入指令中
RL A
RL A
ORL A,#WRITE
MOV INST,A
LCALL OUTBYT ;輸出寫指令
MOV A,DATAHI
MOV INST,A
LCALL OUTBYT ;輸出數(shù)據(jù)的高字節(jié)
MOV A,DATALO
MOV INST,A
LCALL OUTBYT ;輸出數(shù)據(jù)的高字節(jié)
CLR CE
RET
;讀由寄存器ADDR指定的地址中的內(nèi)容,并存入寄存器DATALO與DATAHI中。
RDWRD: SET CE ;讀寄存器ADDR指定的地址中內(nèi)容
MOV A,ADDR
RL A ;將地址編入指令中
RL A
RL A
ORL A,#READ
MOV INST,A
LCALL SEND7 ;送出7位指令字
SETB DIO
LCALL CLOCK ;設(shè)置時(shí)鐘為讀數(shù)據(jù)作準(zhǔn)備
MOV COUNT,#10H;讀進(jìn)16位數(shù)據(jù)
BIXT: MOV C,DIO
NO1: MOV A,DATALO ;將數(shù)據(jù)移進(jìn)寄存器DATALO與DATAHI中RLC A
MOV DATALO,A
MOV A,DATAHI
RLC A
MOV DATAHI,A
LCALL CLOCK ;發(fā)出時(shí)鐘脈沖
DJNZ COUNT,BITX;讀數(shù)據(jù)循環(huán)
CLR CE
RET
;將寄存器INST中的內(nèi)容傳送到X24C45的輸入口。
SEND 7 MOV COUNT,#07H;移出7位讀命令字
SJMP LOOP0
OUTBYT: MOV COUNT,#08H;移出8位命令字
LOOP0: MOV A,INST ;為將數(shù)據(jù)輸出到DI作準(zhǔn)備
RCL A
MOV INST,A
MOV DIO,C
LCALL CLOCK ;發(fā)出時(shí)鐘脈沖
DJNZ COUNT,LOOP0;循環(huán)
RET
;產(chǎn)生時(shí)鐘脈沖
CLOCK: SET SK
CLR SK
END





