?? public.s
字號(hào):
.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];
;
;
;
; //計(jì)算該時(shí)間與2000-01-01 00:00:00 的間隔秒數(shù)
; unsigned long count_seconds(unsigned char * nyrsfm)
; {
.dbline 42
; unsigned char ucN,ucY,ucR,ucS,ucF,ucM;//年月日時(shí)分秒
; 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的秒數(shù)
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的秒數(shù)
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
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -