还是菜鸡º Bestmez丶
我欲成佛便成佛
关注数: 24 粉丝数: 92 发帖数: 3,151 关注贴吧数: 12
1302读不出来 IO BIT P3.4 SCLK BIT P3.6 RST BIT P3.5 LSA BIT P2.2 LSB BIT P2.3 LSC BIT P2.4 DIG EQU P0 ORG 0000H JMP MAIN ORG 000BH JMP DISPLAY ORG 0040H ;********************************* ; 主程序 * ;********************************* MAIN: SEC EQU 30H MIN EQU 31H HOU EQU 32H MOV SEC,#00H MOV MIN,#00H MOV HOU,#09H MOV 33H,#80H MOV TMOD,#02H MOV TH0,#9CH MOV TL0,#9CH SETB ET0 SETB TR0 SETB EA MOV DPTR,#DIGDATA CALL DINIT LOOP: CALL READTIME SJMP LOOP ;********************************* ; DS1302初始化程序 * ;********************************* DINIT: MOV R0, #8EH;写保护寄存器 MOV R1, #30H;禁写保护寄存器 CALL WRITEC MOV R0, #80H;写秒 MOV R1, #SEC MOV 0,#3 LOOP1: CALL WRITEC INC R0 INC R0 INC R1 DJNZ 0,LOOP MOV R0, #8EH ;开启写保护 MOV R1, #33H CALL WRITEC ; MOV SEC,#00H ; MOV MIN,#00H ; MOV HOU,#00H RET ;********************************* ; DS1302读时间程序 * ;********************************* READTIME: MOV R0, #81H MOV R1, #40H;读秒 MOV 0,#3 LOOP2: CALL READC INC R0 INC R0 INC R1 DJNZ 0,LOOP2 RET ;********************************* ; 中断显示程序 * ;********************************* DISPLAY: ;-------------第一个 CLR LSA CLR LSB CLR LSC MOV A,40H ANL A,#0FH MOVC A,@A+DPTR MOV DIG,A CALL DELAY2MS MOV DIG,#000H ;-------------第二个 SETB LSA CLR LSB CLR LSC MOV A,40 SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV DIG,A CALL DELAY2MS MOV DIG,#000H ;-------------第三个 CLR LSA ;测试数码管 SETB LSB CLR LSC MOV DIG,#40H CALL DELAY2MS MOV DIG,#000H ;-------------第四个 SETB LSA SETB LSB CLR LSC MOV A,41H ANL A,#0FH MOVC A,@A+DPTR MOV DIG,A CALL DELAY2MS MOV DIG,#000H ;-------------第五个 CLR LSA CLR LSB SETB LSC MOV A,41H SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV DIG,A CALL DELAY2MS MOV DIG,#000H ;-------------第六个 SETB LSA CLR LSB SETB LSC MOV DIG,#40H CALL DELAY2MS MOV DIG,#000H ;------------ 第七个 CLR LSA SETB LSB SETB LSC MOV A,42H ANL A,#0FH MOVC A,@A+DPTR MOV DIG,A CALL DELAY2MS MOV DIG,#000H ;-------------第八个 SETB LSA SETB LSB SETB LSC MOV A,42H SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV DIG,A CALL DELAY2MS MOV DIG,#000H RETI ;********************************* ; 读DS1302 * ;参数:读地址、数据 * ;********************************* READC: CLR SCLK CLR RST SETB RST MOV B,R0 CALL WRITEB CALL READB MOV @R1,A CLR RST SETB SCLK NOP CLR IO NOP SETB IO NOP RET ;********************************* ; 写DS1302 * ;参数:写地址 、数据 * ;********************************* WRITEC: CLR SCLK CLR RST SETB RST MOV B,R0 CALL WRITEB MOV B,@R1 CALL WRITEB CLR SCLK CLR RST RET ;********************************* ; 数据区 * ;********************************* DIGDATA: DB 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07 DB 0x7f,0x6f;,0x77,0x7c,0x39,0x5e,0x79,0x71 ;********************************* ; 读字节程序 * ;********************************* READB: PUSH PSW PUSH 0 MOV 0,#8 RLOOP: MOV C,IO RRC A SETB SCLK CLR SCLK DJNZ 0,RLOOP POP 0 POP PSW RET ;********************************* ; 写字节程序 * ;********************************* WRITEB: PUSH PSW PUSH 0 MOV 0,#8 WLOOP: MOV A,B RRC A MOV B,A MOV IO,C SETB SCLK CLR SCLK DJNZ 0,WLOOP POP 0 POP PSW RET ;********************************* ; 延时程序 * ;********************************* DELAY2MS: ;误差 0us MOV R6,#04H DL1: MOV R5,#0F8H DJNZ R5,$ DJNZ R6,DL
读DS1302出现问题!恳求帮忙 程序用数码管显示时分秒,可是读出来全是FFF,程序如下。 SCLK EQU P3.4 SIO EQU P3.5 RST EQU P3.6 LSA BIT P2.2 LSB BIT P2.3 LSC BIT P2.4 GPIO_DIG EQU P0 ORG 0 JMP MAIN ORG 0040H MAIN: MOV 30H,#00H MOV 31H,#08H MOV 32H,#00H MOV 33H,#08H MOV 34H,#08H MOV 35H,#01H MOV 36H,#08H CALL INIT MOV DPTR,#DIGDATA DIS: CALL DISPLAY SJMP DIS DIGDATA: DB 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07 DB 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 ;************************************************* ; 数码管显示子程序 * ;************************************************* DISPLAY: CALL RTIME CLR LSA CLR LSB CLR LSC MOV A,54H ANL A,#0FH MOVC A,@A+DPTR MOV GPIO_DIG,A CALL DELAY2MS MOV GPIO_DIG,#000H ;----------- 第一个 SETB LSA CLR LSB CLR LSC MOV A,54H ANL A,#0F0H RR A RR A RR A RR A MOVC A,@A+DPTR MOV GPIO_DIG,A CALL DELAY2MS MOV GPIO_DIG,#000H ;----------- 第二个 CLR LSA SETB LSB CLR LSC MOV GPIO_DIG,#40H CALL DELAY2MS MOV GPIO_DIG,#000H ;----------- 第三个 SETB LSA SETB LSB CLR LSC MOV A,51H ANL A,#0FH MOVC A,@A+DPTR MOV GPIO_DIG,A CALL DELAY2MS MOV GPIO_DIG,#000H ;----------- 第四个 CLR LSA CLR LSB SETB LSC MOV A,51H ANL A,#0F0H RR A RR A RR A RR A MOVC A,@A+DPTR MOV GPIO_DIG,A CALL DELAY2MS MOV GPIO_DIG,#000H ;----------- 第五个 SETB LSA CLR LSB SETB LSC MOV GPIO_DIG,#40H CALL DELAY2MS MOV GPIO_DIG,#000H ;----------- 第六个 CLR LSA SETB LSB SETB LSC MOV A,52H ANL A,#0FH MOVC A,@A+DPTR MOV GPIO_DIG,A CALL DELAY2MS MOV GPIO_DIG,#000H ;------------ 第七个 SETB LSA SETB LSB SETB LSC MOV A,52H ANL A,#30H RR A RR A RR A RR A MOVC A,@A+DPTR MOV GPIO_DIG,A CALL DELAY2MS MOV GPIO_DIG,#000H RET ;************************************************* ; 写字节子程序 * ;************************************************* WRB: MOV 40H,#8 LPW: CLR SCLK MOV A,B RRC A MOV B,A MOV SIO,C SETB SCLK NOP DJNZ 40H,LPW RET ;************************************************* ; 读字节子程序 * ;************************************************* RDB: MOV 40H,#8 LPR: CLR SCLK MOV C,SIO RRC A SETB SCLK DJNZ 40H,LPR RET ;************************************************* ; DS1302初始化子程序 * ;************************************************* INIT: CLR RST CLR SCLK SETB RST MOV B,#8EH CALL WRB MOV B,#00H CALL WRB SETB SCLK CLR RST MOV R0,30H MOV R7,#7 MOV R1,#81H LOOP: CLR RST CLR SCLK SETB RST MOV B,R1 CALL WRB MOV A,@R0 MOV B,A CALL WRB INC R0 INC R1 INC R1 SETB SCLK CLR RST DJNZ R7,LOOP CLR RST CLR SCLK SETB RST MOV B,#8EH CALL WRB MOV B,#80H CALL WRB SETB SCLK CLR RST RET ;************************************************* ; 时间读取子程序 * ;************************************************* RTIME: MOV R7,#7 MOV R1,#81H MOV R0,#50H LPRT: CLR RST NOP CLR SCLK NOP SETB RST MOV B,R1 CALL WRB CALL RDB MOV @R0,A INC R0 INC R1 INC R1 SETB SCLK NOP CLR RST NOP DJNZ R7,LPRT CLR RST NOP SETB SCLK NOP CLR SIO NOP SETB SIO NOP RET ;************************************************* ; 延时子程序 * ;************************************************* DELAY20MS: ;误差 0us MOV R6,#0D7H DL0: MOV R5,#2DH DJNZ R5,$ DJNZ R6,DL0 NOP NOP RET DELAY2MS: ;误差 0us MOV R6,#04H DL1: MOV R5,#0F8H DJNZ R5,$ DJNZ R6,DL1 NOP RET END
1 下一页