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

📄 public.s

📁 ATmega128和ads7864实现ATP闭环控制
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module Public.c
	.area text(rom, con, rel)
	.dbfile D:\ATP_AVR\Public.c
	.dbfunc e count_seconds _count_seconds fl
;              k -> <dead>
;              j -> <dead>
;            ucM -> R12
;            ucF -> R10
;            ucS -> y+9
;            ucR -> y+8
;            ucY -> y+7
;            ucN -> y+6
;      ulSeconds -> y+0
;              i -> R14
;         nyrsfm -> R12,R13
	.even
_count_seconds::
	xcall push_gset5
	movw R12,R16
	sbiw R28,10
	.dbline -1
	.dbline 38
; 
; //#include "public.h"
; #include <iom128v.h>
; #include <macros.h>
; #include <string.h>
; #include <math.h>
; #include "DC_Defines.h"
; 
; 
; #define u8 unsigned char
; #define s8 char
; #define u16 unsigned short
; #define s16 short
; #define u32 unsigned long
; #define s32 long
; #define pu16 (unsigned short *)
; #define ps16 (short *)
; #define pu32 (unsigned long *)
; #define ps32 (long *)
; 
; //全局变量定义
; unsigned char ucUpDownTime[12];
; unsigned char ucNowTime[6];
; unsigned char ucLastFlashTime[6];
; unsigned char ucDTTime[6];
; unsigned char ucNowValuePer[8];
; unsigned char ucNowValuePerCOM[8];
; unsigned char FTREC[4];
; unsigned char TREC[4];
; unsigned char ucSystemConfig[80];
; unsigned char ucChannelConfig[80];
; unsigned char RECORD[1048];
; 
; 
; 
; //计算该时间与2000-01-01 00:00:00 的间隔秒数
; unsigned long count_seconds(unsigned char * nyrsfm)
; {
	.dbline 42
; 	unsigned char ucN,ucY,ucR,ucS,ucF,ucM;//年月日时分秒
; 	unsigned char i,j,k;
; 	unsigned long ulSeconds;
; 	ucN=nyrsfm[0];
	movw R30,R12
	ldd R2,z+0
	std y+6,R2
	.dbline 43
; 	ucY=nyrsfm[1];
	ldd R2,z+1
	std y+7,R2
	.dbline 44
; 	ucR=nyrsfm[2];
	movw R30,R12
	ldd R2,z+2
	std y+8,R2
	.dbline 45
; 	ucS=nyrsfm[3];
	movw R30,R12
	ldd R2,z+3
	std y+9,R2
	.dbline 46
; 	ucF=nyrsfm[4];
	movw R30,R12
	ldd R10,z+4
	.dbline 47
; 	ucM=nyrsfm[5];
	movw R30,R12
	ldd R12,z+5
	.dbline 49
; 
; 	ulSeconds=0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	std z+0,R20
	std z+1,R21
	std z+2,R22
	std z+3,R23
	.dbline 51
; 	
; 	for(i=0;i<ucN;i++)
	clr R14
	xjmp L5
L2:
	.dbline 52
; 	{
	.dbline 53
; 		if((i%4)==0)	ulSeconds+=((unsigned long)366)*((unsigned long)24)*((unsigned long)3600);	//如果是闰年,加上366的秒数
	ldi R17,4
	mov R16,R14
	xcall mod8u
	tst R16
	brne L6
	.dbline 53
	ldi R20,0
	ldi R21,133
	ldi R22,226
	ldi R23,1
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	xjmp L7
L6:
	.dbline 54
; 		else		ulSeconds+=((unsigned long)365)*((unsigned long)24)*((unsigned long)3600);	//如果是平年,加上365的秒数
	ldi R20,128
	ldi R21,51
	ldi R22,225
	ldi R23,1
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
L7:
	.dbline 55
L3:
	.dbline 51
	inc R14
L5:
	.dbline 51
	ldd R0,y+6
	cp R14,R0
	brsh X1
	xjmp L2
X1:
	.dbline 56
; 	}
; 	for(i=1;i<ucY;i++)
	clr R14
	inc R14
	xjmp L11
L8:
	.dbline 57
; 	{
	.dbline 58
; 		switch(i)
	mov R2,R14
	clr R3
	std y+5,R3
	std y+4,R2
	movw R24,R2
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	brne X2
	xjmp L15
X2:
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	brne X3
	xjmp L16
X3:
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	brne X4
	xjmp L19
X4:
	cpi R24,4
	ldi R30,0
	cpc R25,R30
	brne X5
	xjmp L20
X5:
	cpi R24,5
	ldi R30,0
	cpc R25,R30
	brne X6
	xjmp L21
X6:
	cpi R24,6
	ldi R30,0
	cpc R25,R30
	brne X7
	xjmp L22
X7:
	cpi R24,7
	ldi R30,0
	cpc R25,R30
	brne X8
	xjmp L23
X8:
	cpi R24,8
	ldi R30,0
	cpc R25,R30
	brne X9
	xjmp L24
X9:
	cpi R24,9
	ldi R30,0
	cpc R25,R30
	brne X10
	xjmp L25
X10:
	cpi R24,10
	ldi R30,0
	cpc R25,R30
	brne X11
	xjmp L26
X11:
	cpi R24,11
	ldi R30,0
	cpc R25,R30
	brne X12
	xjmp L27
X12:
	cpi R24,12
	ldi R30,0
	cpc R25,R30
	brne X13
	xjmp L28
X13:
	xjmp L13
X0:
	.dbline 59
; 		{
L15:
	.dbline 61
; 			case 1:
; 				ulSeconds+=((unsigned long)31)*((unsigned long)24)*((unsigned long)3600);
	ldi R20,128
	ldi R21,222
	ldi R22,40
	ldi R23,0
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 62
; 				break;
	xjmp L13
L16:
	.dbline 64
; 			case 2:
; 				if((ucN%4)==0)	ulSeconds+=((unsigned long)29)*((unsigned long)24)*((unsigned long)3600);
	ldi R17,4
	ldd R16,y+6
	xcall mod8u
	tst R16
	brne L17
	.dbline 64
	ldi R20,128
	ldi R21,59
	ldi R22,38
	ldi R23,0
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	xjmp L13
L17:
	.dbline 65
; 				else		ulSeconds+=((unsigned long)28)*((unsigned long)24)*((unsigned long)3600);
	ldi R20,0
	ldi R21,234
	ldi R22,36
	ldi R23,0
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 66
; 				break;
	xjmp L13
L19:
	.dbline 68
; 			case 3:
; 				ulSeconds+=((unsigned long)31)*((unsigned long)24)*((unsigned long)3600);
	ldi R20,128
	ldi R21,222
	ldi R22,40
	ldi R23,0
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 69
; 				break;
	xjmp L13
L20:
	.dbline 71
; 			case 4:
; 				ulSeconds+=((unsigned long)30)*((unsigned long)24)*((unsigned long)3600);
	ldi R20,0
	ldi R21,141
	ldi R22,39
	ldi R23,0
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 72
; 				break;
	xjmp L13
L21:
	.dbline 74
; 			case 5:
; 				ulSeconds+=((unsigned long)31)*((unsigned long)24)*((unsigned long)3600);
	ldi R20,128
	ldi R21,222
	ldi R22,40
	ldi R23,0
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 75
; 				break;
	xjmp L13
L22:
	.dbline 77
; 			case 6:
; 				ulSeconds+=((unsigned long)30)*((unsigned long)24)*((unsigned long)3600);
	ldi R20,0
	ldi R21,141
	ldi R22,39
	ldi R23,0
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 78
; 				break;
	xjmp L13
L23:
	.dbline 80
; 			case 7:
; 				ulSeconds+=((unsigned long)31)*((unsigned long)24)*((unsigned long)3600);
	ldi R20,128
	ldi R21,222
	ldi R22,40
	ldi R23,0
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 81
; 				break;
	xjmp L13
L24:
	.dbline 83
; 			case 8:
; 				ulSeconds+=((unsigned long)31)*((unsigned long)24)*((unsigned long)3600);
	ldi R20,128
	ldi R21,222
	ldi R22,40
	ldi R23,0
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 84
; 				break;
	xjmp L13
L25:
	.dbline 86
; 			case 9:
; 				ulSeconds+=((unsigned long)30)*((unsigned long)24)*((unsigned long)3600);
	ldi R20,0
	ldi R21,141
	ldi R22,39
	ldi R23,0
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 87
; 				break;
	xjmp L13
L26:
	.dbline 89
; 			case 10:
; 				ulSeconds+=((unsigned long)31)*((unsigned long)24)*((unsigned long)3600);
	ldi R20,128
	ldi R21,222
	ldi R22,40
	ldi R23,0
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 90
; 				break;
	xjmp L13
L27:
	.dbline 92
; 			case 11:
; 				ulSeconds+=((unsigned long)30)*((unsigned long)24)*((unsigned long)3600);
	ldi R20,0
	ldi R21,141
	ldi R22,39
	ldi R23,0
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 93
; 				break;
	xjmp L13
L28:
	.dbline 95
; 			case 12:
; 				ulSeconds+=((unsigned long)31)*((unsigned long)24)*((unsigned long)3600);
	ldi R20,128
	ldi R21,222
	ldi R22,40
	ldi R23,0
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 96
; 				break;
	.dbline 98
; 			default:
; 				break;
L13:
	.dbline 100
L9:
	.dbline 56
	inc R14
L11:
	.dbline 56
	ldd R0,y+7
	cp R14,R0
	brsh X14
	xjmp L8
X14:
	.dbline 102
; 		}
; 	}
; 
; 	ulSeconds+=((unsigned long)(ucR-1))*((unsigned long)24)*((unsigned long)3600);
	ldd R24,y+8
	clr R25
	sbiw R24,1
	movw R2,R24
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	ldi R20,24
	ldi R21,0
	ldi R22,0
	ldi R23,0
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall empy32u
	ldi R20,16
	ldi R21,14
	ldi R22,0
	ldi R23,0
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	movw R16,R20
	movw R18,R22
	xcall empy32u
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	add R2,R16
	adc R3,R17
	adc R4,R18
	adc R5,R19
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 103
; 	ulSeconds+=((unsigned long)ucS)*((unsigned long)3600);
	ldd R2,y+9
	clr R3
	clr R4
	clr R5
	ldi R20,16
	ldi R21,14
	ldi R22,0
	ldi R23,0
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall empy32u
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	add R2,R16
	adc R3,R17
	adc R4,R18
	adc R5,R19
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 104
; 	ulSeconds+=((unsigned long)ucF)*((unsigned long)60);
	mov R2,R10
	clr R3
	clr R4
	clr R5
	ldi R20,60
	ldi R21,0
	ldi R22,0
	ldi R23,0
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall empy32u
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	add R2,R16
	adc R3,R17
	adc R4,R18
	adc R5,R19
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 105
; 	ulSeconds+=((unsigned long)ucM);
	mov R2,R12
	clr R3
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	movw R30,R28
	std z+0,R6
	std z+1,R7
	std z+2,R8
	std z+3,R9
	.dbline 107
; 
; 	return ulSeconds;
	movw R30,R28
	ldd R16,z+0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -