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

📄 2194v301.asm

📁 基于PID温度控制系统
💻 ASM
📖 第 1 页 / 共 5 页
字号:
DISP_FLASH_COUNT EQU 0A9h
calc_buf2     EQU 0AAh
disp2_buf     EQU 0ADh
TLC_FIRST_ML  EQU 0B0H ;
TLC_FIRST_MH  EQU 0B1H ;
TLC_FIRST_DL  EQU 0B2H ;
TLC_FIRST_DH  EQU 0B3H ;
TLC_SECOND_ML EQU 0B4H ;
TLC_SECOND_MH EQU 0B5H ;
TLC_SECOND_DL EQU 0B6H ;
TLC_SECOND_DH EQU 0B7H ;
TEMP_PROG_SPEED_L EQU 0B8H
TEMP_PROG_SPEED_H EQU 0B9H
LIGHT_PROG_SPEED EQU 0BAH
HUMI_PROG_SPEED  EQU 0BBH
STABLE_SECOND_COUNT EQU 0BCH
STABLE_MINUTE_COUNT EQU 0BDH
stemp_ovrange_l EQU 0BEh ;setting temperature highest or lowest value
stemp_ovrange_h EQU 0BFh
STABLE_RECORD_COUNT EQU 0C0H
ALRM_COUNT    EQU 0C1H
STEMP_LA_L    EQU 0C2H
STEMP_LA_H    EQU 0C3H
TADJ_MEAS_L   EQU 0C4H ;当前校正点测量值低位
TADJ_MEAS_H   EQU 0C5H
TADJ_DISP_L   EQU 0C6H ;当前校正点显示值低位
TADJ_DISP_H   EQU 0C7H
STABLE_OFFSET_L EQU 0C8H
STABLE_OFFSET_H EQU 0C9H
TEMP_LA_L     EQU 0CAH
TEMP_LA_H     EQU 0CBH
AD_HUMI_L     EQU 0CCH
AD_HUMI_H     EQU 0CDH
AD_TEMP_L     EQU 0CEH
AD_TEMP_H     EQU 0CFH
;---------------------------------------------
; E2PROM(AT24C16) ADDRESS ASSIGN
; 000H  #5AH IS have E2PROM FLAG
; 001H  DEFINE IS SAME AS MEMORY_FLAG1
; 002H  DEFINE IS SAME AS MEMORY_FLAG2
; 003H  MNT_PROG_ACTIVE_SEG
; 004H  DEFINE IS SAME AS TEMP_ADJ_BYT1
; 005H  DEFINE IS SAME AS TEMP_ADJ_BYT2
; 006H  when this byte is 0xa5, 自动方式开机处于OFF状态
; 007H  SDISP_STATUS  DGT7-9显示内容
; 008H  COOL_MODE
; 009H  COOL_TEMP_HIGH
; 00AH  COOL_TEMP_LOW
; 00BH  TEMP_EXCURSION
; 00Ch  humi_atc_l
; 00DH  humi_atc_h
; 00EH  MAX_TEMP_L
; 00FH  MAX_TEMP_H
; 010H  MIN_TEMP_L
; 011H  MIN_TEMP_H
; 012H  MAX_SETTEMP_L   ;取消
; 013H  MAX_SETTEMP_H
; 014H  MIN_SETTEMP_L   ;取消
; 015H  MIN_SETTEMP_H
; 016H  LIGHT_INTENSION
; 017H  TIME_ADDR_COUNT
; 018H  HUMI_SVALUE_L
; 019H  HUMI_SVALUE_H
; 01AH  TEMP_ATC_L
; 01BH  TEMP_ATC_H
; 01CH  TEMP_SVALUE_L
; 01DH  TEMP_SVALUE_H
; 020H  COMM_LOCAL_ADDR  ;保存设置通讯地址

; 02FH  BEFORE PROGRAMING,relate flag bit
;
;   BIT6 LIGHT_RUN_F
;   BIT5 UNUSED
;   BIT4--BIT0 LIGHT_INTENSION
; 0x030  cdon_const_l     02-4-7 16:10
; 0x031  cdon_const_h
; 0x032  cdoff_const
; 0x033 进入湿度程序前的湿度控制开关状态 使用见KEY_TPROG_hS11:
;      bit0   humi_run_f
; 0x034 dec_humi_on_value
; 0x035 dec_humi_off_value
; 0x036 inc_humi_on_value
; 0x037 inc_humi_off_value
; 0x038 humi_svalue_l
; 0x039 humi_svalue_h
; 069H  进入温度程序前需要保存的机器状态     ;02-2-14 10:07
;       BIT1  由 PUMP_RUN_F 改为 temp_run_f  ;02-6-14
;       BIT2  COOLER_RUN_F
; 070H--07fH  use for softdog
;   070H--078h is "XUYUEMING" ASCII CODE "
;   079H       is "P" ASCII CODE
;   07BH07AH   SAVE LEFT ENABLE RUN TIME(MINUNTE),THIS NUMBER IS "0",display "err 0"
;   Press temperature button and up button at the same time main power on,
;   unit display "error", unit save "P" ASCII code to e2prom 0x079 address,then softdig is disable
; 100H--1FFH
; ~00H  LIGHT_INTENSION
; ~01H  INC_TIME_COUNT
; ~02H  LIGHT_PROG_SPEED
; ~03H  Lp_loop_min
; ~04H  Lp_loop_hour
; ~05H  humi_svalue_l
; ~06H  humi_svalue_h
; ~07H  HUMI_PROG_SPEED
; ~08H  hp_loop_min
; ~09H  hp_loop_hour
; ~0AH  TEMP_SVALUE_L
; ~0BH  TEMP_SVALUE_H
; ~0CH  TEMP_PROG_SPEED_L
; ~0DH  TEMP_PROG_SPEED_H
; ~0EH  Tp_loop_min
; ~0FH  Tp_loop_hour
; 120H--1FFH
; 3D0H--3D3H
;    TADJ_MEAS_L
;    TADJ_MEAS_H
;    TADJ_DISP_L
;    TADJ_DISP_H
; 3D4H--3D7H  存放温度校正点2的测量值与校正值
; 3D8H--3DBH  存放温度校正点3的测量值与校正值
; 3DCH--3DFH  存放温度校正点4的测量值与校正值
; 3E0H--3E3H  存放温度校正点5的测量值与校正值
; 3E4H--3E7H  存放温度校正点6的测量值与校正值
; 3E8H--3EBH  存放温度校正点7的测量值与校正值
; 3ECH--3EFH  存放温度校正点8的测量值与校正值
; 3F0H--3F3H  存放温度校正点9的测量值与校正值
; 3F4H--3F7H  存放湿度校正点1的测量值与校正值
; 3F8H--3FBH  存放湿度校正点2的测量值与校正值
; 3FCH--3FFH  存放湿度校正点3的测量值与校正值
; 0A10H--0B8CH
;   0x~00  LIGHT_INTENSION
;   0x~01  LIGHT_PROG_SPEED
;   0x~02  minute
;   0x~03  hour
; ~F4H   LP_LOOP_LENTGH
; ~F5H   LP_LOOP_TCOUNT
; ~F6H   LP_LOOP_PST
; ~F7H   LP_LOOP_NCOUNT
; 0x400--0x5EF
;   0x~00  humi_svalue_l
;   0x~01  humi_svalue_h
;   0x~02  HUMI_PROG_SPEED
;   0x~03  minute
;   0x~04  hour
; 0x~F4  hP_LOOP_LENTGH
; 0x~F5  hP_LOOP_TCOUNT
; 0x~F6  hP_LOOP_PST
; 0x~F7  hP_LOOP_NCOUNT
; 0x600--0x852
;   0x~00  TEMP_SVALUE_L
;   0x~01  TEMP_SVALUE_H
;   0x~02  TEMP_PROG_SPEED_L
;   0x~03  TEMP_PROG_SPEED_H
;   0x~04  minute
;   0x~05  hour
; ~F4H 065H  TP_LOOP_LENTGH
; ~F5H 066H  TP_LOOP_TCOUNT
; ~F6H 067H  TP_LOOP_PST
; ~F7H 068H  TP_LOOP_NCOUNT
;---------------------------
;==================================================================
;程序开始
       ORG 0
       LJMP initialize
       ORG 3
       LJMP int_frqy
       ORG 0bh
       LJMP interrupt_tmr0
       ORG 13h
       LJMP INT_7135
       ORG 23H
       LJMP interrupt_serial
       ORG 2bh
       LJMP interrupt_tmr2
       ORG 0030H
;-------------------------------------
initialize:
       LCALL DELAY_250MS
       LCALL DELAY_250MS
       LCALL DELAY_250MS
       LCALL DELAY_250MS
       MOV r0,#10h
       MOV r2,#0c0h
       MOV A,#0
clr_ram1:
       MOV @r0,a
       INC r0
       DJNZ r2,clr_ram1
       MOV R0,#DISP_FLASH_COUNT
       MOV A,#2
       MOV @R0,A
       MOV minute_count,#60
       clr b_sel
       ;SETB B_SEL
       SETB buzzer
       MOV SP,#0d0H
       MOV tmod,#21h
       MOV TL0,#0B6H
       MOV TH0,#3CH
       SETB TR0
       mov PCON,#80h
       mov TH1,#0F3H
       mov SCON,#0f0h
       SETB REN
       SETB TR1
       SETB IT1
       MOV t2con,#01h
       CLR a_SEL
       SETB EX1
       MOV IP,#04H
       SETB EA
       MOV COOL_ON_DTIME,#180
       SETB cool_on_dflag
       MOV ledcomm_buf,#0a4h
       LCALL sent_single
       MOV ledcomm_buf,#98h
       MOV leddata_buf,#7fh
       LCALL sent_double
       MOV r2,#1
       MOV r4,#0
       MOV page_addr,#0
       MOV r0,#TEMP_REG
       LCALL Rd24NBYT
       MOV A,TEMP_REG
       XRL A,#5AH
       JZ check_flag
       LCALL init_e2prom
check_flag:
        MOV R2,#2
        MOV R4,#1
        MOV PAGE_ADDR,#0
        MOV R0,#MEMORY_FLAG1
        LCALL Rd24NBYT
        LCALL CHECK_KEY
        JNB KEY_PUSH_F,READ_PARAMETER
        MOV a,key_code2
        JZ init_s3_2
        LJMP read_parameter
init_s3_2:
        MOV A,KEY_CODE1
        XRL A,#button_switch
        JNZ init_s3_1
        LJMP change_auto_flag
init_s3_1:
        MOV a,key_code1
        XRL a,#button_set
        JZ init_memory
        LJMP READ_PARAMETER
init_memory:
        MOV temp_reg,#0ffh
        MOV r2,#1
        MOV r4,#0
        MOV page_addr,#0
        MOV r0,#temp_reg
        LCALL wr24nbyt
init_s3_4:
        MOV r0,#disp_buf
        MOV @r0,#0eh
        INC r0
        MOV @r0,#1ah
        INC r0
        MOV @r0,#1ah
        INC r0
        MOV @r0,#1ah
        INC r0
        MOV @r0,#1ah
        INC r0
        MOV @r0,#1ah
        LCALL display
        LCALL DELAY_10MS
        LCALL flash_disp2
        LCALL DELAY_10MS
        LCALL check_key
        JB key_push_f,init_s3_4
        LJMP initialize
;---------------------------------
change_auto_flag:
        JB AUTO_RUN_F,INIT_FLAG_S1
        SETB AUTO_RUN_F
        MOV A,MEMORY_FLAG1
        ANL A,#03H
        MOV MEMORY_FLAG1,A
        SJMP INIT_FLAG_S2
INIT_FLAG_S1:
        MOV A,MEMORY_FLAG1
        ANL A,#02H
        MOV MEMORY_FLAG1,A
INIT_FLAG_S2:
        MOV MEMORY_FLAG2,#0
        MOV R2,#2
        MOV R4,#1
        MOV PAGE_ADDR,#0
        MOV R0,#MEMORY_FLAG1
        LCALL WR24NBYT
