📄 ds1337.s
字号:
.module DS1337.c
.area text(rom, con, rel)
.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\I2C总线应用设计\DS1337.c
.dbfunc e Init_DS1337_Calendar _Init_DS1337_Calendar fV
.even
_Init_DS1337_Calendar::
.dbline -1
.dbline 21
; //***************************************************************
; // File Name : DS1337.c
; // Author : Steaven
; // Created : 2008-10-09
; // Modified :
; // Revision : V0.0
; //***************************************************************
;
; #include "includes.h"
;
; struct Calendar_struct Calendar;
; struct Calendar_struct Calendar_Read;
;
; //***************************************************************
; // Function : Init_DS1337_Calendar
; // Input : None
; // Output : None
; // Description : Init time with "2007-11-21,THU,21:32:00"
; //***************************************************************
; void Init_DS1337_Calendar(void)
; {
.dbline 22
; Calendar.Second = 0x00;
clr R2
sts _Calendar,R2
.dbline 23
; Calendar.Minute = 0x32;
ldi R24,50
sts _Calendar+1,R24
.dbline 24
; Calendar.Hour = 0x21;
ldi R24,33
sts _Calendar+2,R24
.dbline 25
; Calendar.Day = 0x03;
ldi R24,3
sts _Calendar+3,R24
.dbline 26
; Calendar.Date = 0x21;
ldi R24,33
sts _Calendar+4,R24
.dbline 27
; Calendar.Month = 0x11;
ldi R24,17
sts _Calendar+5,R24
.dbline 28
; Calendar.Year = 0x07;
ldi R24,7
sts _Calendar+6,R24
.dbline -2
.dbline 29
; }
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Set_DS1337_Calendar _Set_DS1337_Calendar fV
; data -> y+3
.even
_Set_DS1337_Calendar::
sbiw R28,10
.dbline -1
.dbline 38
;
; //***************************************************************
; // Function : Set_DS1337_Calendar
; // Input : None
; // Output : None
; // Description : Write time to DS1337 Registers
; //***************************************************************
; void Set_DS1337_Calendar(void)
; {
.dbline 40
; INT8U data[Calendar_LENGTH];
; data[0] = Calendar.Second;
lds R2,_Calendar
std y+3,R2
.dbline 41
; data[1] = Calendar.Minute;
lds R2,_Calendar+1
std y+4,R2
.dbline 42
; data[2] = Calendar.Hour;
lds R2,_Calendar+2
std y+5,R2
.dbline 43
; data[3] = Calendar.Day;
lds R2,_Calendar+3
std y+6,R2
.dbline 44
; data[4] = Calendar.Date;
lds R2,_Calendar+4
std y+7,R2
.dbline 45
; data[5] = Calendar.Month;
lds R2,_Calendar+5
std y+8,R2
.dbline 46
; data[6] = Calendar.Year;
lds R2,_Calendar+6
std y+9,R2
.dbline 47
; I2C_Send_String_with_SubAddress(DS1337,Calendar_ADDRESS,\
ldi R24,7
std y+2,R24
movw R24,R28
adiw R24,3
std y+1,R25
std y+0,R24
clr R18
ldi R16,208
xcall _I2C_Send_String_with_SubAddress
.dbline -2
.dbline 49
; data,Calendar_LENGTH);
; }
L8:
adiw R28,10
.dbline 0 ; func end
ret
.dbsym l data 3 A[7:7]c
.dbend
.dbfunc e Read_DS1337_Calendar _Read_DS1337_Calendar fV
; data -> y+3
.even
_Read_DS1337_Calendar::
sbiw R28,10
.dbline -1
.dbline 58
;
; //***************************************************************
; // Function : Read_DS1337_Calendar
; // Input : None
; // Output : None
; // Description : Read real time from DS1337 Registers
; //***************************************************************
; void Read_DS1337_Calendar(void)
; {
.dbline 60
; INT8U data[Calendar_LENGTH];
; I2C_Recive_String_with_SubAddress(DS1337,Calendar_ADDRESS,\
ldi R24,7
std y+2,R24
movw R24,R28
adiw R24,3
std y+1,R25
std y+0,R24
clr R18
ldi R16,208
xcall _I2C_Recive_String_with_SubAddress
.dbline 62
; data,Calendar_LENGTH);
; Calendar_Read.Second = data[0];
ldd R2,y+3
sts _Calendar_Read,R2
.dbline 63
; Calendar_Read.Minute = data[1];
ldd R2,y+4
sts _Calendar_Read+1,R2
.dbline 64
; Calendar_Read.Hour = data[2];
ldd R2,y+5
sts _Calendar_Read+2,R2
.dbline 65
; Calendar_Read.Day = data[3];
ldd R2,y+6
sts _Calendar_Read+3,R2
.dbline 66
; Calendar_Read.Date = data[4];
ldd R2,y+7
sts _Calendar_Read+4,R2
.dbline 67
; Calendar_Read.Month = data[5];
ldd R2,y+8
sts _Calendar_Read+5,R2
.dbline 68
; Calendar_Read.Year = data[6];
ldd R2,y+9
sts _Calendar_Read+6,R2
.dbline -2
.dbline 69
; }
L21:
adiw R28,10
.dbline 0 ; func end
ret
.dbsym l data 3 A[7:7]c
.dbend
.dbfunc e Init_DS1337 _Init_DS1337 fV
.even
_Init_DS1337::
.dbline -1
.dbline 78
;
; //***************************************************************
; // Function : Read_PCF8563_Calendar
; // Input : None
; // Output : None
; // Description : Read real time from PCF8563 Registers
; //***************************************************************
; void Init_DS1337(void)
; {
.dbline 79
; Init_DS1337_Calendar();
xcall _Init_DS1337_Calendar
.dbline 80
; Set_DS1337_Calendar();
.dbline -2
.dbline 81
; }
L34:
.dbline 0 ; func end
xjmp _Set_DS1337_Calendar
.dbend
.dbfunc e sbGet_Timer_Second _sbGet_Timer_Second fc
.even
_sbGet_Timer_Second::
.dbline -1
.dbline 90
;
; //***************************************************************
; // Function : sbGet_Timer_Second
; // Input : None
; // Output : None
; // Description : Interface Function : Get Second
; //***************************************************************
; INT8U sbGet_Timer_Second(void)
; {
.dbline 91
; return(Calendar_Read.Second);
lds R16,_Calendar_Read
.dbline -2
L35:
.dbline 0 ; func end
ret
.dbend
.dbfunc e sbGet_Timer_Minute _sbGet_Timer_Minute fc
.even
_sbGet_Timer_Minute::
.dbline -1
.dbline 101
; }
;
; //***************************************************************
; // Function : sbGet_Timer_Second
; // Input : None
; // Output : None
; // Description : Interface Function : Get Minute
; //***************************************************************
; INT8U sbGet_Timer_Minute(void)
; {
.dbline 102
; return(Calendar_Read.Minute);
lds R16,_Calendar_Read+1
.dbline -2
L36:
.dbline 0 ; func end
ret
.dbend
.dbfunc e sbGet_Timer_Hour _sbGet_Timer_Hour fc
.even
_sbGet_Timer_Hour::
.dbline -1
.dbline 112
; }
;
; //***************************************************************
; // Function : sbGet_Timer_Second
; // Input : None
; // Output : None
; // Description : Interface Function : Get Hour
; //***************************************************************
; INT8U sbGet_Timer_Hour(void)
; {
.dbline 113
; return(Calendar_Read.Hour);
lds R16,_Calendar_Read+2
.dbline -2
L38:
.dbline 0 ; func end
ret
.dbend
.dbfunc e sbGet_Timer_Day _sbGet_Timer_Day fc
.even
_sbGet_Timer_Day::
.dbline -1
.dbline 123
; }
;
; //***************************************************************
; // Function : sbGet_Timer_Second
; // Input : None
; // Output : None
; // Description : Interface Function : Get Day
; //***************************************************************
; INT8U sbGet_Timer_Day(void)
; {
.dbline 124
; return(Calendar_Read.Day);
lds R16,_Calendar_Read+3
.dbline -2
L40:
.dbline 0 ; func end
ret
.dbend
.dbfunc e sbGet_Timer_Date _sbGet_Timer_Date fc
.even
_sbGet_Timer_Date::
.dbline -1
.dbline 134
; }
;
; //***************************************************************
; // Function : sbGet_Timer_Second
; // Input : None
; // Output : None
; // Description : Interface Function : Get Data
; //***************************************************************
; INT8U sbGet_Timer_Date(void)
; {
.dbline 135
; return(Calendar_Read.Date);
lds R16,_Calendar_Read+4
.dbline -2
L42:
.dbline 0 ; func end
ret
.dbend
.dbfunc e sbGet_Timer_Month _sbGet_Timer_Month fc
.even
_sbGet_Timer_Month::
.dbline -1
.dbline 145
; }
;
; //***************************************************************
; // Function : sbGet_Timer_Second
; // Input : None
; // Output : None
; // Description : Interface Function : Get Month
; //***************************************************************
; INT8U sbGet_Timer_Month(void)
; {
.dbline 146
; return(Calendar_Read.Month);
lds R16,_Calendar_Read+5
.dbline -2
L44:
.dbline 0 ; func end
ret
.dbend
.dbfunc e sbGet_Timer_Year _sbGet_Timer_Year fc
.even
_sbGet_Timer_Year::
.dbline -1
.dbline 156
; }
;
; //***************************************************************
; // Function : sbGet_Timer_Second
; // Input : None
; // Output : None
; // Description : Interface Function : Get Year
; //***************************************************************
; INT8U sbGet_Timer_Year(void)
; {
.dbline 157
; return(Calendar_Read.Year);
lds R16,_Calendar_Read+6
.dbline -2
L46:
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\I2C总线应用设计\DS1337.c
_Calendar_Read::
.blkb 7
.dbsym e Calendar_Read _Calendar_Read X
_Calendar::
.blkb 7
.dbsym e Calendar _Calendar X
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -