📄 zxce_1_cpu2.asm
字号:
movx a,@dptr
mov b,a
lcall take_dptr1
cjne a,b,bijiao_alm_subb
lcall dptr1_inc_save
bijiao_alm_all_2: ;比较个位
dec r1
mov dptr,#alm_buf+2
movx a,@dptr
mov b,a
lcall take_dptr1
cjne a,b,bijiao_alm_subb
setb alm_set_flag ;个、十、百三位相等时,报警后跳出
ljmp bijiao_alm_all_out
bijiao_alm_subb:
clr c
subb a,b
jc bijiao_alm_all_3 ;比较t与t_alm,a<b,进位位=1
setb alm_set_flag ;a>b,进位位=0,t>t_alm,报警后跳出
ljmp bijiao_alm_all_out
bijiao_alm_all_3:
lcall dptr1_inc_save
djnz r1,bijiao_alm_all_3
lcall dptr1_inc_save
lcall dptr1_inc_save
djnz r0,bijiao_alm_all_0
bijiao_alm_all_out:
lcall set_wdot
ret
;--------------取温度最大值改版(加入负数比较)----------------
take_temp_max:
;mov r0,#0ah
mov r0,#0ch ;比较12道数据
mov dptr,#t1_max_buf
mov dph2,dph
mov dpl2,dpl
lcall take_dptr2 ;保存dptr2到databuf2
mov dptr,#t1_buf
mov dph1,dph
mov dpl1,dpl
lcall take_dptr1 ;保存dptr1到databuf1
take_temp_max_0:
lcall take_dptr1
lcall take_dptr2
mov a,databuf1
mov b,databuf2
cjne a,b,take_temp_diff ;比较符号位是否相等
ljmp take_temp_same
take_temp_diff: ;符号位不等
mov r1,#05h ;算符号位,5位数据
cjne a,#2bh,take_temp_diff_0
ljmp take_temp_diff_1
take_temp_diff_0: ;t为负数,tmax为正数
lcall dptr1_inc_save
lcall dptr2_inc_save
djnz r1,take_temp_diff_0
djnz r0,take_temp_max_0
ljmp take_temp_max_out
take_temp_diff_1: ;t为正数,tmax为负数
lcall take_dptr1
lcall take_dptr2
mov a,databuf1
movx @dptr,a
lcall dptr1_inc_save
lcall dptr2_inc_save
djnz r1,take_temp_diff_1
djnz r0,take_temp_max_0
ljmp take_temp_max_out
take_temp_max_bak:
ljmp take_temp_max_0
take_temp_same: ;符号位相同
mov r1,#04h ;除去符号位,4位数据
cjne a,#2bh,take_temp_minus
ljmp take_temp_plus
take_temp_minus: ;t与tmax同时为负数(求差比较大小,与正数相反)
lcall dptr2_inc_save
lcall take_dptr2
mov b,databuf2
lcall dptr1_inc_save
lcall take_dptr1
cjne a,b,take_temp_minus_0 ;不等,求差
ljmp take_temp_minus_1 ;相等,比较下一位
take_temp_minus_0:
clr c
subb a,b
jc take_temp_minus_2 ;c=1,a<b,t>tmax,将t送入tmax
ljmp take_temp_minus_3 ;c=0,a>b,t<tmax,比下一道数据
take_temp_minus_1:
djnz r1,take_temp_minus
lcall dptr1_inc_save
lcall dptr2_inc_save
djnz r0,take_temp_max_bak
ljmp take_temp_max_out
take_temp_minus_2:
lcall take_dptr1
lcall take_dptr2
mov a,databuf1
movx @dptr,a
lcall dptr1_inc_save
lcall dptr2_inc_save
djnz r1,take_temp_minus_2
djnz r0,take_temp_max_bak
ljmp take_temp_max_out
take_temp_minus_3:
lcall dptr1_inc_save
lcall dptr2_inc_save
djnz r1,take_temp_minus_3
djnz r0,take_temp_max_bak
ljmp take_temp_max_out
take_temp_max_bak_0:
ljmp take_temp_max_0
take_temp_plus: ;t与tmax同时为正数
lcall dptr2_inc_save
lcall take_dptr2
mov b,databuf2
lcall dptr1_inc_save
lcall take_dptr1
cjne a,b,take_temp_plus_0 ;不等,求差
ljmp take_temp_plus_1 ;相等,比较下一位
take_temp_plus_0:
clr c
subb a,b
jc take_temp_plus_2 ;c=1,a<b,t<tmax,比下一道数据
ljmp take_temp_plus_3 ;c=0,a>b,t>tmax,将t送入tmax
take_temp_plus_1:
djnz r1,take_temp_plus
lcall dptr1_inc_save
lcall dptr2_inc_save
djnz r0,take_temp_max_bak_0
ljmp take_temp_max_out
take_temp_plus_2:
lcall dptr1_inc_save
lcall dptr2_inc_save
djnz r1,take_temp_plus_2
djnz r0,take_temp_max_bak_0
ljmp take_temp_max_out
take_temp_plus_3:
lcall take_dptr1
lcall take_dptr2
mov a,databuf1
movx @dptr,a
lcall dptr1_inc_save
lcall dptr2_inc_save
djnz r1,take_temp_plus_3
djnz r0,take_temp_max_bak_0
ljmp take_temp_max_out
take_temp_max_out:
lcall set_wdot
ret
;===============比较报警温度改版(加入负数比较)==============================================
compare_alm_data:
mov r0,#0ch ;比较前12道数据
mov dptr,#t1_buf
mov dph1,dph
mov dpl1,dpl
compare_alm_data_0:
lcall take_dptr1
cjne a,#2bh,compare_alm_data_1 ;查是否为正数,非正数不比较
lcall dptr1_inc_save
ljmp compare_alm_data_2
compare_alm_data_1:
lcall dptr1_inc_save
lcall dptr1_inc_save
lcall dptr1_inc_save
lcall dptr1_inc_save
lcall dptr1_inc_save
djnz r0,compare_alm_data_0
ljmp compare_alm_data_out
compare_alm_data_2:
lcall dptr1_inc_save ;去掉百位
lcall take_dptr1 ;取十位
mov b,a ;实测数据在B中
mov dptr,#alm_buf+1 ;阈值在A中
movx a,@dptr
cjne a,b,compare_alm_subb1
ljmp compare_alm_data_3
compare_alm_subb1: ;a=\b
clr c
subb a,b
jc compare_alm_data_4
lcall dptr1_inc_save
lcall dptr1_inc_save
lcall dptr1_inc_save
djnz r0,compare_alm_data_0
ljmp compare_alm_data_out
compare_alm_data_3: ;a=b
lcall dptr1_inc_save ;去掉十位
lcall take_dptr1 ;取个位
mov b,a ;实测数据在B中
mov dptr,#alm_buf+2 ;阈值在A中
movx a,@dptr
cjne a,b,compare_alm_subb2
ljmp compare_alm_data_6
compare_alm_data_4:
setb alm_set_flag
ljmp compare_alm_data_out
compare_alm_subb2:
clr c
subb a,b
jc compare_alm_data_5
lcall dptr1_inc_save
lcall dptr1_inc_save
djnz r0,compare_alm_data_0
ljmp compare_alm_data_out
compare_alm_data_5:
setb alm_set_flag
ljmp compare_alm_data_out
compare_alm_data_6:
setb alm_set_flag
ljmp compare_alm_data_out
compare_alm_data_out:
clr new_data
lcall set_wdot
ret
;-----------------------------------------
take_dptr1:
mov a,dph1
mov dph,a
mov a,dpl1
mov dpl,a
movx a,@dptr
mov databuf1,a
ret
;-----------------------------------------
take_dptr2:
mov a,dph2
mov dph,a
mov a,dpl2
mov dpl,a
movx a,@dptr
mov databuf2,a
ret
;-----------------------------------------
dptr1_inc_save:
mov dph,dph1
mov dpl,dpl1
inc dptr
mov dph1,dph
mov dpl1,dpl
ret
;-----------------------------------------
dptr2_inc_save:
mov dph,dph2
mov dpl,dpl2
inc dptr
mov dph2,dph
mov dpl2,dpl
ret
;****************************************
;------------put_ans_ready---------------
put_ans4:
mov dptr,#txd_buf
mov a,#28h ;put "("
movx @dptr,a
inc dptr
mov a,#41h ;put "A"
movx @dptr,a
inc dptr
mov a,#4eh ;put "N"
movx @dptr,a
inc dptr
mov a,#53h ;put "S"
movx @dptr,a
inc dptr
mov a,#34h ;put "4"
movx @dptr,a
inc dptr
mov a,#2fh ;put "/"
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#cen_r_num
mov r0,#0bh ;11位手机号码
put_ans4_r_num:
movx a,@dptr
inc dptr
lcall push_dptr
djnz r0,put_ans4_r_num
mov dph,dp_h
mov dpl,dp_l
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#cen_t_num
mov r0,#0bh
put_ans4_t_num:
movx a,@dptr
inc dptr
lcall push_dptr
djnz r0,put_ans4_t_num
mov dph,dp_h
mov dpl,dp_l
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#alm_buf
mov r0,#03h
put_ans4_alm:
movx a,@dptr
inc dptr
lcall push_dptr
djnz r0,put_ans4_alm
mov dph,dp_h
mov dpl,dp_l
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#pdu_buf
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov a,#2fh
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#tim_buf
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov a,#2fh
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#vcc_buf
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#vcc_buf+1
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#vcc_buf+2
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov a,#2fh
movx @dptr,a
inc dptr
mov a,csqbuf1
movx @dptr,a
inc dptr
mov a,csqbuf2
movx @dptr,a
inc dptr
mov a,#29h ;")"
movx @dptr,a
lcall set_wdot
ret
;------------put_dtm4_ready---------------恢复时间设置
put_dtm4:
mov dptr,#txd_buf
mov a,#28h ;put "("
movx @dptr,a
inc dptr
mov a,#44h ;put "T"
movx @dptr,a
inc dptr
mov a,#54h ;put "D"
movx @dptr,a
inc dptr
mov a,#4dh ;put "M"
movx @dptr,a
inc dptr
mov a,#34h ;put "4"
movx @dptr,a
inc dptr
mov a,#2fh ;put "/"
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#hrbuf
mov r0,#06h
put_dtm_t:
movx a,@dptr
inc dptr
lcall push_dptr
djnz r0,put_dtm_t
mov dph,dp_h
mov dpl,dp_l
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
mov a,csqbuf1
movx @dptr,a
inc dptr
mov a,csqbuf2
movx @dptr,a
inc dptr
mov a,#29h ;")"
movx @dptr,a
lcall set_wdot
ret
;------------put_dlm_ready--------------
put_dlm4:
mov dptr,#txd_buf
mov a,#28h ;"("
movx @dptr,a
inc dptr
mov a,#44h ;"D"
movx @dptr,a
inc dptr
mov a,#4ch ;"L"
movx @dptr,a
inc dptr
mov a,#4dh ;"M"
movx @dptr,a
inc dptr
mov a,#34h ;"4"
movx @dptr,a
inc dptr
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#t1_buf
mov r0,#3ch ;12道数据,60位
put_dlm4_t:
movx a,@dptr
inc dptr
lcall push_dptr
djnz r0,put_dlm4_t
mov dph,dp_h
mov dpl,dp_l
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#vcc_buf
mov r0,#03h
put_dlm4_vcc:
movx a,@dptr
inc dptr
lcall push_dptr
djnz r0,put_dlm4_vcc
mov dph,dp_h
mov dpl,dp_l
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
;csq
mov a,csqbuf1
movx @dptr,a
inc dptr
mov a,csqbuf2
movx @dptr,a
inc dptr
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
;rh
mov dptr,#rh_buf
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#rh_buf+1
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#rh_buf+2
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
;ht
mov dptr,#ht_buf
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#ht_buf+1
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#ht_buf+2
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#ht_buf+3
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#ht_buf+4
movx a,@dptr
mov dph,dp_h
mov dpl,dp_l
movx @dptr,a
inc dptr
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
;hhmmss
mov dp_h,dph
mov dp_l,dpl
mov dptr,#a_hrbuf
mov r0,#06h
put_dlm4_tim:
movx a,@dptr
inc dptr
lcall push_dptr
djnz r0,put_dlm4_tim
mov dph,dp_h
mov dpl,dp_l
mov a,#29h ;")"
movx @dptr,a
lcall set_wdot
ret
;------------put_dat_ready----------------回复数据请求
put_dat4:
mov dptr,#txd_buf
mov a,#28h ;"("
movx @dptr,a
inc dptr
mov a,#44h ;"D"
movx @dptr,a
inc dptr
mov a,#41h ;"A"
movx @dptr,a
inc dptr
mov a,#54h ;"T"
movx @dptr,a
inc dptr
mov a,#34h ;"4"
movx @dptr,a
inc dptr
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#t1_buf
mov r0,#3ch ;12道数据,60位
put_dat4_tep:
movx a,@dptr
inc dptr
lcall push_dptr
djnz r0,put_dat4_tep
mov dph,dp_h
mov dpl,dp_l
mov a,#2fh ;"/"
movx @dptr,a
inc dptr
mov dp_h,dph
mov dp_l,dpl
mov dptr,#vcc_buf
mov r0,#03h
put_dat4_vcc:
movx a,@dptr
inc dptr
lcall push_dptr
djnz r0,put_dat4_vcc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -