由于小弟C能力有限,就用匯編寫(xiě)了一個(gè)DS1302+LED 程序, 程序在按鍵數(shù)據(jù)處理上有問(wèn)題,實(shí)在不好寫(xiě).
高電平點(diǎn)亮位數(shù)碼管!
CLK BIT P3.5;預(yù)定義ds1302
IO BIT P3.6
RST BIT P3.7
SPEAKER BIT P3.1;蜂鳴器
KEY_S BIT P3.2;按鍵定義
KEY_M BIT P3.3
KEY_H BIT P3.4
SECOND EQU 30H;秒地址
MINUIE EQU 31H;分
HOUR EQU 32H;時(shí)地址
DAY EQU 33H
MONTH EQU 34H
WEEK EQU 35H
YEAR EQU 36H
Q1 EQU 50H
Q2 EQU 51H
CTH EQU (65536-50000)/256
CTL EQU (65536-50000) MOD 256
ORG 0000H
SJMP START
ORG 000BH
LJMP TIME_0
ORG 0030H
JMP START
START: MOV SP,#60H ;開(kāi)始
MOV R2,#20
MOV DPTR,#ABC
MAIN: MOV TMOD,#01H
MOV TH0,#CTH
MOV TL0,#CTL
SETB EA
SETB ET0
CALL READ1302
MOV ACC,30H
JNB ACC.7,JUMP
CALL INIT
JUMP: SETB TR0
LOOP: CALL DISPLAY
JNB KEY_S,K1
JNB KEY_M,K2
JNB KEY_H,K3
SJMP LOOP
K1: CALL DELAY
JB KEY_S,LOOP
MOV A,30H
MOV B,#16
DIV AB
MOV A,B
INC A
CJNE A,#10,D1
MOV A,30H
ADD A,#16
CJNE A,#60H,D4
MOV A,#00H
JMP D4
K2: CALL DELAY
JB KEY_M,LOOP
MOV A,31H
MOV B,#16
DIV AB
MOV A,B
INC A
CJNE A,#10,D2
MOV A,31H
ADD A,#16
CJNE A,#60H,D5
MOV A,#00H
JMP D5
K3: CALL DELAY
JB KEY_H,LOOP
MOV A,32H
MOV B,#16
DIV AB
MOV A,B
INC A
CJNE A,#10,D3
MOV A,32H
ADD A,#16
CJNE A,#30H,D6
MOV A,#00H
JMP D6
D1: MOV A,30H ;MIAO TIAO ZHENG SHU RU
INC A
D4: MOV 30H,A
CALL DISPLAY
CLR CLK
CLR RST
MOV Q1,#80H
MOV Q2,30H
MOV R1,#Q1
CALL W1302
CALL DISPLAY
JMP LOOP
D2: MOV A,31H ;FEN YIAO ZHENG SHU RU
INC A
D5: MOV 31H,A
CALL DISPLAY
CLR CLK
CLR RST
MOV Q1,#82H
MOV Q2,31H
MOV R1,#Q1
CALL W1302
CALL DISPLAY
JMP LOOP
D3: MOV A,32H ;SHI SHU JU SHU RU
INC A
D6: MOV 32H,A
CALL DISPLAY
CLR CLK
CLR RST
MOV Q1,#84H
MOV Q2,32H
MOV R1,#Q1
CALL W1302
CALL DISPLAY
JMP LOOP
INIT: CLR CLK ;初始化1302
CLR RST
MOV Q1,#8EH;OPEN WRITE PROTECTION
MOV Q2,#00H
MOV R1,#Q1
CALL W1302
MOV Q1,#90H;OPEN BATTREY
MOV Q2,#0AAH
MOV R1,#Q1
CALL W1302
MOV Q1,#80H;START
MOV Q2,#00H
MOV R1,#Q1
CALL W1302
RET
W1302: CLR CLK
NOP
SETB RST
NOP
NOP
MOV R7,#2
W_1: MOV R6,#8
MOV A,@R1
CLR C
W_2: CLR CLK
RRC A
MOV IO,C
NOP
SETB CLK
DJNZ R6,W_2
INC R1
DJNZ R7,W_1
CLR RST
NOP
CLR CLK
RET
READ1302: MOV R0,#30H ; 讀1302數(shù)據(jù)
MOV R5,#3
MOV R7,#81H
READ1302_: MOV A,R7
CLR RST
NOP
SETB RST
NOP
MOV R4,#8 ;1302寫(xiě)一字節(jié)
CLR C
SETONE1: CLR CLK
RRC A
MOV IO,C
NOP
SETB CLK
DJNZ R4,SETONE1
GET1302: MOV R4,#8 ;1302讀一字節(jié)
CLR C
GETONE1: SETB CLK
NOP
CLR CLK
NOP
MOV C,IO
RRC A
DJNZ R4,GETONE1
CLR RST
NOP
CLR CLK ;WAN BI
MOV @R0,A
INC R0
INC R7
INC R7
DJNZ R5,READ1302_
RET
TIME_0: PUSH ACC ;中斷服務(wù)
PUSH PSW
MOV TH0,#CTH
MOV TL0,#CTL
DJNZ R2,KEIL
CALL READ1302
MOV R2,#20
KEIL: POP PSW
POP ACC
RETI
DISPLAY: MOV A,SECOND ;顯示子程序
MOV B,#16
DIV AB
MOVC A,@A+DPTR
MOV P2,A
SETB P1.1
CALL DELAY
CLR P1.1;@@@@@@@@@秒十位
MOV A,B
MOVC A,@A+DPTR
MOV P2,A
SETB P1.0
CALL DELAY
CLR P1.0;@@@@@@@@@@@@秒個(gè)位
MOV P2,#0BFH
SETB P1.2
CALL DELAY
CLR P1.2;@@@@@@@@@222分秒之間橫杠
MOV A,MINUIE
MOV B,#16
DIV AB
MOVC A,@A+DPTR
MOV P2,A
SETB P1.4
CALL DELAY
CLR P1.4;@@@@@@@@@@分十位
MOV A,B
MOVC A,@A+DPTR
MOV P2,A
SETB P1.3
CALL DELAY
CLR P1.3;@@@@@@@@@@@@分個(gè)位
MOV P2,#0BFH
SETB P1.5
CALL DELAY
CLR P1.5;@@@@@@@@@@分時(shí)橫杠
MOV A,HOUR
MOV B,#16
DIV AB
MOVC A,@A+DPTR
MOV P2,A
SETB P1.7
CALL DELAY
CLR P1.7;@@@@@@@@@@@時(shí)十位
MOV A,B
MOVC A,@A+DPTR
MOV P2,A
SETB P1.6
CALL DELAY
CLR P1.6
RET
DELAY: MOV R3,#5
N1: MOV R6,#250
DJNZ R6,$
DJNZ R3,N1
RET
ABC: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;碼表
END
另有ds1302 資料打包
在此感謝王老師提供的視頻。
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |