AN908
DS00908A-page 64
2004 Microchip Technology Inc.
mov.w
[PI_qOutMin],OutW1
cp
UnlimitW6,OutW1
bra
LE,jPI5
; U < Outmin; OutW1 = Outmin
mov.w
UnlimitW6,OutW1
; OutW1 = U
jPI5:
mov.w
OutW1,[PI_qOut]
;; Ki * Err
mov.w
[PI_qKi],WorkW5
mpy
ErrW4*WorkW5,A
;; Exc = U - Out
sub.w
UnlimitW6,OutW1,UnlimitW6
;; Ki * Err - Kc * Exc
mov.w
[PI_qKc],WorkW5
msc
WorkW5*UnlimitW6,A
;; Sum = Sum + Ki * Err - Kc * Exc
add
A
sac
A,[++BaseW0]
; store Sum
mov.w ACCALL,WorkW5
mov.w WorkW5,[--BaseW0]
return
.end