⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds1337.s

📁 AVR单片机C语言程序设计实例精粹
💻 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 + -