回覆列表
  • 1 # 使用者6725880180828

    這是彙編版的dS1302驅動程式,你可以參考一下。 PUBLIC D1302_INIT,SET1302,GET1302,WRITE,READ CODE_DS1302 SEGMENT CODE T_CLK BIT P1.0 T_IO BIT P1.1 T_RST BIT P1.2 SECOND EQU 30H MINUTE EQU 31H HOUR EQU 32H DAY EQU 33H MONTH EQU 34H WEEK EQU 35H YEAR EQU 36H RSEG CODE_DS1302 ;使用當前段 ;以下是DS1302初始化子程式D1302_INIT: CLR T_RST ;DS1302復位 CLR T_CLK NOP NOP SETB T_RST MOV R1,#80H MOV R0,#00H LCALL WRITE MOV R1,#90H MOV R0,#0ABH LCALL WRITE RET ;以下是 讀 日期時間資料子程式GET1302: MOV R1,#81H LCALL READ MOV SECOND,R0 MOV R1,#83H LCALL READ MOV MINUTE,R0 MOV R1,#85H LCALL READ MOV HOUR,R0 MOV R1,#87H LCALL READ MOV DAY,R0 MOV R1,#89H LCALL READ MOV MONTH,R0 MOV R1,#8BH LCALL READ MOV WEEK,R0 MOV R1,#8DH LCALL READ MOV YEAR,R0 RET ;以下是時鐘日曆寫操作子程式(微控制器向DS1302寫入初始時間)SET1302: MOV R1,#80H ;寫 秒 LCALL WRITE MOV SECOND,R0 MOV R1,#82H ;寫 分 LCALL WRITE MOV MINUTE,R0 MOV R1,#84H ;寫 時 LCALL WRITE MOV HOUR,R0 MOV R1,#86H ;寫 天 LCALL WRITE MOV DAY,R0 MOV R1,#88H ;寫 月 LCALL WRITE MOV MONTH,R0 MOV R1,#8AH ;寫 周 LCALL WRITE MOV WEEK,R0 MOV R1,#8CH ;寫 年 LCALL WRITE MOV YEAR,R0 RET ;以下是 寫 一個位元組地址和資料的子程式WRITE: CLR T_CLK NOP NOP SETB T_RST NOP MOV A,R1 MOV R2,#08HWRI_01: RRC A NOP NOP CLR T_CLK NOP NOP MOV T_IO,C NOP NOP SETB T_CLK NOP NOP DJNZ R2,WRI_01 CLR T_CLK NOP NOP MOV A,R0 MOV R2,#08HWRI_02: RRC A NOP CLR T_CLK NOP NOP MOV T_IO,C NOP NOP SETB T_CLK NOP NOP DJNZ R2,WRI_02 CLR T_CLK NOP NOP CLR T_RST NOP NOP RET ;以下是從DS1302讀取一位元組地址中資料子程式READ: CLR T_CLK NOP NOP SETB T_RST NOP NOP MOV A,R1 MOV R2,#08HREAD_01: RRC A NOP MOV T_IO,C NOP NOP SETB T_CLK NOP NOP CLR T_CLK NOP NOP DJNZ R2,READ_01 NOP NOP SETB T_IO CLR A CLR C MOV R2,#08HREAD_02: CLR T_CLK NOP NOP MOV C,T_IO NOP NOP RRC A NOP NOP SETB T_CLK NOP NOP DJNZ R2,READ_02 MOV R0,A CLR T_RST RET END

  • 中秋節和大豐收的關聯?
  • 《三輪車伕》閱讀理解答案?