⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2194v301.asm

📁 基于PID温度控制系统
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        JC limit_chk_exit
        CLR minute_f
        MOV r2,#2
        MOV r4,#7ah
        MOV page_addr,#0
        MOV r0,#calc_buf1
        LCALL Rd24NBYT
        MOV r0,#calc_buf1
        MOV a,@r0
        CLR c
        SUBB a,#1
        MOV @r0,a
        INC r0
        MOV a,@r0
        SUBB a,#0
        MOV @r0,a
        DEC r0
        ORL a,@r0
        JNZ limit_chk_s1
        MOV r2,#1
        MOV r4,#79h
        MOV page_addr,#0
        MOV temp_reg,#53h
        MOV r0,#temp_reg
        LCALL wr24nbyt
        SJMP limit_chk_exit
limit_chk_s1:
        MOV r2,#2
        MOV r4,#7ah
        MOV page_addr,#3
        MOV r0,#calc_buf1
        LCALL wr24nbyt
limit_chk_exit:
;**\
        JNB flash_disp2_f,main_loop_s00
        CLR flash_disp2_f
        LCALL flash_disp2
main_loop_s00:
        JNB TRAN_WAIT_F,MAIN_LPS3
        CLR TRAN_WAIT_F
        SJMP MAIN_LPS2
MAIN_LPS3:
        MOV A,NO_AD_COUNT
        CLR C
        SUBB A,#20
        JC MAIN_LPS1
MAIN_LPS2:
        LCALL start_ad_tran
MAIN_LPS1:
        MOV R0,#DISP_BUF
        MOV @R0,OUTPUT_762
        INC R0
        MOV @R0,OUTPUT_762
        LCALL COMM_762
        JB temp_run_f,check_alarm
        LJMP control_pump
check_alarm:
        MOV R0,#AD_TEMP_L
        LCALL CALC_TEMP_LA
        LCALL chk_alarm_sroute
        MOV C,ALM_TEMP_F
        ORL C,TEMP_H_ALM
        ORL C,ALM_LEVEL_F
        ORL C,ALM_PRESS_F
        ORL C,TEMP_L_ALM
        JC respond_alm00
        LJMP respond_alm5
respond_alm00:
        MOV R0,#ALRM_COUNT
        MOV A,@R0
        INC A
        MOV @R0,A
        CLR C
        SUBB A,#ALRM_WAIT_CONST
        JC respond_alm01
        SJMP respond_alm0
respond_alm01:
        LCALL DELAY_01S
        LJMP MAIN_LOOP
respond_alm0:
        MOV R0,#ALRM_COUNT
        MOV A,#ALRM_WAIT_CONST
        MOV @R0,A
        MOV C,ALM_TEMP_F
        ORL C,TEMP_H_ALM
        ORL C,ALM_LEVEL_F
        JNC respond_alm1
        CLR PUMP_RUN_F
        CLR PUMP_FAN
        SJMP respond_alm3
respond_alm1:
        MOV C,ALM_PRESS_F
        ORL C,TEMP_L_ALM
        JC respond_alm3
        LJMP respond_alm5
respond_alm3:
        JB ALM_STATUS_F,respond_alm4
        MOV C,COOLER_RUN_F
        MOV BALM_COOLER_S,C
        CLR COOLER_RUN_F
        CLR COOL_VALVE
        CLR cooler
        CLR ena_cl
        SETB COOL_ON_DFLAG
        MOV COOL_ON_DTIME,#180
        CLR LED_COOLER1
        CLR led_cooler2
        SETB ALM_STATUS_F
        MOV alarm_sound_count,#5
respond_alm4:
        JNB half_sencond_F,respond_alm2
        CLR half_sencond_f
        CPL calc_f1
        JNB calc_f1,respond_alm22
        SETB led_alarm1
        SETB LED_ALARM2
        JNB BALM_COOLER_S,respond_alm4_0
        SETB LED_COOLER1
        SETB led_cooler2
respond_alm4_0:
        MOV C,ALM_TEMP_F
        ORL C,TEMP_H_ALM
        ORL C,ALM_LEVEL_F
        JNC respond_alm4_1
        SETB LED_PUMP1
        SETB LED_PUMP2
