音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

哪位大俠能給個PID算法的匯編程序,小弟不勝感激!

作者:ptj_wing 欄目:單片機
哪位大俠能給個PID算法的匯編程序,小弟不勝感激!
最近在做一個溫度控制器,想用PID控制.在網(wǎng)上找PID算法程序找了很久,始終找不到合適的源程序.希望大俠們,發(fā)揚中華發(fā)族樂于助人的優(yōu)良傳統(tǒng),幫幫我們這些初學(xué)者吧.



.............................................................................................................



幫助須要幫助的人就是對曾經(jīng)幫助過你的人的最好的回報.



人人為我,我為人人!



.............................................................................................................


2樓: >>參與討論
ptj_wing
不要沉!
不要沉!

3樓: >>參與討論
ptj_wing
還是沒人??
..

4樓: >>參與討論
yumm99
找本<<自動控制原理看看吧>>
 
5樓: >>參與討論
ptj_wing
RE:找本<<自動控制原理看看吧>>
只能這樣了~~看來這個論壇的人對初哥是不屑的了

6樓: >>參與討論
xieyuanbin
這種源程序給你也沒用。
這種東西還是要根據(jù)實際情況調(diào)整,算法各不相同。

7樓: >>參與討論
myymichael
中華發(fā)族??
中華民族

我是來灌水的

8樓: >>參與討論
ztb
提這樣的問題,這種要求,通篇錯別字。汗顏!
 
9樓: >>參與討論
ptj_wing
我打字很差,請不要見怪....
 
10樓: >>參與討論
ptj_wing
找到一個關(guān)于PID的程序了,也發(fā)出來讓大家看看
    積分分離PID控制算法程序
;**********P10,積分分離PID控制算法程序 ********

;T、TD、TI、KP依次從30H,33H,36H,39H開始。
;A,B,C,A',的值依次存在BLOCK1,BLOCK2,BLOCK3 BLOCK4 的地址里
;這里B'與C值相同
; 這里R(k)給的是定值

ORG 0000H
E EQU 20H ; 一閾值
GK EQU 23H ;G(k)
GK1 EQU 26H ;G(k-1)
FK EQU 29H ;F(k)
FK1 EQU 2CH ;F(k-1)
BLOCK1 EQU 50H ;A
BLOCK2 EQU 53H ;B
BLOCK3 EQU 56H ;C
BLOCK4 EQU 5AH ;A'
UK EQU 5DH ;存放結(jié)果
BUFF EQU 43H ;暫存區(qū)
BUFF1 EQU 46H
BUFF2 EQU 49H
BUFFR0 EQU 4CH
REC EQU 63H ;采樣次數(shù)
RK EQU 66H ;R(k)
CK EQU 69H ;采樣數(shù)據(jù)始址
EK EQU 6CH ;存放偏差值E(k)的始址
EK1 EQU 70H ;存放E(k-1)的始址

TEST: MOV RK,#01H ;常數(shù)Rk 1.25的BCD碼浮點數(shù)
MOV RK+1,#12H
MOV RK+2,#50H
; MOV E,#7EH ;設(shè)定一閾值0.001的BCD碼浮點數(shù)
; MOV E+1,#10H
; MOV E+2,#00H
MOV E,#00H ;閾值為0.3
MOV E+1,#30H
MOV E+2,#00H
MOV 3CH,#01H ;常數(shù)1的BCD碼浮點數(shù)
MOV 3DH,#10H
MOV 3EH,#00H
MOV 40H,#01H ;常數(shù)2的BCD碼浮點數(shù)
MOV 41H,#20H
MOV 42H,#00H
MOV 30H,#01H ;T 2.34的BCD 碼浮點數(shù)
MOV 31H,#23H
MOV 32H,#40H
MOV 33H,#01H ;Td 3.54的BCD碼浮點數(shù)
MOV 34H,#35H
MOV 35H,#40H
MOV 36H,#01H ;Ti 1.12的BCD碼浮點數(shù)
MOV 37H,#11H
MOV 38H,#20H
MOV 39H,#01H ;Kp 1.25的BCD碼浮點數(shù)
MOV 3AH,#12H
MOV 3BH,#50H
MOV R0,#E ; 將其轉(zhuǎn)換成二進制浮點操作數(shù)
LCALL BTOF
MOV R0,#RK
LCALL BTOF
MOV R0,#3CH
LCALL BTOF
MOV R0,#40H
LCALL BTOF
MOV R0,#39H
LCALL BTOF
MOV R0,#36H
LCALL BTOF ;將其轉(zhuǎn)換成二進制浮點操作數(shù)
MOV R0,#33H ;指向BCD碼浮點操作數(shù)Td
LCALL BTOF ;將其轉(zhuǎn)換成二進制浮點操作數(shù)
MOV R0,#30H ;指向BCD碼浮點操作數(shù)T
LCALL BTOF ;將其轉(zhuǎn)換成二進制浮點操作數(shù)
MOV R1, #BUFFR0 ;保存30H中的值 即T值
LCALL FMOVR0
MOV R1, #36H ;計算A值(1+T/Ti+Td/T).Kp
LCALL FDIV
MOV R1,#3CH ;常數(shù)1
LCALL FADD
MOV R0,#33H ;保存33H中的值
MOV R1,#BUFF
LCALL FMOVR0
MOV R1,#BUFFR0
LCALL FDIV
MOV R1,#30H ;30H里存的是T/Ti+1
LCALL FADD
MOV R1,#39H
LCALL FMUL
MOV R1 ,#BLOCK1 ;將結(jié)果保存在BLOCK1中
LCALL FMOVR0
MOV R1,#BUFFR0 ;30H恢復(fù)原值
MOV R0,#30H
LCALL FMOV
MOV R1,#BUFF ;33H恢復(fù)原值
MOV R0,#33H
LCALL FMOV
MOV R0,#40H ;計算B的值Kp.(1+2.Td/T)
MOV R1,#33H
LCALL FMUL
MOV R1,#30H
LCALL FDIV
MOV R1,#3CH
LCALL FADD
MOV R1,#39H
LCALL FMUL
MOV R1,#BLOCK2 ;保存B值到BLOCK2中
LCALL FMOVR0
MOV R0,#39H ;計算C的值Kp.Td/T
MOV R1,#33H
LCALL FMUL
MOV R1,#30H
LCALL FDIV
MOV R1,#BLOCK3 ;保存C值到BLOCK3中
LCALL FMOVR0
MOV R0,#33H ;計算A',保存33H中的值
MOV R1,#BUFFR0
LCALL FMOVR0
MOV R1,#30H
LCALL FDIV
MOV R1,#3CH
LCALL FADD
MOV R1,#39H
LCALL FMUL
MOV R1,#BLOCK4 ;保存A'值到BLOCK4中
LCALL FMOVR0
MOV R1,#BUFFR0 ;恢復(fù)33H中的值
LCALL FMOV
MOV R0,#EK1 ;將EK1,F(xiàn)K1,GK1設(shè)初值0
LCALL FCLR
MOV R0,#FK1
LCALL FCLR
MOV R0,#GK1
LCALL FCLR
MOV REC,#04H ;設(shè)置采樣次數(shù)
LOOP: MOV CK,#01H ;采樣數(shù)據(jù)暫時給了一個定值
MOV CK+1,#10H
MOV CK+2,#00H
MOV R0,#CK
LCALL BTOF
MOV R0,#RK ;保存R(k)中的值
MOV R1,#BUFFR0
LCALL FMOVR0
MOV R1,#CK
LCALL FSUB ;計算R(k)-C(k)的值送給E(k)
MOV R1,#EK
LCALL FMOVR0
MOV R1,#BUFFR0
LCALL FMOV ;恢復(fù)R(K)的值,釋放、BUFFR0
MOV R0,#BUFFR0 ;EK存到BUFFR0
MOV R1,#EK
LCALL FMOV
LCALL FABS ;求EK的絕對值
MOV R1,#E ;判斷EK的絕對值與E的大小
LCALL FCMP
JC PID ;EK<=E時轉(zhuǎn)PID控制程序否則PD程序
CJNE A,#00H,PD
LJMP PID

