ORG 2000H
MAIN: MOV R1,#0ATA ;置数据区首地址
SETB IT1 ;为边沿触发方式
SETB EA ;开中断
SETB EX1 ;允许中断
MOV DPTR,#7FF8H ;指向IN0通道
MOVX @DPTR,A ;启动A/D转换
LOOP: NOP ;空操作,用于延长时间
AJMP LOOP ;直接跳转指令
ORG 2100H ;中断服务程序入口
PINT1: PUSH PSW ;保护现场
PUSH ACC
PUSH DPL
PUSH DPH
MOV DPTR,#7FF8H
MOVX A,@DPTR ;读取转换后数据
MOV @R1,A ;数据存入以DPTR为首地址的RAM中
INC R1 ;修改数据区指针
MOVX @DPTR,A ;再次启动A/D转换
POP DPH ;恢复现场
POP DPL
POP ACC
POP PSW
RETI ;中断返回
P: CJNE R1, #4.AEH, LP1 ;将R1中现存的温度转换成的十六进制电压值与
48℃的十六进制数4.AEH比较,如果R1中温度不等
于48℃则指令跳转到LP1,相等则指令顺下执行
AJMP LP11 ;直接跳转指令,直接跳转到LP11
LP1: JNC LP11 ;进位标志位CY的状态判转指令,如果R1中的温度大于48℃,则CY=0,指令转移到LP11;如果R1中的温度小于48℃,则CY=1,指令顺下执行
CLR P1.0 ;清空P1.0口,把继电器1的控制口断电,断开继电器1
AJMP MAIN ;直接跳转指令,温度低于48℃,直接跳转到MAIN,重新检测温度
LP11: SETB P1.0 ;将P1.0口置1,接通继电器1
CJNE R1, #4.BAH, LP2 ;将R1中温度继续与48.5℃比较,不等于则跳转到LP2,相等则顺下执行
AJMP LP22 ;温度等于48.5℃,指令直接跳转到LP22
LP2: JNC LP22 ;R1中温度大于48.5℃,则CY=0,指令跳转到LP22;小于48.5℃,则CY=1,指令顺下执行
CLR P1.1 ;清空P1.1口,把继电器2的控制口断电,断开继电器2
AJMP MAIN
LP22: SETB P1.1 ;将P1.1口置1,接通继电器2
CJNE R1, #4.C7H, LP3 ;将R1中温度继续与49℃比较,不等于则跳转到LP3,相等则顺下执行
AJMP LP33 ;温度等于49℃,指令直接跳转到LP33
LP3: JNC LP33 ;R1中温度大于49℃,则CY=0,指令跳转到LP33;小于49℃,则CY=1,指令顺下执行
CLR P1.2 ;清空P1.2口,把继电器3的控制口断电,断开继电器3
AJMP MAIN
LP33: SETB P1.2 ;将P1.2口置1,接通继电器3
CJNE R1, #4.D4H, LP4 ;将R1中温度继续与49.5℃比较,不等于则跳转到LP4,相等则顺下执行
AJMP LP44 ;温度等于49.5℃,指令直接跳转到LP44
LP4: JNC LP44 ;R1中温度大于49.5℃,则CY=0,指令跳转到LP44;小于49.5℃,则CY=1,指令顺下执行
CLR P1.3 ;清空P1.3口,把继电器4的控制口断电,断开继电器4
AJMP MAIN
LP44: SETB P1.3 ;将P1.3口置1,接通继电器4
CJNE R1, #4.E1H, LP5 ;将R1中温度继续与50℃比较,不等于则跳转到LP5,相等则顺下执行
AJMP LP55 ;温度等于50℃,指令直接跳转到LP55
LP5: JNC LP55 ;R1中温度大于50℃,则CY=0,指令跳转到LP55;小于48.5℃,则CY=1,指令顺下执行
CLR P1.4 ;清空P1.4口,把继电器5的控制口断电,断开继电器5
AJMP MAIN
LP55: SETB P1.4 ;将P1.4口置1,接通继电器5
CJNE R1, #4.EEH, LP6 ;将R1中温度继续与50.5℃比较,不等于则跳转到LP6,相等则顺下执行
AJMP LP66 ;温度等于50.5℃,指令直接跳转到LP66
LP6: JNC LP66 ;R1中温度大于50.5℃,则CY=0,指令跳转到LP66;小于50.5℃,则CY=1,指令顺下执行
CLR P1.5 ;清空P1.5口,把继电器6的控制口断电,断开继电器6
AJMP MAIN
LP66: SETB P1.6 ;将P1.6口置1,接通继电器6
CJNE R1, #4.F8H, LP7 ;将R1中温度继续与51℃比较,不等于则跳转到LP7,相等则顺下执行
AJMP LP77 ;温度等于51℃,指令直接跳转到LP77
LP7: JNC LP77 ;R1中温度大于51℃,则CY=0,指令跳转到LP77;小于51℃,则CY=1,指令顺下执行
CLR P1.6 ;清空P1.6口,把继电器7的控制口断电,断开继电器7
AJMP MAIN
LP77: SETB P1.6 ;将P1.6口置1,接通继电器7
CJNE R1, #5.05H, LP8 ;将R1中温度继续与51.5℃比较,不等于则跳转到LP8,相等则顺下执行
AJMP LP88 ;温度等于51.5℃,指令直接跳转到LP88
LP8: JNC LP88 ;R1中温度大于51.5℃,则CY=0,指令跳转到LP88;小于51.5℃,则CY=1,指令顺下执行
CLR P1.7 ;清空P1.7口,把继电器8的控制口断电,断开继电器8
AJMP MAIN
LP88: SETB P1.7 ;将P1.7口置1,接通继电器85
CJNE R1, #5.11H, LP9 ;将R1中温度继续与52℃比较,不等于则跳转到LP9,相等则顺下执行
AJMP LP99 ;温度等于52℃,指令直接跳转到LP99
LP9: JNC LP99 ;R1中温度大于52℃,则CY=0,指令跳转到LP99;小于52℃,则CY=1,指令顺下执行
AJMP MAIN
LP99:END ;结束程序,关机