CT0: PUSH  ACC             ;
   PUSH  DPL            ;保护现场
   PUSH  DPH             ;
   SETB  D5H            ;置标志
   ACALL    SAMP         ;调用采样子程序
   ACALL    FILTER       ;调用数字滤波程序 
CJNE  A, 42H, TPL     ; 
WL:  MOV     C, 5EH        ;
  MOV     5FH,  C         ;
  CLR      5EH            ;清5Eh单元
  ACALL   UPL             ;转上限处理程序
  POP      DPH 
  POP      DPL 
  POP      ACC
RETI                   ;中断返回
TPL :  JNC    TPL1           ; 若Ui(K)>Umax,则TPL1
CLR   5FH             ; 清上次越限标志
CJNE  A , 43H, MTPL   ;若Ui(K)≠Umin,则MTPL
HAT :  SETB    P1.1          ;若温度不越限,则令绿灯亮
ACALL  PID            ;调用计算PID子程序
MOV    A,  2FH        ;PID值送A对PID值求补,作为TL1值
 CPL     A             ;
INC     A             ;
NM:    SETB    P1.3          ;令P1.3输出高电平脉冲
MOV     TL1,   A      ;
MOV    TH1, #0FFH     ; T1赋初值
SETB    PT1            ;T1高优先级中断
SETB    TR1            ;启动T1
SETB    ET1            ;允许T1中断
ACALL  TRAST           ;调用标度转化程序
LOOP :    ACALL  DISPLY           ;显示温度
JB      D5H,  LOOP     ;等待T1中断
POP     DPH             ;
            POP     DPL             ;恢复现场
POP     ACC             ;
RETI                    ;中断返回
MTPL:   JNC     HAT              ;若Ui(K)>Umin ,则HAT
SETB   P1.0              ;否则越下限声光报警
MOV    A, 45H   ;取PID最大值输出对PID值求补,作为TL1值
CPL     A            
INC     A                      
AJMP    NM                ;转NM 执行
TPL1:  SETB    5EH                ;若Ui(K)>Umax,则5EH单元置位
JNB     5FH,  WL           ;若上次未越限。则转WL
INC     44H                ;越限计数器加“
MOV    A,  44H 
CLR    C
SUBB   A, #N               ;越限N次吗 ?
JNZ    WL                 ;越限小于N 次,则WL
SETB   P1.2                ;否则越上限声光报警
CLR    5EH                  ;
CLR    5FH                  ;清越限标志
POP    DPH                  ;
AJMP CT1
CT1:  CLR  D5H                   ; 清标志
    CLR  P1.3                  ; 令P1.3变为低电平
RETI ; 中断返回
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>