PD: MOV R0,#BLOCK4
MOV R1,#BUFFR0 ;保存A'的值
LCALL FMOVR0
MOV R1,#EK
LCALL FMUL
MOV R1,#FK1
LCALL FSUB
MOV R1,#UK ;結(jié)果存在UK中
LCALL FMOVR0
MOV R1,#BUFFR0 ;恢復(fù)A'
LCALL FMOV
MOV R0,#BLOCK3 ;計算B'.E(k)這里B'值與C值同
MOV R1,#BUFFR0 ;保存B'
LCALL FMOVR0
MOV R1,#EK
LCALL FMUL
MOV R1,#FK ;B'.EK存到FK中
LCALL FMOVR0
MOV R1,#BUFFR0 ;恢復(fù)B'
LCALL FMOV
LJMP OUT

PID: MOV R0,#BLOCK1 ;計算A.E(k)+G(K-1)
MOV R1,#BUFFR0 ;保存A
LCALL FMOVR0
MOV R1,#EK
LCALL FMUL
MOV R1,#GK1
LCALL FADD
MOV R1,#UK ;計算結(jié)果存入UK中
LCALL FMOVR0
MOV R1,#BUFFR0 ;恢復(fù)A值
LCALL FMOV
MOV R0,#BLOCK2 ;計算U(k)-B.E(k)+C.E(k-1)
MOV R1,#BUFFR0 ;保存B到BUFFR0
LCALL FMOVR0
MOV R1,#EK
LCALL FMUL
MOV R1,#BUFF ;B.E(k)保存到BUFF
LCALL FMOVR0
MOV R0,#UK
MOV R1,#BUFF1 ;UK保存到BUFF1
LCALL FMOVR0
MOV R1,#BUFF
LCALL FSUB
MOV R1,#BUFF ;U(k)-BE(k)保存到BUFF
LCALL FMOVR0
MOV R0,#BLOCK3 ;計算C.E(k-1)
MOV R1,#BUFF2 ;保存C到BUFF2
LCALL FMOVR0
MOV R1,#EK1
LCALL FMUL
MOV R1,#BUFF
LCALL FADD
MOV R1,#GK ;U(k)-BE(k)+CE(k-1)保存到GK
LCALL FMOVR0
MOV R1,#BUFF2 ;恢復(fù)C值釋放BUFF2
LCALL FMOV
MOV R0,#UK ;恢復(fù)UK值釋放BUFF1
MOV R1,#BUFF1
LCALL FMOV
MOV R0,#BLOCK2 ;恢復(fù)B
MOV R1,#BUFFR0
LCALL FMOV
OUT: MOV R0,#GK1 ;G(k)-->G(k-1)
MOV R1,#GK
LCALL FMOV
MOV R0,#FK1 ;F(k)-->F(K-1)
MOV R1,#FK
LCALL FMOV
MOV R0,#EK1 ;E(K)-->E(K-1)
MOV R1,#EK
LCALL FMOV
MOV R0,#UK ;UK轉(zhuǎn)換成BCD碼浮點數(shù)輸出
LCALL FTOB
LCALL DELAY ;等待采樣時刻
DJNZ REC,NEXT1
SJMP $
NEXT1: LJMP LOOP
DELAY: MOV R7,#02H
DELAY1: MOV R6,#0FFH
DELAY2: DJNZ R6,DELAY2
DJNZ R7,DELAY1
RET


11樓: >>參與討論
ptj_wing
TO:xieyuanbin
看了一個樣本程序,了解它的基本架構(gòu),要用時再改引些參數(shù)就可以了..
我想學(xué)其它的程序也一樣吧,像那些浮點運算子程序之類的,你總不參考別人的程序就埋頭設(shè)計一個吧.要真有這樣的人,我只能說:佩服!

12樓: >>參與討論
ptj_wing
在這里衷心地謝謝所有跟帖的人!
...

13樓: >>參與討論
ghost8205

請問樓主能留下個聯(lián)系方式否

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
那位大蝦用過TEA5767(數(shù)字收音芯片)??
怎么用MCU讀SIM Card?
AT89C51SND1C在讀寫內(nèi)部2K擴展RAM的時候,是否產(chǎn)生RD,WR信號
請教TCP/IP協(xié)議移植問題
求1.35豪亨天線繞制方法
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號