respond_alm4_1:
        SJMP respond_alm24
respond_alm22:
        CLR LED_ALARM2
        CLR led_alarm1
        JNB BALM_COOLER_S,respond_alm22_0
        CLR LED_COOLER1
        CLR led_cooler2
respond_alm22_0:
        MOV C,ALM_TEMP_F
        ORL C,TEMP_H_ALM
        ORL C,ALM_LEVEL_F
        JNC respond_alm22_1
        CLR LED_PUMP1
        CLR LED_PUMP2
respond_alm22_1:
respond_alm24:
        LCALL flag_display
        JNB alarm_sound_f,respond_alm2
        MOV beep_times,#buzzer_const2
        CLR alarm_sound_f
respond_alm2:
        MOV R0,#DISP_BUF
        MOV @R0,#0eh
        INC R0
        MOV @R0,#0fh
        INC R0
        MOV @R0,#0fh
        INC R0
        MOV @R0,#2FH
        INC R0
        MOV @R0,#2FH
        INC R0
        MOV @R0,#2FH
        JNB ALM_TEMP_F,respond_alm6
        MOV @R0,#1
        SJMP respond_alm10
respond_alm6:
        JNB TEMP_H_ALM,respond_alm7
        MOV @R0,#2
        SJMP respond_alm10
respond_alm7:
        JNB TEMP_L_ALM,respond_alm8
        MOV @R0,#3
        SJMP respond_alm10
respond_alm8:
        JNB ALM_LEVEL_F,respond_alm9
        MOV r0,#disp_buf
        MOV @r0,#1ch
        INC r0
        MOV @r0,#27h
        INC r0
        MOV @R0,#1dh
        INC r0
        MOV @r0,#1dh
        INC r0
        MOV @r0,#0fh
        INC r0
        MOV @r0,#1ch
        SJMP respond_alm10
respond_alm9:
        JNB ALM_PRESS_F,respond_alm10
        MOV @R0,#5
respond_alm10:
        LCALL display
        LCALL delay_20ms
        lcall check_key
        JNB key_push_f,respond_alm21
        MOV a,key_code2
        JNZ respond_alm21
        MOV a,key_code1
        XRL a,#button_switch
        JNZ respond_alm21
        MOV beep_times,#buzzer_const2
        CLR pump_run_f
        CLR alm_status_f
        clr led_alarm1
        clr led_alarm2
respond_alm21:
        LJMP main_loop
respond_alm5:
        JB ALM_STATUS_F,respond_alm13
        LJMP CHECK_SET_TEMP2
respond_alm13:
        MOV c,auto_run_f
        ORL c,prog_temp_on
        JC respond_alm14
        LCALL CHECK_KEY
        JNB KEY_PUSH_F,respond_alm15
        MOV a,key_code2
        JNZ respond_alm15
        MOV a,key_code1
        XRL a,#7
        JNZ respond_alm15
        SJMP respond_alm14
respond_alm15:
        JNB half_sencond_f,respond_alm25
        CLR half_sencond_f
        CPL calc_f0
        JNB calc_f0,respond_alm23
        SETB led_alarm1
        SETB led_alarm2
        SJMP respond_alm16
respond_alm23:
        CLR led_alarm1
        CLR led_alarm2
respond_alm16:
        LCALL flag_display
        JNB alarm_sound_f,respond_alm25
        MOV beep_times,#buzzer_const2
        CLR alarm_sound_f
respond_alm25:
        LCALL delay_20ms
        LCALL flash_disp2
        SJMP respond_alm13
respond_alm14:
        SETB buzzer
        CLR led_alarm1
        CLR led_alarm2
        CLR ALM_STATUS_F
        SETB pump_run_f
        MOV C,BALM_COOLER_S
        MOV COOLER_RUN_F,C
CHECK_SET_TEMP2:
        MOV R0,#ALRM_COUNT
        MOV A,#0
        MOV @R0,A
control_pump:
        JB alm_status_f,mainlp_flash_flag
        MOV c,temp_run_f
        MOV pump_run_f,c
MAINLP_FLASH_FLAG:
        JNB pump_flash_f,MLP_FLASH_FS1   ;for some reason,pump is setted on,but not enable runing,
                                         ;pump_flash_f is setting.
        SETB LED_PUMP1
        SETB LED_PUMP2
        JB POINT_FLASH_F,MLP_FLASH_FS2
        CLR LED_PUMP1
        CLR LED_PUMP2
        SJMP MLP_FLASH_FS2
MLP_FLASH_FS1:
        SETB LED_PUMP1
        SETB LED_PUMP2
        JB PUMP_RUN_F,MLP_FLASH_FS2
        CLR LED_PUMP1
        CLR LED_PUMP2
MLP_FLASH_FS2:
        JB cooler_run_f,mlp_flash_cf1
        CLR led_cooler1
        CLR led_cooler2
        SJMP mlp_flash_fs4
mlp_flash_cf1:
        JB cooler,mlp_flash_cf2
        CLR led_cooler1
        CLR led_cooler2
        JNB point_flash_f,mlp_flash_cf3
        SETB led_cooler1
        SETB led_cooler2
mlp_flash_cf3:
        SJMP mlp_flash_fs4
mlp_flash_cf2:
        JB cool_valve,mlp_flash_cf4
        SETB led_cooler1
        SETB led_cooler2
        SJMP mlp_flash_fs4
mlp_flash_cf4:
        CLR led_cooler1
        CLR led_cooler2
        JNB flash_2hz_f,mlp_flash_fs4
        SETB led_cooler1
        SETB led_cooler2
MLP_FLASH_FS4:
        JB temp_run_f,mlp_flash_fs6
        CLR HUMI_CONTROL_LED
MLP_FLASH_FS6:
        LCALL FLAG_DISPLAY
MDISP_FLASH:
        JB temp_run_f,chk_tran_resu
        MOV R0,#DISP_BUF
        MOV @R0,#2FH
        INC R0
        MOV @R0,#0
        INC R0
        MOV @R0,#28H
        INC R0
        MOV @R0,#28H
        INC R0
        MOV @R0,#2FH
        INC R0
        MOV @R0,#2FH
        LCALL DISPLAY
        SJMP SDISP_FLASH
CHK_TRAN_RESU:
;为解决DGT1小数点闪烁不均匀问题
;当存在新的模数转换结果或存在半秒标志
;两者之一条件满足,刷新显示 02-3-26 22:21
        MOV C,NEW_ADRESULT_F
        ORL C,half_sencond_f
        JC DISP_RESULT
        LJMP CTRL_OUTPUT
DISP_RESULT:
        CLR new_adresult_f
        CLR HALF_SENCOND_F
        MOV A,MDISP_STATUS
        ADD A,MDISP_STATUS
        MOV DPTR,#DISP_RES_TAB
        JMP @A+DPTR
disp_res_tab:
        SJMP DISP_RES_RTEMP
        SJMP DISP_RES_HUMI
        SJMP DISP_RES_RTH        ;display temperature and humidity transmigrate
DISP_RES_RTH:
        JB DISP_FLASH_F,DISP_RES_RTEMP
        SJMP DISP_RES_HUMI
DISP_RES_RTEMP:
        LCALL ADT_TO_DISP
        LCALL ADT_TO_DISP_V
        JNB CALC_F1,disp_res_rtemp1
        LJMP MAIN_LOOP
disp_res_rtemp1:
        LCALL DISPLAY
        SJMP SDISP_FLASH
DISP_RES_HUMI:
        MOV R0,#AD_HUMI_L
        LCALL ADH_TO_DISP
        LCALL DISPLAY
SDISP_FLASH:
        JB temp_run_f,sdisp_flash_s3
        CLR humi_run_f
        CLR prog_humi_on        ;02-6-8 10:46   ***/
SDISP_FLASH_S3:
        MOV A,SDISP_STATUS       ;sdisp_status can be selected
                                 ;"0" meaning auto select
                                 ;"1" meaning display light
                                 ;"2" meaning display humidity
                                 ;"3" meaning display light and humidity transmigrate
                                 ;02-3-19 23:56
        CLR C
        SUBB A,#04H
        JC SDISP_FLASH_S2
        MOV SDISP_STATUS,#0
