MOV A,#10100000B
CALL !SENDCOM ;;發(fā)送寫命令
BC $WNOACKX ;;沒應(yīng)答則錯(cuò)誤返回
NOP
CLR1 P4.2
CLR1 PM4.3 ;; 設(shè)置P4.3為輸出狀態(tài)
MOV A,D ;;D中存放所寫單元高地址
CALL !SENDCOM ;;發(fā)送所寫單元高地址
BC $WNOACKX ;;;沒應(yīng)答則錯(cuò)誤返回
CLR1 PM4.3 ;; 設(shè)置P4.3為輸出狀態(tài)
MOV A,E ;;;;E中存放所寫單元低地址
CALL !SENDCOM ;;發(fā)送所寫單元低地址
BC $WNOACKX ;;沒應(yīng)答則錯(cuò)誤返回
CLR1 PM4.3 ;; 設(shè)置P4.3為輸出狀態(tài)
MOV A,[HL] ;;[HL] 中存放所寫數(shù)據(jù)
CALL !A24SENDC ;;發(fā)送所寫數(shù)據(jù)
CLR1 CY
SET1 P4.1 ;;寫保護(hù)
WNOACKX:
SET1 CY
RET
SENDSTART: 發(fā)送起始位子程序
SET1 P4.2
SET1 P4.3 ;;發(fā)起始位
NOP
NOP
CLR1 P4.3
CLR1 4.2
RET
SENDCOM: 發(fā)送命令子程序
CALL !A24SENDC
CLR1 P4.2
SET1 PM4.3 ;;設(shè)置P4.3為輸入狀態(tài)
NOP
NOP
NOP
SET1 4.2
BT P4.3,$DCOM1 ;測試應(yīng)答信號(hào),有應(yīng)答CY=1,否則CY=0
CLR1 CY
RET ;BR RNOACK
DCOM1:
SET1 CY
RET
A24SENDC: 發(fā)送數(shù)據(jù)子程序
CLR1 CY
MOV B,#08H ;;發(fā)送8位
SENDREP:
CLR1 P4.2
NOP
CLR1 P4.3
ROLC A,1 ;;左移一位
BNC $SENDPD
SET1 P4.3
SENDPD:
NOP
SET1 P4.2
NOP
DBNZ B,$SENDREP ;8位發(fā)送完返回
RET
讀子程序:
READ:
CLR1 PM4.3 ;;;; 設(shè)置P4.3為輸出狀態(tài)
CALL !SENDSTART ;發(fā)送起始位
MOV A,#10100000B
CALL !SENDCOM ;; ;發(fā)送讀命令
BC $RNOACK ;; 沒應(yīng)答則錯(cuò)誤返回
CLR1 P4.2
CLR1 PM4.3 ;; 設(shè)置P4.3為輸出狀態(tài)
MOV A,D ;D中存放所讀單元高地址
CALL !SENDCOM ;;發(fā)送所讀單元高地址
BC $RNOACK ; 沒應(yīng)答則錯(cuò)誤返回
CLR1 PM4.3 ;;設(shè)置P4.3為輸出狀態(tài)
MOV A,E ;;;E中存放所讀單元低地址
CALL !SENDCOM ;;發(fā)送所讀單元低地址
BC $RNOACK ;;沒應(yīng)答則錯(cuò)誤返回
CLR1 P4.2
CLR1 PM4.3 ;;設(shè)置P4.3為輸出狀態(tài)
SET1 P4.2
SET1 4.3
NOP
NOP
CLR1 P4.3
CLR1 P4.2
CALL !SENDSTART ;發(fā)送起始位
MOV A,#10100001B
CALL !SENDCOM ;;發(fā)送讀命令
BC $RNOACK
CLR1 P4.2
SET1 PM4.3
CALL !N24READB ;;讀數(shù)據(jù)
CLR1 SK256
CLR1 PM4.6
CALL !SENDSTOP ;;發(fā)送停止位
READRET:
CLR1 CY
RET
RNOACK:
SET1 CY
RET
N24READB:
MOV B,#08H
READREPX:
CLR1 P4.2
NOP
NOP
NOP
SET1 P4.2
NOP
NOP
NOP
CLR1 CY
BF P4.3,$READPD
SET1 CY
READPD:
ROLC A,1 ;;左移1位
NOP
NOP
NOP
DBNZ B,$READREPX ;;判斷是否接受8位
RET
SENDSTOP: 發(fā)送停止位
CLR1 P4.3
NOP
SET1 P4.2
NOP
SET1 P4.3
NOP
RET
四. 小結(jié):
FM24C256 是一種高性能的存貯器,性能指標(biāo)遠(yuǎn)遠(yuǎn)大于EEPROM。在電子式電能表應(yīng)用中,數(shù)據(jù)擦寫次數(shù)比較頻繁,而且在掉電存貯時(shí)數(shù)據(jù)量大、時(shí)間短,怎樣安全可靠快速的保存數(shù)據(jù)一個(gè)關(guān)鍵的技術(shù)。所以,FM24C256的優(yōu)良特性非常適合儀表中使用,如電能表、水表、煤氣表、暖氣表、計(jì)程車表、醫(yī)療儀表等應(yīng)用廣泛。它的封裝形式有SOIC和DIP。





