在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機的PD控溫程序

            51單片機的PD控溫程序

            作者: 時間:2012-10-12 來源:網(wǎng)絡(luò) 收藏

            ;此控溫程序是采用方式,入口在 : BLXS 最大取值 255 WFXS 最大取值 255
            ; SDWDHH,SDWDHL 設(shè)定溫度的16進制高低字節(jié)存儲地址
            ; WDZHH,WDZHL 當前溫度的16進制高低字節(jié)存儲地址
            ;
            ; 出口在: ZSJCSH 加熱時間
            ; ZSJCSL 不加熱時間
            ;
            ; ZSJCSH+ZSJCSL=200 則一個控溫周期= 200*基本定時周期

            BCPCHH EQU 30H
            BCPCHL EQU 31H
            BLCSH EQU 32H
            BLCSL EQU 33H
            BLXS EQU 34H
            WFXS EQU 35H
            PCWFH EQU 36H
            PCWFL EQU 37H
            SCPCHH EQU 38H
            SCPCHL EQU 39H
            SDWDHH EQU 3AH
            SDWDHL EQU 3BH
            WDZHH EQU 3CH
            WDZHL EQU 3DH
            WFCSH EQU 3EH
            WFCSL EQU 3FH
            ZSJCSH EQU 40H
            ZSJCSL EQU 41H


            BLPCFH BIT 00H
            SCBLPCFH BIT 01H
            WFPCFH BIT 02H

            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            ;PID控溫子程序需定義RAM SDWDHH SDWDHL WDZHL WDZHH BCPCHL BCPCHH SCPCHH SCPCHL
            ; BLXS WFXS PCWFH PCWFL WFCSL WFCSH BLCSL BLCSH ZSJCSH ZSJCSL
            ;
            ; 標志位 BLPCFH SCBLPCFH WFPCFH

            PDJS: ;計算e(t) 值
            CLR C
            MOV A,SDWDHL ;sdwdhh,sdwdhl 存設(shè)定溫度帶一位小數(shù)
            MOV R7,WDZHL
            SUBB A,R7
            MOV BCPCHL,A ;存本次偏差低8位
            MOV A,SDWDHH
            MOV R7,WDZHH
            SUBB A,R7
            MOV BCPCHH,A ;存本次偏差高8位
            JC BOOLL2
            CLR BLPCFH ;清比例偏差符號
            BOOLL3: JB BLPCFH,JSSZ3 ;符號位為0表示正值,為1表示負值 本次比例偏差符號 為負不加熱退出
            JB SCBLPCFH,JSSZ2 ;符號位為0表示正值,為1表示負值 上次比例偏差符號
            JMP JSSZ1
            BOOLL2:
            SETB BLPCFH
            CLR C
            MOV A,#0FFH
            SUBB A,BCPCHL ;本次溫度大于設(shè)定溫度,求補锝實際數(shù)值 e(t)
            MOV BCPCHL,A
            MOV A,#0FFH
            SUBB A,BCPCHH
            MOV BCPCHH,A
            INC BCPCHL
            JMP BOOLL3

            JSSZ3: MOV A,BCPCHL
            MOV SCPCHL,A
            MOV A,BCPCHH
            MOV SCPCHH,A
            JB BLPCFH,MLLP1232 ;將本次偏差數(shù)值與符號賦給上次保存地址
            CLR SCBLPCFH
            JMP fool2
            MLLP1232:
            SETB SCBLPCFH
            jmp fool2

            JSSZ2: CLR C ;e(t)>0 e(t-1) 0
            MOV A,BCPCHL ;計算e(t)-e(t-1) 的結(jié)果,存入PCWFL,PCWFH中
            ADDC A,SCPCHL
            MOV PCWFL,A
            MOV A,BCPCHH
            ADDC A,SCPCHH
            MOV PCWFH,A
            CLR WFPCFH
            JMP AOOL1

            JSSZ1: CLR C ;到此為止,本次e(t) 值已算出,并有符號位,可判正負%%%%%%%%%%%%%%%%%%%%%%%
            MOV A,BCPCHL ;計算e(t)-e(t-1) 的結(jié)果,存入PCWFL,PCWFH中
            SUBB A,SCPCHL ;e(t) e(t-1) 都為正值
            MOV PCWFL,A
            MOV A,BCPCHH
            SUBB A,SCPCHH
            MOV PCWFH,A
            CLR WFPCFH
            JNC AOOL1 ;本次偏差>上次偏差,轉(zhuǎn)走
            SETB WFPCFH ;微分偏差符號置位
            CLR C
            MOV A,#0FFH
            SUBB A,PCWFL ;本次偏差上次偏差,求補锝實際數(shù)值
            MOV PCWFL,A
            MOV A,#0FFH
            SUBB A,PCWFH
            MOV PCWFH,A
            INC PCWFL
            AOOL1:
            MOV A,BCPCHL
            MOV SCPCHL,A
            MOV A,BCPCHH
            MOV SCPCHH,A
            JB BLPCFH,MLLP1 ;將本次偏差數(shù)值與符號賦給上次保存地址
            CLR SCBLPCFH
            JMP MLLP2
            MLLP1:
            SETB SCBLPCFH

            MLLP2:
            MOV R2,BCPCHH
            MOV R3,BCPCHL
            MOV R4,#0 ;求kp*e(t)
            MOV R5,#0
            MOV R6,#0
            MOV R7,BLXS
            CALL MULD
            MOV BLCSL,R5 ;結(jié)果送到比例常數(shù)存儲
            MOV BLCSH,R4
            MOV R3,PCWFL
            MOV R2,PCWFH
            MOV R4,#0
            MOV R5,#0
            MOV R6,#0
            MOV R7,WFXS
            CALL MULD ;求kd*(e(t)-e(t-1))
            MOV WFCSL,R5
            MOV WFCSH,R4 ;結(jié)果送到微分常數(shù)存儲
            JB BLPCFH,FOOL2 ;比例相為負,不計算結(jié)果,直接賦pouth=#00 poutl=#200,退出中斷
            JB WFPCFH,AOOL2 ;微分項為負轉(zhuǎn)走
            CLR C
            MOV A,BLCSL
            ADD A,WFCSL ;KP>0,KD>0
            MOV ZSJCSL,A ;將結(jié)果存入總時間常數(shù)中 kp*e(t)+kd*(e(t)-e(t-1))
            MOV A,BLCSH
            ADDC A,WFCSH
            MOV ZSJCSH,A
            AOOL4:
            CLR C
            MOV A,ZSJCSL
            SUBB A,#0D0H
            MOV A,ZSJCSH
            SUBB A,#07H
            ;為什么是小于2000而不是200呢,因為進行偏差計算時時帶一位小數(shù)的擴大了10倍
            JC AOOL3 ;有借位,說明總時間常數(shù)《2000h,數(shù)據(jù)沒有溢出繼續(xù)
            MOV ZSJCSL,#0D0H
            MOV ZSJCSH,#07H ;無借位說明總時間常數(shù)>2000h,數(shù)據(jù)溢出賦最大值2000h繼續(xù)

            JMP AOOL3

            FOOL2:
            MOV ZSJCSL,#0 ;比例項小于微分項不加熱
            MOV ZSJCSH,#0
            JMP AOOL3

            AOOL2:
            CLR C
            MOV A,BLCSL
            SUBB A,WFCSL ;KP>0,KD0
            MOV ZSJCSL,A ;將結(jié)果存入總時間常數(shù)中 kp*e(t)-kd*(e(t)-e(t-1))
            MOV A,BLCSH
            SUBB A,WFCSH
            MOV ZSJCSH,A
            JNC AOOL4 ;KP>KD
            MOV ZSJCSL,#0 ;比例項小于微分項不加熱
            MOV ZSJCSH,#0
            JMP AOOL3
            ;;;;;;;;;;;;;;;;;;;;;;;;;;;;以下程序的4舍5入是為了增加精度,否則總時間常數(shù)可以直接除以10得POUTH值;;;;;;;;
            AOOL3: MOV R6,ZSJCSH
            MOV R7,ZSJCSL ;總數(shù)據(jù)常數(shù)里面存的是16進制數(shù)
            MOV R3,#0
            MOV R4,#0
            MOV R5,#0
            CALL HB2 ;換算成bcd碼出口在r3,r4,r5中
            MOV A,R5
            ANL A,#0FH ;取小數(shù)位
            CLR C
            SUBB A,#5
            JC PPPOOP1 ;小數(shù)位5,轉(zhuǎn)走
            MOV A,R5
            ANL A,#0F0H
            SWAP A
            INC A
            PPPOOP2:
            MOV R5,A ;小數(shù)位>5,個位數(shù)加1實現(xiàn)四舍五入
            MOV A,R4
            ANL A,#0FH
            SWAP A
            ADD A,R5
            MOV R3,A
            MOV A,R4
            ANL A,#0F0H
            SWAP A
            MOV R2,A
            CALL BH2
            mov ZSJCSH,r3 ;MOV POUTH,R3 為了節(jié)省存儲器此處用zsjcsh,zsjcsl
            MOV A,#200 ;代替pouth,poutl
            SUBB A,R3
            mov ZSJCSl,a ;MOV POUTL,A
            RET

            PPPOOP1: MOV A,R5
            ANL A,#0F0H
            SWAP A
            JMP PPPOOP2


            上一頁 1 2 下一頁

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