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] ... 下一页 >>