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

📄 public.s

📁 ATmega128和ads7864实现ATP闭环控制
💻 S
📖 第 1 页 / 共 2 页
字号:
	ldd R17,z+1
	ldd R18,z+2
	ldd R19,z+3
	.dbline -2
L1:
	adiw R28,10
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym l k 1 c
	.dbsym l j 1 c
	.dbsym r ucM 12 c
	.dbsym r ucF 10 c
	.dbsym l ucS 9 c
	.dbsym l ucR 8 c
	.dbsym l ucY 7 c
	.dbsym l ucN 6 c
	.dbsym l ulSeconds 0 l
	.dbsym r i 14 c
	.dbsym r nyrsfm 12 pc
	.dbend
	.dbfunc e SpanSecond _SpanSecond fl
;        ultemp2 -> y+4
;        ultemp1 -> y+0
;        nyrsfm2 -> R10,R11
;        nyrsfm1 -> R12,R13
	.even
_SpanSecond::
	xcall push_gset4
	movw R10,R18
	movw R12,R16
	sbiw R28,8
	.dbline -1
	.dbline 112
; }
; 
; //计算time1-time2的时间差,返回差值,单位s
; unsigned long SpanSecond(unsigned char * nyrsfm1,unsigned char * nyrsfm2)
; {
	.dbline 115
; 	unsigned long ultemp1,ultemp2;
; 	
; 	ultemp1=count_seconds(nyrsfm1);
	movw R16,R12
	xcall _count_seconds
	movw R30,R28
	std z+0,R16
	std z+1,R17
	std z+2,R18
	std z+3,R19
	.dbline 116
; 	ultemp2=count_seconds(nyrsfm2);
	movw R16,R10
	xcall _count_seconds
	movw R30,R28
	std z+4,R16
	std z+5,R17
	std z+6,R18
	std z+7,R19
	.dbline 118
; 
; 	if(ultemp1>ultemp2)	return (ultemp1-ultemp2);
	movw R30,R28
	ldd R2,z+4
	ldd R3,z+5
	ldd R4,z+6
	ldd R5,z+7
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	cp R2,R6
	cpc R3,R7
	cpc R4,R8
	cpc R5,R9
	brsh L30
	.dbline 118
	movw R30,R28
	ldd R2,z+4
	ldd R3,z+5
	ldd R4,z+6
	ldd R5,z+7
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	sub R6,R2
	sbc R7,R3
	sbc R8,R4
	sbc R9,R5
	movw R16,R6
	movw R18,R8
	xjmp L29
L30:
	.dbline 119
; 	else		return 0;
	ldi R16,0
	ldi R17,0
	ldi R18,0
	ldi R19,0
	.dbline -2
L29:
	adiw R28,8
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym l ultemp2 4 l
	.dbsym l ultemp1 0 l
	.dbsym r nyrsfm2 10 pc
	.dbsym r nyrsfm1 12 pc
	.dbend
	.dbfunc e SpanDay1 _SpanDay1 fl
;        ulDays2 -> y+4
;        ulDays1 -> y+0
;           nyr2 -> R10,R11
;           nyr1 -> R12,R13
	.even
_SpanDay1::
	xcall push_gset4
	movw R10,R18
	movw R12,R16
	sbiw R28,8
	.dbline -1
	.dbline 123
; }
; 
; unsigned long SpanDay1(unsigned char * nyr1,unsigned char * nyr2)		//每月按31天算
; {
	.dbline 125
; 	unsigned long ulDays1,ulDays2;
; 	ulDays1=((unsigned long)nyr1[0])*((unsigned long)12)*((unsigned long)31)+((unsigned long)(nyr1[1]-1))*((unsigned long)31)+((unsigned long)(nyr1[2]-1));
	movw R30,R12
	ldd R2,z+0
	clr R3
	clr R4
	clr R5
	ldi R20,12
	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,31
	ldi R21,0
	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 R2,R16
	movw R4,R18
	movw R30,R12
	ldd R24,z+1
	clr R25
	sbiw R24,1
	movw R6,R24
	clr R8
	sbrc R7,7
	com R8
	clr R9
	sbrc R8,7
	com R9
	ldi R20,31
	ldi R21,0
	ldi R22,0
	ldi R23,0
	st -y,R9
	st -y,R8
	st -y,R7
	st -y,R6
	movw R16,R20
	movw R18,R22
	xcall empy32u
	add R2,R16
	adc R3,R17
	adc R4,R18
	adc R5,R19
	movw R30,R12
	ldd R24,z+2
	clr R25
	sbiw R24,1
	movw R6,R24
	clr R8
	sbrc R7,7
	com R8
	clr R9
	sbrc R8,7
	com R9
	add R2,R6
	adc R3,R7
	adc R4,R8
	adc R5,R9
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 126
; 	ulDays2=((unsigned long)nyr2[0])*((unsigned long)12)*((unsigned long)31)+((unsigned long)(nyr2[1]-1))*((unsigned long)31)+((unsigned long)(nyr2[2]-1));
	movw R30,R10
	ldd R2,z+0
	clr R3
	clr R4
	clr R5
	ldi R20,12
	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,31
	ldi R21,0
	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 R2,R16
	movw R4,R18
	movw R30,R10
	ldd R24,z+1
	clr R25
	sbiw R24,1
	movw R6,R24
	clr R8
	sbrc R7,7
	com R8
	clr R9
	sbrc R8,7
	com R9
	ldi R20,31
	ldi R21,0
	ldi R22,0
	ldi R23,0
	st -y,R9
	st -y,R8
	st -y,R7
	st -y,R6
	movw R16,R20
	movw R18,R22
	xcall empy32u
	add R2,R16
	adc R3,R17
	adc R4,R18
	adc R5,R19
	movw R30,R10
	ldd R24,z+2
	clr R25
	sbiw R24,1
	movw R6,R24
	clr R8
	sbrc R7,7
	com R8
	clr R9
	sbrc R8,7
	com R9
	add R2,R6
	adc R3,R7
	adc R4,R8
	adc R5,R9
	movw R30,R28
	std z+4,R2
	std z+5,R3
	std z+6,R4
	std z+7,R5
	.dbline 127
; 	if(ulDays1>ulDays2)	return (ulDays1-ulDays2);
	movw R30,R28
	ldd R2,z+4
	ldd R3,z+5
	ldd R4,z+6
	ldd R5,z+7
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	cp R2,R6
	cpc R3,R7
	cpc R4,R8
	cpc R5,R9
	brsh L33
	.dbline 127
	movw R30,R28
	ldd R2,z+4
	ldd R3,z+5
	ldd R4,z+6
	ldd R5,z+7
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	sub R6,R2
	sbc R7,R3
	sbc R8,R4
	sbc R9,R5
	movw R16,R6
	movw R18,R8
	xjmp L32
L33:
	.dbline 128
; 	else		return 0;
	ldi R16,0
	ldi R17,0
	ldi R18,0
	ldi R19,0
	.dbline -2
L32:
	adiw R28,8
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym l ulDays2 4 l
	.dbsym l ulDays1 0 l
	.dbsym r nyr2 10 pc
	.dbsym r nyr1 12 pc
	.dbend
	.dbfunc e SpanMonth _SpanMonth fl
;       ulMonth2 -> y+4
;       ulMonth1 -> y+0
;            ny2 -> R10,R11
;            ny1 -> R12,R13
	.even
_SpanMonth::
	xcall push_gset4
	movw R10,R18
	movw R12,R16
	sbiw R28,8
	.dbline -1
	.dbline 132
; }
; 
; unsigned long SpanMonth(unsigned char * ny1,unsigned char * ny2)		
; {
	.dbline 134
; 	unsigned long ulMonth1,ulMonth2;
; 	ulMonth1=((unsigned long)ny1[0])*((unsigned long)12)+ny1[1]-1;
	movw R30,R12
	ldd R2,z+0
	clr R3
	clr R4
	clr R5
	ldi R20,12
	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 R2,R16
	movw R4,R18
	movw R30,R12
	ldd R6,z+1
	clr R7
	clr R8
	clr R9
	add R2,R6
	adc R3,R7
	adc R4,R8
	adc R5,R9
	ldi R20,1
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sub R2,R20
	sbc R3,R21
	sbc R4,R22
	sbc R5,R23
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 135
; 	ulMonth2=((unsigned long)ny2[0])*((unsigned long)12)+ny2[1]-1;
	movw R30,R10
	ldd R2,z+0
	clr R3
	clr R4
	clr R5
	ldi R20,12
	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 R2,R16
	movw R4,R18
	movw R30,R10
	ldd R6,z+1
	clr R7
	clr R8
	clr R9
	add R2,R6
	adc R3,R7
	adc R4,R8
	adc R5,R9
	ldi R20,1
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sub R2,R20
	sbc R3,R21
	sbc R4,R22
	sbc R5,R23
	movw R30,R28
	std z+4,R2
	std z+5,R3
	std z+6,R4
	std z+7,R5
	.dbline 136
; 	if(ulMonth1>ulMonth2)	return (ulMonth1-ulMonth2);
	movw R30,R28
	ldd R2,z+4
	ldd R3,z+5
	ldd R4,z+6
	ldd R5,z+7
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	cp R2,R6
	cpc R3,R7
	cpc R4,R8
	cpc R5,R9
	brsh L36
	.dbline 136
	movw R30,R28
	ldd R2,z+4
	ldd R3,z+5
	ldd R4,z+6
	ldd R5,z+7
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	sub R6,R2
	sbc R7,R3
	sbc R8,R4
	sbc R9,R5
	movw R16,R6
	movw R18,R8
	xjmp L35
L36:
	.dbline 137
; 	else 	return 0;
	ldi R16,0
	ldi R17,0
	ldi R18,0
	ldi R19,0
	.dbline -2
L35:
	adiw R28,8
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym l ulMonth2 4 l
	.dbsym l ulMonth1 0 l
	.dbsym r ny2 10 pc
	.dbsym r ny1 12 pc
	.dbend
	.dbfunc e SpanYear _SpanYear fl
;             n2 -> R18,R19
;             n1 -> R16,R17
	.even
_SpanYear::
	xcall push_gset2
	.dbline -1
	.dbline 141
; }
; 
; unsigned long SpanYear(unsigned char * n1,unsigned char * n2)		
; {
	.dbline 142
; 	if(*n1>*n2)	return (*n1-*n2);
	movw R30,R18
	ldd R2,z+0
	movw R30,R16
	ldd R3,z+0
	cp R2,R3
	brsh L39
	.dbline 142
	movw R30,R18
	ldd R2,z+0
	clr R3
	movw R30,R16
	ldd R4,z+0
	clr R5
	sub R4,R2
	sbc R5,R3
	movw R2,R4
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	movw R16,R2
	movw R18,R4
	xjmp L38
L39:
	.dbline 143
; 	else 	return 0;
	ldi R16,0
	ldi R17,0
	ldi R18,0
	ldi R19,0
	.dbline -2
L38:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r n2 18 pc
	.dbsym r n1 16 pc
	.dbend
	.dbfunc e delay _delay fV
;          ticks -> R16
	.even
_delay::
	.dbline -1
	.dbline 153
; }
; 
; 
; // delay time=ticks * 6 +15 clock time tosc
; // the fosc=11.0592MHz in this application,
; // when ticks=0x00:	1.356us
; // when ticks=0xFF:	139.7us
; 
;  void delay(unsigned char ticks)
;   {
L42:
	.dbline 154
L43:
	.dbline 154
;   	while(ticks--);
	mov R2,R16
	clr R3
	subi R16,1
	tst R2
	brne L42
	.dbline -2
L41:
	.dbline 0 ; func end
	ret
	.dbsym r ticks 16 c
	.dbend
	.dbfunc e delayus _delayus fV
;          ticks -> R16
	.even
_delayus::
	.dbline -1
	.dbline 159
;   }
; 
; //
;  void delayus(unsigned char ticks)
;   {
L46:
	.dbline 160
L47:
	.dbline 160
;   	while(ticks--);
	mov R2,R16
	clr R3
	subi R16,1
	tst R2
	brne L46
	.dbline -2
L45:
	.dbline 0 ; func end
	ret
	.dbsym r ticks 16 c
	.dbend
	.dbfunc e delayms _delayms fV
;              i -> R20
;              j -> R22
;              k -> R10
;          ticks -> R16
	.even
_delayms::
	xcall push_gset3
	.dbline -1
	.dbline 164
;   }
; 
;   void delayms(unsigned char ticks)
;   {
	.dbline 166
;   	unsigned char i,j,k;
; 	for(i=0;i<ticks;i++)
	clr R20
	xjmp L53
L50:
	.dbline 167
; 	{
	.dbline 168
;   		for(j=0;j<10;j++)
	clr R22
	xjmp L57
L54:
	.dbline 169
; 		{	
	.dbline 170
; 			k=182;
	ldi R24,182
	mov R10,R24
L58:
	.dbline 171
L59:
	.dbline 171
	mov R2,R10
	clr R3
	mov R24,R2
	subi R24,1
	mov R10,R24
	tst R2
	brne L58
	.dbline 172
L55:
	.dbline 168
	inc R22
L57:
	.dbline 168
	cpi R22,10
	brlo L54
	.dbline 173
L51:
	.dbline 166
	inc R20
L53:
	.dbline 166
	cp R20,R16
	brlo L50
	.dbline -2
L49:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r j 22 c
	.dbsym r k 10 c
	.dbsym r ticks 16 c
	.dbend
	.dbfunc e c_wd _c_wd fV
	.even
_c_wd::
	.dbline -1
	.dbline 178
; 			while(k--);	//about 100us
;   		}
; 	}
;   }
; 
; 
; void c_wd(void)
; {
	.dbline 179
; 	SETBIT(PORTC, BIT1);
	sbi 0x15,1
	.dbline 180
; 	NOP();
	nop
	.dbline 181
; 	NOP();
	nop
	.dbline 182
; 	CLEARBIT(PORTC, BIT1);
	cbi 0x15,1
	.dbline -2
L61:
	.dbline 0 ; func end
	ret
	.dbend
	.area bss(ram, con, rel)
	.dbfile D:\ATP_AVR\Public.c
_RECORD::
	.blkb 1048
	.dbsym e RECORD _RECORD A[1048:1048]c
_ucChannelConfig::
	.blkb 80
	.dbsym e ucChannelConfig _ucChannelConfig A[80:80]c
_ucSystemConfig::
	.blkb 80
	.dbsym e ucSystemConfig _ucSystemConfig A[80:80]c
_TREC::
	.blkb 4
	.dbsym e TREC _TREC A[4:4]c
_FTREC::
	.blkb 4
	.dbsym e FTREC _FTREC A[4:4]c
_ucNowValuePerCOM::
	.blkb 8
	.dbsym e ucNowValuePerCOM _ucNowValuePerCOM A[8:8]c
_ucNowValuePer::
	.blkb 8
	.dbsym e ucNowValuePer _ucNowValuePer A[8:8]c
_ucDTTime::
	.blkb 6
	.dbsym e ucDTTime _ucDTTime A[6:6]c
_ucLastFlashTime::
	.blkb 6
	.dbsym e ucLastFlashTime _ucLastFlashTime A[6:6]c
_ucNowTime::
	.blkb 6
	.dbsym e ucNowTime _ucNowTime A[6:6]c
_ucUpDownTime::
	.blkb 12
	.dbsym e ucUpDownTime _ucUpDownTime A[12:12]c

⌨️ 快捷键说明

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