日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
PD控溫程序(匯編)
PD控溫程序(匯編)
 更新時間:2008-7-26 19:45:48  點擊數(shù):3
【字體: 字體顏色
此控溫程序是采用PD控溫方式,入口在 :     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,KD<0
                             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

 

 

;(21)標號: BH2 功能:雙字節(jié)BCD碼整數(shù)轉(zhuǎn)換成雙字節(jié)十六進制整數(shù)

;入口條件:待轉(zhuǎn)換的雙字節(jié)BCD碼整數(shù)在R2、R3中。
;出口信息:轉(zhuǎn)換后的雙字節(jié)十六進制整數(shù)仍在R2、R3中。
;影響資源:PSW、A、B、R2、R3、R4 堆棧需求: 4字節(jié)
BH2: MOV A,R3; ;將低字節(jié)轉(zhuǎn)換成十六進制
LCALL BCDH
MOV R3,A
MOV A,R2; ;將高字節(jié)轉(zhuǎn)換成十六進制
LCALL BCDH
MOV B,#100; ;擴大一百倍
MUL AB
ADD A,R3; ;和低字節(jié)按十六進制相加
MOV R3,A
CLR A
ADDC A,B
MOV R2,A
RET

;(20)標號:BCDH 功能:單字節(jié)BCD碼整數(shù)轉(zhuǎn)換成單字節(jié)十六進制整數(shù)

;入口條件:待轉(zhuǎn)換的單字節(jié)BCD碼整數(shù)在累加器A中。
;出口信息:轉(zhuǎn)換后的單字節(jié)十六進制整數(shù)仍在累加器A中。
;影響資源:PSW、A、B、R4 堆棧需求: 2字節(jié)
BCDH:            MOV B,#10H         ; ;分離十位和個位
                 DIV AB
                 MOV R4,B           ; ;暫存?zhèn)位
                 MOV B,#10          ; ;將十位轉(zhuǎn)換成十六進制
                 MUL AB
                 ADD A,R4           ; ;按十六進制加上個位
                 RET


;(17) 標號: HB2 功能:雙字節(jié)十六進制整數(shù)轉(zhuǎn)換成雙字節(jié)BCD碼整數(shù)

;入口條件:待轉(zhuǎn)換的雙字節(jié)十六進制整數(shù)在R6、R7中。
;出口信息:轉(zhuǎn)換后的三字節(jié)BCD碼整數(shù)在R3、R4、R5中。
;影響資源:PSW、A、R2~R7 堆棧需求: 2字節(jié)
HB2:             CLR A         ; ;BCD碼初始化
                 MOV R3,A
                 MOV R4,A
                 MOV R5,A
                 MOV R2,#10H          ; ;轉(zhuǎn)換雙字節(jié)十六進制整數(shù)
HB3:             MOV A,R7             ; ;從高端移出待轉(zhuǎn)換數(shù)的一位到CY中
                 RLC A
                 MOV R7,A
                 MOV A,R6
                 RLC A
                 MOV R6,A
                 MOV A,R5             ; ;BCD碼帶進位自身相加,相當于乘2
                 ADDC A,R5
                 DA A                 ; ;十進制調(diào)整
                 MOV R5,A
                 MOV A,R4
                 ADDC A,R4
                 DA A
                 MOV R4,A
                 MOV A,R3
                 ADDC A,R3
                 MOV R3,A             ; ;雙字節(jié)十六進制數(shù)的萬位數(shù)不超過6,不用調(diào)整
                 DJNZ R2,HB3           ; ;處理完16bit
                 RET

 

;(5) 標號: MULD 功能:雙字節(jié)二進制無符號數(shù)乘法
;
;入口條件:被乘數(shù)在R2、R3中,乘數(shù)在R6、R7中。
;出口信息:乘積在R2、R3、R4、R5中。
;影響資源:PSW、A、B、R2~R7 堆棧需求: 2字節(jié)
MULD:            MOV A,R3               ; ;計算R3乘R7
                 MOV B,R7
                 MUL AB
                 MOV R4,B                ; ;暫存部分積
                 MOV R5,A
                 MOV A,R3               ; ;計算R3乘R6
                 MOV B,R6
                 MUL AB
                 ADD A,R4               ; ;累加部分積
                 MOV R4,A
                 CLR A
                 ADDC A,B
                 MOV R3,A
                 MOV A,R2                ; ;計算R2乘R7
                 MOV B,R7
                 MUL AB
                 ADD A,R4               ; ;累加部分積
                 MOV R4,A
                 MOV A,R3
                 ADDC A,B
                 MOV R3,A
                 CLR A
                 RLC A
                 XCH A,R2               ; ;計算R2乘R6
                 MOV B,R6
                 MUL AB
                 ADD A,R3               ; ;累加部分積
                 MOV R3,A
                 MOV A,R2
                 ADDC A,B
                 MOV R2,A
                 RET

  • 上一篇: 匯編查表程序
  • 下一篇: 128X64 LCD接口51匯編程序
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1