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

📄 jiaozhun.s

📁 工业开关量检测模块的原代码,带断线检测功能
💻 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 + -