|
|
楼主 |
发表于 2013-4-16 11:05
|
显示全部楼层
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; ;;;
;;; 摇晃怀表源程序 ;;;
;;; 作者cccwwwggg2000 ;;;
;;; QQ:285342319 ;;;
;;; 请尊重作者劳动成果 ;;;
;;; 转载请保留作者信息,谢谢!;;;
;;; ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
BitCnt data 30h
ByteCnt data 31h
Command data 32h
RcvDat DATA 40H
XmtDat DATA 50H
IO_DATA bit P3.1
SCLK bit P3.0
RST bit P3.5
ORG 0000H
SJMP MAIN
MAIN: MOV R0,#0
MOV R1,#0
MOV R4,#10
MOV P3,#0FFH
MOV P1,#0FFH
MOV DPTR,#TAB
LCALL DEL
LCALL SJTZ;时间调整
S2:
MOV Command,#0BFh
MOV ByteCnt,#3
MOV R1,#RcvDat
LCALL RB
LCALL DIS
DJNZ R4,S2
MOV P1,#0FFH
MOV P3,#0FFH
ORL PCON,#2
SJTZ: JB P3.4,FH1
MOV Command,#8Eh
MOV ByteCnt,#1
MOV R0,#XmtDat
MOV XmtDat,#00h
LCALL SB
MOV Command,#0BEh
MOV ByteCnt,#9
MOV R0,#XmtDat ;数据地址覆给R0
MOV XmtDat,#00h ;秒单元内容
MOV XmtDat+1,#00h ;分单元内容
MOV XmtDat+2,#20h ;时单元内容
MOV XmtDat+3,#15h ;日期单元内容
MOV XmtDat+4,#02h ;月单元内容
MOV XmtDat+5,#03h ;星期单元内容
MOV XmtDat+6,#12H ;年单元内容
MOV XmtDat+7,#00H
MOV XmtDat+8,#0A7h
LCALL SB ;调用写入数据子程序
MOV Command,#8Eh
MOV ByteCnt,#1
MOV R0,#XmtDat
MOV XmtDat,#80h
LCALL SB
FH1: RET
DIS: JNB P3.7,$
JB P3.7,$
LCALL DEL
MOV R2,#3
MOV R0,#42H
SJMP S3
S4: LCALL XS1
S3: CLR A
XCHD A,@R0
XCH A,@R0
SWAP A
LCALL XS
MOV A,@R0
LCALL XS
DEC R0
DJNZ R2,S4
RET
XS1: MOV A,#0AH
XS: MOV R3,#5
MOV B,#5
MUL AB
MOV R5,A
FH3: MOV A,R5
MOVC A,@A+DPTR
MOV P1,A
INC R5
MOV 60H,#2
LCALL D1
DJNZ R3,FH3
MOV P1,#0FFH
RET
SB: CLR RST
NOP
CLR SCLK
NOP
SETB RST
NOP
MOV A,Command
MOV BitCnt,#08h
S_Byte0: RRC A
MOV IO_DATA,C
NOP
SETB SCLK
NOP
CLR SCLK
DJNZ BitCnt,S_Byte0
NOP
S_Byte1: MOV A,@R0
MOV BitCnt,#08h
S_Byte2: RRC A
MOV IO_DATA,C
NOP
SETB SCLK
NOP
NOP
NOP
NOP
CLR SCLK
DJNZ BitCnt,S_Byte2
INC R0
DJNZ ByteCnt,S_Byte1
NOP
CLR RST
RET
RB: CLR RST
NOP
CLR SCLK
NOP
SETB RST
MOV A,Command
MOV BitCnt,#08h
R_Byte0: RRC A
MOV IO_DATA,C
NOP
SETB SCLK
NOP
CLR SCLK
DJNZ BitCnt,R_Byte0
NOP
R_Byte1: CLR A
CLR C
MOV BitCnt,#08h
R_Byte2: NOP
MOV C,IO_DATA
RRC A
SETB SCLK
NOP
NOP
NOP
NOP
CLR SCLK
DJNZ BitCnt,R_Byte2
MOV @R1,A
INC R1
DJNZ ByteCnt,R_Byte1
NOP
CLR RST
RET
DEL: MOV 60H,#40
D1: MOV 61H,#60
D2: MOV 62H,#8
DJNZ 62H,$
DJNZ 61H,D2
DJNZ 60H,D1
RET
TAB:
DB 0FFH 083H 07DH 07DH 083H ;"0",9
DB 0FFH 07BH 001H 07FH 0FFH ;"1",0
DB 0FFH 03BH 05DH 06DH 073H ;"2",1
DB 0FFH 0BBH 06DH 06DH 093H ;"3",2
DB 0FFH 08FH 0B3H 001H 0BFH ;"4",3
DB 0FFH 061H 06DH 06DH 09DH ;"5",4
DB 0FFH 083H 06DH 06DH 09BH ;"6",5
DB 0FFH 0F9H 01DH 0EDH 0F1H ;"7",6
DB 0FFH 093H 06DH 06DH 093H ;"8",7
DB 0FFH 0B3H 06DH 06DH 083H ;"9",8
DB 0FFH 0FFH 093H 093H 0FFH ;":"
DB 0FFH 0EFH 0EFH 0EFH 0EFH ;"-"
DB 0FFH 0FFH 0FFH 0FFH 0FFH ;" "
END
|
|