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

📄 pid.s

📁 本设计以ATMEL公司生产的AT90S8515作为控制核心
💻 S
字号:
	.module PID.c
	.area text(rom, con, rel)
	.dbfile D:\hujie\PID.c
	.dbfunc e PID _PID fV
;           flag -> R12,R13
;         newDAC -> y+0
;             ee -> R10,R11
	.even
_PID::
	rcall push_gset4
	mov R10,R16
	mov R11,R17
	sbiw R28,4
	.dbline -1
	.dbline 11
; // PID.c
; // 8/7/2005 written by MrLiu
; //
; 
; #include <io8515v.h>
; #include "PID.h"
; #include "main.h" 
; #define PID_EE_VALUE_MAX   100
; 
; void PID(int ee)
; {
	.dbline 13
;  	long	newDAC;
; 	int		flag=1;
	ldi R24,1
	ldi R25,0
	mov R12,R24
	mov R13,R25
	.dbline 15
; 	
; 	if(ee>PID_EE_VALUE_MAX) ee=PID_EE_VALUE_MAX;
	ldi R24,100
	cp R24,R10
	cpc R25,R11
	brge L2
	.dbline 15
	mov R10,R24
	mov R11,R25
L2:
	.dbline 16
; 	if(ee<-PID_EE_VALUE_MAX) ee=-PID_EE_VALUE_MAX;
	mov R24,R10
	mov R25,R11
	cpi R24,156
	ldi R30,255
	cpc R25,R30
	brge L4
	.dbline 16
	ldi R24,-100
	ldi R25,-1
	mov R10,R24
	mov R11,R25
L4:
	.dbline 17
; 	newDAC=(long)DAC-((long)ee<<2);
	ldi R24,2
	ldi R25,0
	mov R2,R10
	mov R3,R11
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	st -y,R24
	mov R16,R2
	mov R17,R3
	mov R18,R4
	mov R19,R5
	rcall lsl32
	lds R2,_DAC
	lds R3,_DAC+1
	clr R4
	clr R5
	sub R2,R16
	sbc R3,R17
	sbc R4,R18
	sbc R5,R19
	mov R30,R28
	mov R31,R29
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 18
; 	if (newDAC>65535) DAC=65535;
	ldi R20,255
	ldi R21,255
	ldi R22,0
	ldi R23,0
	mov R30,R28
	mov R31,R29
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	cp R20,R2
	cpc R21,R3
	cpc R22,R4
	cpc R23,R5
	brge L6
	.dbline 18
	ldi R24,65535
	ldi R25,255
	sts _DAC+1,R25
	sts _DAC,R24
	rjmp L7
L6:
	.dbline 19
; 	else if (newDAC<0) DAC=0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	mov R30,R28
	mov R31,R29
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brge L8
	.dbline 19
	clr R2
	clr R3
	sts _DAC+1,R3
	sts _DAC,R2
	rjmp L9
L8:
	.dbline 20
; 	else DAC=newDAC&0x0ffff;
	ldi R20,255
	ldi R21,255
	ldi R22,0
	ldi R23,0
	mov R30,R28
	mov R31,R29
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	and R2,R20
	and R3,R21
	and R4,R22
	and R5,R23
	sts _DAC+1,R3
	sts _DAC,R2
L9:
L7:
	.dbline -2
	.dbline 21
; }
L1:
	adiw R28,4
	rcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r flag 12 I
	.dbsym l newDAC 0 L
	.dbsym r ee 10 I
	.dbend

⌨️ 快捷键说明

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