本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
;很着急解决24c02读写问题,敬请高手赐教
;一直用的选用的是89C52 晶振12M 原来是直插24c02现在是贴片24c02 ,片选和数据
;脚也接了4.7k上拉电阻,问题是:这个程序我早在06年就在用了,效果一直很好,最
;近出现奇数地址数据读不出,写不进,偶数读写有时也很慢,很郁闷,原来用的是直插的,
;现在用的是贴片24c02但现在用直插的测试效果也不如原来好用了,据我观察发现每次
;是写完地址在写数据时DAT2402电位始终不能为低,卡在那里等待,也就是说数据写不进
;DAT2402就没有写结束信号输出,请高手赐教原因何在,再次表示万分感谢!!!
CSCK2402 EQU P0.2 ;24C02选通线引脚6
DAT2402 EQU P0.3 ;24C02数据线引脚5
ORG 0000H
GHE1: NOP
NOP
LCALL SAVE
NOP
NOP
LCALL DU_DATA ;调读数据
JMP GHE1
;**********************************读数据
DU_DATA:
MOV 3AH,#07H
LCALL D_USHU
MOV 20H,A ;是否是第一次写1302数据状态数据暂存20H
MOV 3AH,#01H
LCALL D_USHU ;读取器件数据
MOV 27H,A ;温度数据暂存27H
MOV 3AH,#02H
LCALL D_USHU
MOV 28H,A ;定时开机时钟数据暂存28H
MOV 3AH,#03H
LCALL D_USHU
MOV 29H,A ;定时开机分钟数据暂存29H
MOV 3AH,#04H
LCALL D_USHU
MOV 3CH,A ;定时关机时钟数据暂存3CH
MOV 3AH,#05H
LCALL D_USHU
MOV 3FH,A ;定时关机分钟数据暂存3FH
MOV 3AH,#06H
LCALL D_USHU
MOV 37H,A ;定时开关机状态数据暂存37H
RET
SAVE: ;保存设置数据
; LCALL SET1302 ;写时间
MOV 4DH,#01H ;写器件地址
MOV 4EH,#22H ;装入开机设置参数
LCALL XIE
MOV 4DH,#02H ;写器件地址
MOV 4EH,#13H ;装入设置参数
LCALL XIE
MOV 4DH,#03H ;写器件地址
MOV 4EH,#15H ;装入设置参数
LCALL XIE
MOV 4DH,#04H ;写器件地址
MOV 4EH,#50H ;装入设置参数
LCALL XIE
MOV 4DH,#05H ;写器件地址
MOV 4EH,#06H ;装入设置参数
LCALL XIE
MOV 4DH,#06H ;写器件地址
MOV 4EH,#07H ;装入设置参数
LCALL XIE
MOV 4DH,#07H ;写器件地址
MOV 4EH,#00H ;装入设置参数
LCALL XIE
MOV 4DH,#08H ;写器件地址
MOV 4EH,#00H ;装入设置参数
LCALL XIE
MOV 4DH,#09H ;写器件地址
MOV 4EH,#00H ;装入设置参数
LCALL XIE
RET
;***************24C02读写程序******************
;****************************************************************
XIE: LCALL DELAY1 ;写
CLR DAT2402
MOV A,#10100000B
LCALL SUBS
MOV A,4DH ;把待写入的地址从暂存地址移入A
LCALL SUBS
MOV A,4EH ;设置数据从暂存地址移入A
LCALL SUBS
CLR DAT2402
LCALL DELAY50
SETB CSCK2402
LCALL DELAY50
SETB DAT2402
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SUBS: MOV R0,#08H
LOOPU: CLR CSCK2402
RLC A
MOV DAT2402,C
LCALL DELAY50
SETB CSCK2402
LCALL DELAY50
DJNZ R0,LOOPU
CLR CSCK2402
LCALL DELAY50
SETB CSCK2402
REP: MOV C,DAT2402
JC REP
CLR CSCK2402
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;24C02读程序
D_USHU: SETB DAT2402
SETB CSCK2402
NOP
NOP
NOP
CLR DAT2402
MOV A,#10100000B
LCALL SUBS
MOV A,3AH
LCALL SUBS
SETB DAT2402
SETB CSCK2402
CLR DAT2402
MOV A,#10100001B
LCALL SUBS
LCALL SUBR
CLR DAT2402
LCALL DELAY50
SETB CSCK2402
LCALL DELAY50
SETB DAT2402
LCALL DELAY50
RET
SUBR: MOV R0,#08H
L_OOP2: SETB CSCK2402
NOP
NOP
MOV C,DAT2402
RLC A
CLR CSCK2402
LCALL DELAY50
DJNZ R0,L_OOP2
RET
DELAY50: MOV R5,#0D0H ;01H
DL200: MOV R6,#0E0H ;E0H
DJNZ R6,$
DJNZ R5,DL200
RET
;**************************************************
DELAY1: MOV R1,#10H;03
DEL11: MOV R2,#75H;75
DEL12: MOV R3,#0DH;0D0
DEL13: DJNZ R3,DEL13
DJNZ R2,DEL12
DJNZ R1,DEL11
RET
END |