SDISP_FLASH_S2:
        MOV A,SDISP_STATUS
        MOV B,#3
        MUL AB
        MOV DPTR,#SDISP_TAB
        JMP @A+DPTR
SDISP_TAB:
        LJMP SDISP_AUTO_SELECT
        LJMP SDISP_LIGHT_VALUE
        LJMP SDISP_HUMI_VALUE
        LJMP SDISP_LIGHT_HUMI
SDISP_AUTO_SELECT:          ;02-3-20 20:17
                            ;If humidity and light is all runing or humidity is runing only, display humidity  (2003做了修改)
                            ;If light is runing only, display light
                            ;if nothing of light and humidity is runing, DGT7-DGT9 display black.
       MOV C, prog_humi_on
       ORL C, humi_run_f
       JNC sdisp_auto_s1
       CLR C
       MOV C, prog_LIGHT_on
       ORL C, LIGHT_run_f
       JC sdisp_auto_s1_0
       LJMP SDISP_HUMI_VALUE
sdisp_auto_s1_0:
       JB DISP_FLASH_F,sdisp_auto_s2
       LJMP SDISP_HUMI_VALUE
sdisp_auto_s1:
       MOV C, prog_LIGHT_on
       ORL C,LIGHT_run_f
       JC sdisp_auto_s2
        MOV r0,#disp_buf
        MOV @r0,pic_ctrl_byte
        INC r0
        MOV @r0,#1fh
        INC r0
        MOV @r0,#1fh
        INC r0
        MOV @r0,#1fh
        LJMP sdisp_sent_exit
sdisp_auto_s2:
        JNB prog_light_on,sdisp_light_nflash
        SJMP sdisp_light_value
SDISP_LIGHT_HUMI:
        JB DISP_FLASH_F,SDISP_LIGHT_NFLASH
        SJMP SDISP_HUMI_VALUE
SDISP_LIGHT_NFLASH:
        MOV R0,#DISP_BUF
        MOV @R0,PIC_CTRL_BYTE
        INC R0
        MOV @R0,#0CH
        INC R0
        JB LIGHT_RUN_F,SDISP_LIGHT_NVS1
        MOV @R0,#1FH
        INC R0
        MOV @R0,#0
        lJMP SDISP_SENT_EXIT
SDISP_LIGHT_NVS1:
        MOV A,LIGHT_INTENSION
        MOV B,#0AH
        DIV AB
        MOV @R0,A
        JNZ SDISP_LIGHT_NVS3
        MOV @R0,#1FH
SDISP_LIGHT_NVS3:
        INC R0
        MOV @R0,B
        lJMP SDISP_SENT_EXIT
SDISP_LIGHT_VALUE:
        MOV R0,#DISP_BUF
        MOV @R0,PIC_CTRL_BYTE
        INC R0
        MOV @R0,#0CH
        JNB PROG_LIGHT_ON,SDISP_LIGHT_VS2
        JNB POINT_FLASH_F,SDISP_LIGHT_VS2
        MOV @R0,#1CH
SDISP_LIGHT_VS2:
        INC R0
        JB LIGHT_RUN_F,SDISP_LIGHT_VS1
        MOV @R0,#1FH
        INC R0
        MOV @R0,#0
        SJMP SDISP_SENT_EXIT
SDISP_LIGHT_VS1:
        MOV A,LIGHT_INTENSION
        MOV B,#0AH
        DIV AB
        MOV @R0,A
        JNZ SDISP_LIGHT_VS3
        MOV @R0,#1FH
SDISP_LIGHT_VS3:
        INC R0
        MOV @R0,B
        SJMP SDISP_SENT_EXIT
SDISP_HUMI_VALUE:
       MOV R0,#DISP_BUF
       MOV @R0,PIC_CTRL_BYTE
       LCALL CALC_HUMI_VALUE
       MOV R1,#CALC_BUF1+1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -