技术支持
应用方案
方案需求
Application Solutions
;FM30c256 test program useing 8052
;data:2003/04/10
CHECDAT EQU 011H;
ADSAVE EQU 012H
ADSAVER EQU 013H
ADHIGH EQU 014H
ADLOW EQU 015H
FMDATA EQU 017H
SECOND EQU 30H
MINUTE EQU 31H
HOUR EQU 32H
DATE EQU 33H
DAY EQU 34H
MONTH EQU 35H
YEAR EQU 36H
WRONG_F BIT 00H
SDATA BIT P1.4
SCLK BIT P1.6
ORG 0000H
LJMP STAR
ORG 0003H
LJMP KINT
ORG 000BH
LJMP ITXY
ORG 100H
STAR: MOV SP,#0C2H
CALL CLRARE ;清楚单片机内部RAM
SETB SDATA
SETB SCLK
SETB P1.0
CALL FMREST
MAIN: CALL SETCLK
MAIN1: ;CALL MEMORY
CALL RADCLK
JMP MAIN1
RADCLK: MOV A,#0D0H ;Slave Address – RTC Write
MOV ADSAVE,A
MOV A,#0D1H ;Slave Address – RTC Read
MOV ADSAVER,A
MOV A,#00H
MOV ADLOW,A
MOV A,#01H
MOV FMDATA,A
CALL WRITE ;
MOV R0,#SECOND
MOV R1,#06H
MOV A,#02H
MOV ADLOW,A
RADCLK1:CALL READ
MOV A,FMDATA
MOV @R0,A
INC R0
INC ADLOW
DJNZ R1,RADCLK1
MOV A,#00H
MOV ADLOW,A
MOV A,#00H
MOV FMDATA,A
CALL WRITE
RET
;2003 year 4 10 4 12 00 00
SETCLK: CALL TIMESET
MOV A,#0D0H
MOV ADSAVE,A
MOV A,#0D1H
MOV ADSAVER,A
MOV A,#00H
MOV ADLOW,A
MOV A,#02H
MOV FMDATA,A
CALL WRITE
MOV A,#00H
MOV ADHIGH,A
MOV A,#02H
MOV ADLOW,A
MOV R0,#SECOND
MOV R1,#06H
SETCLK1:MOV A,@R0
MOV FMDATA,A
CALL WRITE
INC ADLOW
INC R0
DJNZ R1,SETCLK1
MOV A,#00H
MOV ADHIGH,A
MOV A,#00H
MOV ADLOW,A
MOV A,#00H
MOV FMDATA,A
CALL WRITE
MOV A,#00H
MOV ADHIGH,A
MOV A,#01H
MOV ADLOW,A
MOV A,#00H
MOV FMDATA,A
CALL WRITE
RET
;**********************************
TIMESET: ;Set clock
MOV A,#00H
MOV SECOND,A
MOV A,#00H
MOV MINUTE,A
MOV A,#12H
MOV HOUR,A
MOV A,#10H
MOV DATE,A
MOV A,#04H
MOV DAY,A
MOV A,#04H
MOV MONTH,A
MOV A,#03H
MOV YEAR,A
RET
;Memory Check
MEMORY: MOV A,#0A0H
MOV ADSAVE,A
MOV A,#0A1H
MOV ADSAVER,A
MOV A,#00H
MOV ADHIGH,A
MOV A,#00H
MOV ADLOW,A
MOV A,#055H
MOV FMDATA,A
CALL SWRITE
CALL SREAD
JB WRONG_F,RONG
CLR P1.0
RONG: RET
SREAD: MOV 00H,#00H
MOV 01H,#80H
CALL SSTAR
MOV A,ADSAVE;;;SAVE 地址写入
MOV CHECDAT,A
CALL RLMOVE
MOV A,ADHIGH;HIGH地址写入
MOV CHECDAT,A
CALL RLMOVE
MOV A,ADLOW ;LOW地址写入
MOV CHECDAT,A
CALL RLMOVE
CALL SSTAR
MOV A,ADSAVER
MOV CHECDAT,A
CALL RLMOVE
SREAD1: MOV A,#00H
MOV CHECDAT,A
CALL RRMOVE
MOV A,CHECDAT
CJNE A,FMDATA,IICRON
CLR SDATA
SETB SCLK
CLR SCLK
SETB SDATA
DJNZ 00H,SREAD1
DJNZ 01H,SREAD1
JMP SREAD2
IICRON: SETB WRONG_F
SREAD2: SETB SCLK
SETB SDATA
JNB SDATA,SREAD3
RET
SREAD3: CLR SCLK
JMP SREAD2
READ: CALL SSTAR
MOV A,ADSAVE;;;SAVE 地址写入
MOV CHECDAT,A
CALL RLMOVE
;MOV A,ADHIGH;HIGH地址写入
;MOV CHECDAT,A
;CALL RLMOVE
MOV A,ADLOW ;LOW地址写入
MOV CHECDAT,A
CALL RLMOVE
CALL SSTAR
MOV A,ADSAVER
MOV CHECDAT,A
CALL RLMOVE
READ1: MOV A,#00H
MOV CHECDAT,A
CALL RRMOVE
MOV A,CHECDAT
MOV FMDATA,A
CLR SDATA
SETB SCLK
CLR SCLK
SETB SDATA
READ2: SETB SCLK
SETB SDATA
JNB SDATA,READ3
RET
READ3: CLR SCLK
JMP READ2
SWRITE: CALL SSTAR
MOV A,ADSAVE;;;SAVE 地址写入
MOV CHECDAT,A
CALL RLMOVE
MOV A,ADHIGH;HIGH地址写入
MOV CHECDAT,A
CALL RLMOVE
MOV A,ADLOW;LOW地址写入
MOV CHECDAT,A
CALL RLMOVE
MOV R1,#00H
MOV R2,#80H
SWRITE1:MOV A,FMDATA
MOV CHECDAT,A
CALL RLMOVE
DJNZ R1,SWRITE1
DJNZ R2,SWRITE1
CALL SSTOP
RET
WRITE: CALL SSTAR
MOV A,ADSAVE;;;SAVE 地址写入
MOV CHECDAT,A
CALL RLMOVE
;MOV A,ADHIGH;HIGH地址写入
;MOV CHECDAT,A
;CALL RLMOVE
MOV A,ADLOW;LOW地址写入
MOV CHECDAT,A
CALL RLMOVE
MOV A,FMDATA
MOV CHECDAT,A
CALL RLMOVE
CALL SSTOP
RET
RLMOVE: PUSH 00H
PUSH 01H
MOV R1,#08H
CLR C
RLMOVE1:MOV A,CHECDAT
RLC A
MOV CHECDAT,A
JC RLMOVE2
CLR SDATA
JMP RLMOVE3
RLMOVE2:SETB SDATA
RLMOVE3:SETB SCLK
CLR SCLK
DJNZ R1,RLMOVE1
SETB SDATA
SETB SCLK
JB SDATA,$
CLR SCLK
POP 01H
POP 00H
RET
RRMOVE: PUSH 00H
PUSH 01H
MOV R1,#08H
RRMOVE1:MOV A,CHECDAT
CLR SCLK
JB SDATA,RRMOVE2
CLR C
JMP RRMOVE3
RRMOVE2:SETB C
RRMOVE3:RLC A
MOV CHECDAT,A
SETB SCLK
DJNZ R1,RRMOVE1
CLR SCLK
SETB SDATA
POP 01H
POP 00H
RET
YSCX: PUSH ACC
PUSH 00H
PUSH 01H
MOV 00H,#00H
MOV 01H,#00H
YSCX1: DJNZ 01H,$
DJNZ 00H,YSCX1
POP 01H
POP 00H
POP ACC
RET
SSTAR: SETB SCLK
CLR SDATA
CLR SCLK
RET
SSTOP: SETB SCLK
SETB SDATA
RET
;*********************************************************
CLRARE: MOV 01H,#0C0H
MOV 00H,#02H
CLRARE1:MOV A,#000H
MOV @R0,A
INC R0
DJNZ R1,CLRARE1
RET
FMREST: CALL SSTAR ;Set Start Condition
MOV A,ADSAVER ;Save Address Transfer for read
MOV CHECDAT,A
CALL RLMOVE
MOV A,#00H
MOV CHECDAT,A
CALL RRMOVE ; Read the data from FRAM
CLR SDATA
CALL SSTOP
RET
KINT: RETI
ITXY: RETI
END
销售服务专线:0755-82127888
技术支持专线:0755-82127938
投诉专线:0755-82127989