;--------------------------------
READ_PARAMETER:
        MOV R2,#2
        MOV R4,#04H
        MOV PAGE_ADDR,#0
        MOV R0,#TEMP_ADJ_BYT1
        LCALL Rd24NBYT
        SETB WTADJ_run_f
        MOV R2,#1
        MOV R4,#03H
        MOV PAGE_ADDR,#0
        MOV R0,#MNT_PROG_ACTIVE_SEG
        LCALL Rd24NBYT
        MOV R4,#08H
        MOV PAGE_ADDR,#0
        MOV R2,#8
        MOV R0,#COOL_MODE
        LCALL Rd24NBYT
        MOV R4,#10H
        MOV PAGE_ADDR,#0
        MOV R2,#8
        MOV R0,#MIN_TEMP_L
        LCALL Rd24NBYT
        MOV R4,#18H
        MOV PAGE_ADDR,#0
        MOV R2,#4
        MOV R0,#humi_svalue_l
        LCALL Rd24NBYT
       MOV R2,#2
       MOV R4,#1CH
       MOV PAGE_ADDR,#0
       MOV R0,#TEMP_SVALUE_L
       LCALL Rd24NBYT
       MOV R2,#1
       MOV R4,#20H
       MOV PAGE_ADDR,#0
       MOV R0,#COMM_LOCAL_ADDR
       LCALL Rd24NBYT
        MOV r2,#4
        MOV r4,#34h
        MOV page_addr,#0
        MOV r0,#dec_humi_on_value
        LCALL Rd24NBYT
        MOV r0,#cdon_const_l
        MOV r2,#3
        MOV r4,#30h
        MOV page_addr,#0
        LCALL Rd24NBYT
        MOV c,auto_run_f
        ORL c,prog_temp_on
        ORL c,prog_light_on
        ORL c,prog_humi_on
        JNC stop_machinery
        MOV r0,#temp_reg
        MOV r4,#06h
        MOV page_addr,#0
        MOV r2,#1
        LCALL Rd24NBYT
        MOV a,temp_reg
        XRL a,#0a5h
        JZ stop_mach_s1
        CLR temp_run_f
        MOV c,auto_run_f
        ORL c,prog_temp_on
        JNC initialize_s1
        SETB temp_run_f
        SJMP initialize_s2
initialize_s1:
        CLR COOLER_RUN_F
initialize_s2:
        LCALL flash_disp2
        LCALL READ_CONTP_PARA
AUTO_PARA_S1:
        MOV R2,#01H
        MOV R4,#07H
        MOV PAGE_ADDR,#0
        MOV R0,#SDISP_STATUS
        LCALL Rd24NBYT
        SJMP hardware_check
stop_machinery:
stop_mach_s1:
        CLR light_run_f
        CLR cooler_run_f
        CLR humi_run_f
        MOV R2,#2
        MOV R4,#1
        MOV PAGE_ADDR,#0
        MOV R0,#MEMORY_FLAG1
        LCALL WR24NBYT
hardware_check:
        MOV B,#01H
        MOV R3,#9
        MOV R7,#0AH
TEST3:  MOV R1,#DISP_BUF
        MOV R0,#6
        MOV A,R3
TEST1:  MOV @R1,A
        INC R1
        DJNZ R0,TEST1
        LCALL DISPLAY
        MOV LED_FLAG_ONE,B
        MOV LED_FLAG_TWO,B
        LCALL FLAG_DISPLAY
        MOV r1,#disp_buf
        MOV a,pic_ctrl_byte
        ANL a,#3fh
        MOV @r1,a
        INC r1
        MOV a,r3
        MOV @r1,a
        INC r1
        MOV a,r3
        MOV @r1,a
        INC r1
        MOV a,r3
        MOV @r1,a
        LCALL disp2_verify
        LCALL sent_disp2
        LCALL DELAY_250mS
        LCALL delay_250ms
        DEC R3
        MOV A,B
        RL A
        MOV B,A
        DJNZ R7,TEST3
        MOV R0,#DISP_BUF
        MOV R3,#6
TEST4:  MOV @R0,#1AH
        INC R0
        DJNZ R3,TEST4
        LCALL DISPLAY
        LCALL DELAY_250MS
        LCALL DELAY_250MS
        MOV LED_FLAG_ONE,#0
        MOV LED_FLAG_TWO,#0
        LCALL FLAG_DISPLAY
        LCALL CLEAR_DISP2
TEST1203:
        MOV R0,#disp_buf
        MOV @r0,#1Eh
        INC R0
        mov a,#version
        anl a,#0f0h
        swap a
        mov @r0,a
        inc r0
        mov a,#version
        anl a,#0fh
        mov @r0,a
        inc r0
        mov @r0,#1AH
        inc r0
        mov a,#version1
        anl a,#0f0h
        swap a
        mov @r0,a
        inc r0
        mov a,#version1
        anl a,#0fh
        mov @r0,a
        LCALL display
        CLR buzzer
        CLR et1
        LCALL delay_1s
        SETB buzzer
        MOV quad_second_count,#5
        SETB ET0
	SETB ES
main_loop:
        JMP limit_chk_exit
        MOV c,SOFTDOG_F
        ORL c,/minute_f

⌨️ 快捷键说明

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