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

📄 zxce_1_cpu2.asm

📁 c8051f020和prt905还有tc35语言
💻 ASM
📖 第 1 页 / 共 5 页
字号:
		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 + -