?? 2194v301.asm
字號:
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 + -