📄 jiaozhun.s
字号:
.module jiaozhun.c
.area text(rom, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\电流CAN网\jiaozhun.c
.dbfunc e jiaozhun _jiaozhun fV
; F_Ref -> y+24
; Z_Ref -> y+20
; Jiao_Flag -> R10
; Fu_Data -> y+16
; Ze_Data -> y+12
; F_Data -> y+8
; Z_Data -> y+4
; td -> y+0
.even
_jiaozhun::
xcall push_gset3
sbiw R28,28
.dbline -1
.dbline 7
; #include "main.h"
;
; extern float x0,k0;
; extern unsigned char Pass_Flag;
;
; void jiaozhun(void)
; {
.dbline 12
; long Ze_Data,Fu_Data,td;
; float Z_Ref,F_Ref,Z_Data,F_Data;
; unsigned char Jiao_Flag;
;
; asm("nop");
nop
.dbline 13
; asm("nop");
nop
.dbline 14
; Jiao_Flag = EEPROMread(0x09);
ldi R16,9
ldi R17,0
xcall _EEPROMread
mov R10,R16
.dbline 15
; if(Jiao_Flag == 0x5a)
cpi R16,90
breq X0
xjmp L8
X0:
.dbline 16
; {
.dbline 17
; Pass_Flag = 0x01;
ldi R24,1
sts _Pass_Flag,R24
.dbline 18
; Ze_Data = EEPROMread(0x01); //读取EEROM的数据 计算零点的基准值
ldi R16,1
ldi R17,0
xcall _EEPROMread
mov R2,R16
clr R3
clr R4
clr R5
std y+12,R2
std y+13,R3
std y+14,R4
std y+15,R5
.dbline 19
; Ze_Data = Ze_Data<<24;
ldi R24,24
ldi R25,0
ldd R16,y+12
ldd R17,y+13
ldd R18,y+14
ldd R19,y+15
st -y,R24
xcall lsl32
std y+12,R16
std y+13,R17
std y+14,R18
std y+15,R19
.dbline 20
; td = EEPROMread(0x02);
ldi R16,2
ldi R17,0
xcall _EEPROMread
mov R2,R16
clr R3
clr R4
clr R5
std y+0,R2
std y+1,R3
std y+2,R4
std y+3,R5
.dbline 21
; td = td<<16;
ldd R2,y+0
ldd R3,y+1
ldd R4,y+2
ldd R5,y+3
movw R4,R2
clr R2
clr R3
std y+0,R2
std y+1,R3
std y+2,R4
std y+3,R5
.dbline 22
; Ze_Data +=td;
ldd R2,y+0
ldd R3,y+1
ldd R4,y+2
ldd R5,y+3
ldd R6,y+12
ldd R7,y+13
ldd R8,y+14
ldd R9,y+15
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
std y+12,R6
std y+13,R7
std y+14,R8
std y+15,R9
.dbline 23
; td = EEPROMread(0x03);
ldi R16,3
ldi R17,0
xcall _EEPROMread
mov R2,R16
clr R3
clr R4
clr R5
std y+0,R2
std y+1,R3
std y+2,R4
std y+3,R5
.dbline 24
; td = td<<8;
ldi R24,8
ldi R25,0
ldd R16,y+0
ldd R17,y+1
ldd R18,y+2
ldd R19,y+3
st -y,R24
xcall lsl32
std y+0,R16
std y+1,R17
std y+2,R18
std y+3,R19
.dbline 25
; Ze_Data +=td;
ldd R2,y+0
ldd R3,y+1
ldd R4,y+2
ldd R5,y+3
ldd R6,y+12
ldd R7,y+13
ldd R8,y+14
ldd R9,y+15
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
std y+12,R6
std y+13,R7
std y+14,R8
std y+15,R9
.dbline 26
; td = EEPROMread(0x04);
ldi R16,4
ldi R17,0
xcall _EEPROMread
mov R2,R16
clr R3
clr R4
clr R5
std y+0,R2
std y+1,R3
std y+2,R4
std y+3,R5
.dbline 27
; Ze_Data +=td;
ldd R2,y+0
ldd R3,y+1
ldd R4,y+2
ldd R5,y+3
ldd R6,y+12
ldd R7,y+13
ldd R8,y+14
ldd R9,y+15
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
std y+12,R6
std y+13,R7
std y+14,R8
std y+15,R9
.dbline 28
; Pass_Flag = Pass_Flag<<1;
lds R2,_Pass_Flag
lsl R2
sts _Pass_Flag,R2
.dbline 29
; Z_Ref = Ze_Data/1000.0;
ldd R16,y+12
ldd R17,y+13
ldd R18,y+14
ldd R19,y+15
xcall long2fp
movw R2,R16
movw R4,R18
ldi R16,<L10
ldi R17,>L10
xcall lpm32
st -y,R19
st -y,R18
st -y,R17
st -y,R16
movw R16,R2
movw R18,R4
xcall fpdiv2
std y+20,R16
std y+21,R17
std y+22,R18
std y+23,R19
.dbline 30
; Z_Data = Z_Ref*VR;
ldi R16,<L11
ldi R17,>L11
xcall lpm32
movw R24,R28
adiw R24,20
st -y,R25
st -y,R24
xcall fpmule1
std y+4,R16
std y+5,R17
std y+6,R18
std y+7,R19
.dbline 31
; Pass_Flag = Pass_Flag<<1;
lds R2,_Pass_Flag
lsl R2
sts _Pass_Flag,R2
.dbline 32
; Z_Data = Z_Data/65535.0;
ldd R2,y+4
ldd R3,y+5
ldd R4,y+6
ldd R5,y+7
ldi R16,<L12
ldi R17,>L12
xcall lpm32
st -y,R19
st -y,R18
st -y,R17
st -y,R16
movw R16,R2
movw R18,R4
xcall fpdiv2
std y+4,R16
std y+5,R17
std y+6,R18
std y+7,R19
.dbline 33
; Z_Data = Z_Data*1000;
ldi R16,<L13
ldi R17,>L13
xcall lpm32
movw R24,R28
adiw R24,4
st -y,R25
st -y,R24
xcall fpmule1
std y+4,R16
std y+5,R17
std y+6,R18
std y+7,R19
.dbline 34
; Z_Data = Z_Data/Rref;
ldd R2,y+4
ldd R3,y+5
ldd R4,y+6
ldd R5,y+7
ldi R16,<L14
ldi R17,>L14
xcall lpm32
st -y,R19
st -y,R18
st -y,R17
st -y,R16
movw R16,R2
movw R18,R4
xcall fpdiv2
std y+4,R16
std y+5,R17
std y+6,R18
std y+7,R19
.dbline 36
;
; asm("nop");
nop
.dbline 37
; asm("nop");
nop
.dbline 38
; if(Pass_Flag !=0x04)
lds R24,_Pass_Flag
cpi R24,4
breq L15
.dbline 39
; RESET;
jmp 0x000
L15:
.dbline 41
;
; Pass_Flag = 0x01;
ldi R24,1
sts _Pass_Flag,R24
.dbline 42
; Fu_Data = EEPROMread(0x05); //读取EEROM的数据,计算满量程的基准值
ldi R16,5
ldi R17,0
xcall _EEPROMread
mov R2,R16
clr R3
clr R4
clr R5
std y+16,R2
std y+17,R3
std y+18,R4
std y+19,R5
.dbline 43
; Fu_Data = Fu_Data<<24;
ldi R24,24
ldi R25,0
ldd R16,y+16
ldd R17,y+17
ldd R18,y+18
ldd R19,y+19
st -y,R24
xcall lsl32
std y+16,R16
std y+17,R17
std y+18,R18
std y+19,R19
.dbline 44
; td = EEPROMread(0x06);
ldi R16,6
ldi R17,0
xcall _EEPROMread
mov R2,R16
clr R3
clr R4
clr R5
std y+0,R2
std y+1,R3
std y+2,R4
std y+3,R5
.dbline 45
; td = td<<16;
ldd R2,y+0
ldd R3,y+1
ldd R4,y+2
ldd R5,y+3
movw R4,R2
clr R2
clr R3
std y+0,R2
std y+1,R3
std y+2,R4
std y+3,R5
.dbline 46
; Fu_Data +=td;
ldd R2,y+0
ldd R3,y+1
ldd R4,y+2
ldd R5,y+3
ldd R6,y+16
ldd R7,y+17
ldd R8,y+18
ldd R9,y+19
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
std y+16,R6
std y+17,R7
std y+18,R8
std y+19,R9
.dbline 47
; td = EEPROMread(0x07);
ldi R16,7
ldi R17,0
xcall _EEPROMread
mov R2,R16
clr R3
clr R4
clr R5
std y+0,R2
std y+1,R3
std y+2,R4
std y+3,R5
.dbline 48
; td = td<<8;
ldi R24,8
ldi R25,0
ldd R16,y+0
ldd R17,y+1
ldd R18,y+2
ldd R19,y+3
st -y,R24
xcall lsl32
std y+0,R16
std y+1,R17
std y+2,R18
std y+3,R19
.dbline 49
; Fu_Data +=td;
ldd R2,y+0
ldd R3,y+1
ldd R4,y+2
ldd R5,y+3
ldd R6,y+16
ldd R7,y+17
ldd R8,y+18
ldd R9,y+19
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
std y+16,R6
std y+17,R7
std y+18,R8
std y+19,R9
.dbline 50
; td = EEPROMread(0x08);
ldi R16,8
ldi R17,0
xcall _EEPROMread
mov R2,R16
clr R3
clr R4
clr R5
std y+0,R2
std y+1,R3
std y+2,R4
std y+3,R5
.dbline 51
; Fu_Data +=td;
ldd R2,y+0
ldd R3,y+1
ldd R4,y+2
ldd R5,y+3
ldd R6,y+16
ldd R7,y+17
ldd R8,y+18
ldd R9,y+19
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
std y+16,R6
std y+17,R7
std y+18,R8
std y+19,R9
.dbline 52
; Pass_Flag = Pass_Flag<<1;
lds R2,_Pass_Flag
lsl R2
sts _Pass_Flag,R2
.dbline 53
; F_Ref = Fu_Data/1000.0;
ldd R16,y+16
ldd R17,y+17
ldd R18,y+18
ldd R19,y+19
xcall long2fp
movw R2,R16
movw R4,R18
ldi R16,<L10
ldi R17,>L10
xcall lpm32
st -y,R19
st -y,R18
st -y,R17
st -y,R16
movw R16,R2
movw R18,R4
xcall fpdiv2
std y+24,R16
std y+25,R17
std y+26,R18
std y+27,R19
.dbline 54
; F_Data = F_Ref*VR;
ldi R16,<L11
ldi R17,>L11
xcall lpm32
movw R24,R28
adiw R24,24
st -y,R25
st -y,R24
xcall fpmule1
std y+8,R16
std y+9,R17
std y+10,R18
std y+11,R19
.dbline 55
; F_Data = F_Data/65535.0;
ldd R2,y+8
ldd R3,y+9
ldd R4,y+10
ldd R5,y+11
ldi R16,<L12
ldi R17,>L12
xcall lpm32
st -y,R19
st -y,R18
st -y,R17
st -y,R16
movw R16,R2
movw R18,R4
xcall fpdiv2
std y+8,R16
std y+9,R17
std y+10,R18
std y+11,R19
.dbline 56
; Pass_Flag = Pass_Flag<<1;
lds R2,_Pass_Flag
lsl R2
sts _Pass_Flag,R2
.dbline 57
; F_Data = F_Data*1000;
ldi R16,<L13
ldi R17,>L13
xcall lpm32
movw R24,R28
adiw R24,8
st -y,R25
st -y,R24
xcall fpmule1
std y+8,R16
std y+9,R17
std y+10,R18
std y+11,R19
.dbline 58
; F_Data = F_Data/Rref;
ldd R2,y+8
ldd R3,y+9
ldd R4,y+10
ldd R5,y+11
ldi R16,<L14
ldi R17,>L14
xcall lpm32
st -y,R19
st -y,R18
st -y,R17
st -y,R16
movw R16,R2
movw R18,R4
xcall fpdiv2
std y+8,R16
std y+9,R17
std y+10,R18
std y+11,R19
.dbline 60
;
; asm("nop");
nop
.dbline 61
; asm("nop");
nop
.dbline 62
; if(Pass_Flag !=0x04)
lds R24,_Pass_Flag
cpi R24,4
breq L17
.dbline 63
; RESET;
jmp 0x000
L17:
.dbline 65
ldd R2,y+4
ldd R3,y+5
ldd R4,y+6
ldd R5,y+7
sts _x0+1,R3
sts _x0,R2
sts _x0+2+1,R5
sts _x0+2,R4
.dbline 66
ldi R16,<L19
ldi R17,>L19
xcall lpm32
movw R2,R16
movw R4,R18
ldd R16,y+8
ldd R17,y+9
ldd R18,y+10
ldd R19,y+11
movw R24,R28
adiw R24,4
st -y,R25
st -y,R24
xcall fpsub1x
movw R16,R2
movw R18,R4
xcall fpdiv2
sts _k0+1,R17
sts _k0,R16
sts _k0+2+1,R19
sts _k0+2,R18
.dbline 67
nop
.dbline 68
nop
.dbline 69
L8:
.dbline -2
L7:
adiw R28,28
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym l F_Ref 24 D
.dbsym l Z_Ref 20 D
.dbsym r Jiao_Flag 10 c
.dbsym l Fu_Data 16 L
.dbsym l Ze_Data 12 L
.dbsym l F_Data 8 D
.dbsym l Z_Data 4 D
.dbsym l td 0 L
.dbend
.area lit(rom, con, rel)
L19:
.word 0x0,0x4180
L14:
.word 0x0,0x4248
L13:
.word 0x0,0x447a
L12:
.word 0xff00,0x477f
L11:
.word 0xc28f,0x3f95
L10:
.word 0x0,0x447a
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -