EOC,$Р SETB OE Р MOV ADC,P1 ;读取AD转换结果Р CLR OEР MOV?A,ADCР SUBB?A,L_TEMP ;判断是否低于下限Р JC LALMР MOV?A,H_TEMPР MOV?R0,ADCР SUBB?A,R0 ;判断是否高于上限Р JC HALMР CLR?TR1Р LJMP WAITРL_ALM:CLR?L_ALM ;低温报警灯亮Р CLR H ;启动加热电阻Р SETB?TR1 ;开启计数器1,引起中断Р CLR?FLAGР LJMP?DELAYР LJMP WAITРH_ALM:CLR H_ALM ;高温报警灯亮Р SETB TR1Р SETB FLAGР LJMP DELAYРLJMP WAITРINT_T0: CPL CLOCK ;提供ADC0808时钟Р RETIРINT_T1: MOV TH1,#252Р MOV TL1,#24Р CPL SOUNDР INC TCNTAР MOV A,TCNTAР JB FLAG,I1 ;判断是高温警报还是低温警报Р CJNE A,#35,RETUNE ;低温警报声响Р SJMP I2Р?I1: CJNE A,#5,RETUNE ;高温警报声响Р?I2: MOV TCNTA,#0Р INC TCNTBР MOV A,TCNTBР CJNE A,#20,RETUNEР MOV TCNTA,#0Р MOV TCNTB,#0Р LCALL?DELAY2РRETUNE: RETIРDELAY: MOV?R6,#10РD1: MOV?R7,#250Р DJNZ?R7,$Р DJNZ?R6,D1Р RETРDELAY2: MOV?R5,#20РD2: MOV?R6,#20РD3: MOV?R7,#250Р DJNZ?R7,$Р DJNZ?R6,D3Р DJNZ?R5,D2Р RETР END