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

📄 linedt.asm

📁 linedt.iar是电话线防止窃听的汇编源代码。
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	mov	eep_addr,a
	mov	a,01h
	mov	eep_length,a
	call	_i2c_read
	mov	a,eep_buf_addr
	mov	vdif,a
	ret
;----------------------------------
_clr_eep:
	mov	a,06h
	mov	mtemp,a
	mov	a,eep_bf_adr
	mov	mp,a
_clr_eep_1:
	mov	a,0ffh
	mov	idr0,a
	inc	mp
	dec	mtemp
	sz	mtemp
	jmp	_clr_eep_1
	
	mov	a,06h
	mov	eep_length,a
	clr	eep_addr
	call	_i2c_write
	ret
;---------------------------------
_rd_eep_init:	
	mov	a,06h
	mov	eep_length,a
	clr	eep_addr
	call	_i2c_read
	mov	a,eep_bf_adr
	mov	mp,a
	mov	a,idr0
	mov	vref,a
	inc	mp
	mov	a,idr0
	mov	vdif,a
	inc	mp
	
	mov	a,idr0
	meqis	idr0,55h
	jmp	_rd_eep_init1
	inc	mp
	meqis	idr0,0aah
	jmp	_rd_eep_init1
	inc	mp
	meqis	idr0,55h
	jmp	_rd_eep_init1
	inc	mp
	meqis	idr0,0aah
	jmp	_rd_eep_init1
		
_rd_eep_init2:
	mov	a,01h
	mov	lin_mod,a	
	jmp	_rd_eep_initx	
_rd_eep_init1:
	clr	lin_mod
_rd_eep_initx:
	ret
		

;----------------------------------
_vdtmp_to_dspbuf:
	clr	emi
	mov	a,0ch
	mov	dsp_bufh,a
	;clr	dsp_bufh
	mov	a,vdtmp
	mov	dsp_bufl,a
	set	emi
	ret
;----------------------------------
_vd_to_dspbuf:
	clr	emi
	mov	a,0ch
	mov	dsp_bufh,a
	;clr	dsp_bufh
	mov	a,vdif
	mov	dsp_bufl,a
	set	emi
	ret
;----------------------------------
_vref_to_dspbuf:
	clr	emi
	clr	dsp_bufh
	clr	dsp_bufl
	mov	a,vref
	jmp	_vlin_to_dsp1
;----------------------------------
_vlin_to_dspbuf:
	clr	emi
	clr	dsp_bufh
	clr	dsp_bufl
	mov	a,vlinel
_vlin_to_dsp1:
	mov	dsp_bufh,a
	sub	a,0ah	
	snz	status_c
	jmp	_vlin_to_dspx1	;c=0,over

	inc	dsp_bufl
	jmp	_vlin_to_dsp1	
_vlin_to_dspx1:
	mgtms	dsp_bufh,04h
	jmp	_vlin_to_dspx3
	
	inc	dsp_bufl

_vlin_to_dspx3:
	clr	mtemp
	mov	a,dsp_bufl
_vlin_to_dsp2:	
	mov	dsp_bufl,a	
	sub	a,0ah
	snz	status_c
	jmp	_vlin_to_dspx2

	inc	mtemp
	jmp	_vlin_to_dsp2
_vlin_to_dspx2:	
	swap	mtemp
	mov	a,mtemp
	orm	a,dsp_bufl
	
	clr	dsp_bufh
	nop
	set	emi
_vlin_to_dspx:
	ret
;----------------------------------
	org	200h
	dc	0ah,0ah,14h,1eh,28h,32h,3ch,46h

_alarm_det:
	mov	a,vdif
	mov	tblp,a
	tabrdc	mtemp
	
	mov	a,vref
	subm	a,mtemp
	
	mgtms	mtemp,vlinel
	jmp	_alarm_det_1
	
	sz	to_low_f
	jmp	_alarm_det_2
	
	set	to_low_f
	clr	to_high_f
	call	_2sec_tm2
	jmp	_alarm_det_x
	
	
_alarm_det_2:	
	sz	almon_f
	jmp	_alarm_det_x
	
	snz	tim2out_f
	jmp	_alarm_det_x
	
	set	almon_f
	jmp	_alarm_det_x
		
_alarm_det_1:
	sz	to_high_f
	jmp	_alarm_det_3
	
	set	to_high_f
	clr	to_low_f
	call	_1sec_tm2
	jmp	_alarm_det_x
	
_alarm_det_3:
	snz	almon_f
	jmp	_alarm_det_x
	
	snz	tim2out_f
	jmp	_alarm_det_x
	
	clr	almon_f

_alarm_det_x:
	ret	

;---------------------------------
_chg_vdtmp:
	inc	vdtmp
	meqis	vdtmp,07h
	jmp	_chg_vdtmp_x
	
	mov	a,01h
	mov	vdtmp,a
	
_chg_vdtmp_x:
	ret
;---------------------------------		
_vref_to_eep:
	clr	eep_addr
	mov	a,vref
	mov	eep_buf_addr,a
	mov	a,v_default
	mov	eep_buf_addr1,a
	
	mov	a,55h
	mov	eep_buf_addr2,a
	mov	eep_buf_addr4,a
	mov	a,0aah
	mov	eep_buf_addr3,a
	mov	eep_buf_addr5,a
	
	mov	a,06h
	mov	eep_length,a
	call	_i2c_write
	ret
;----------------------------------
_vd_to_eep:
	mov	a,01h
	mov	eep_addr,a
	mov	a,vdif
	mov	eep_buf_addr,a
	mov	a,01h
	mov	eep_length,a
	call	_i2c_write
	ret

;----------------------------------

;==================================
;	key	scan
;==================================	
_keyscan:
	clr	keyact_f
	sz	keyin_f
	jmp	_key_rel
	
	mov	a,pa
	and	a,03h
	xor	a,03h
	mov	keybuf,a
	
	sz	keybuf
	jmp	_keyscn1
	jmp	_keyinix
	
_keyscn1:
	sz	keyfst_f
	jmp	_keyprs
	
	mov	a,keybuf
	mov	keyold,a
	set	keyfst_f
	jmp	_keyscnx
	
_keyprs:
	clr	keyfst_f
	meqis	keybuf,keyold
	jmp	_keyinix
	
	meqis	keybuf,03h
	jmp	_keyprs_1
	
	set	twokey_f
_keyprs_1:
	clr	key_tim	
	set	keyin_f
	jmp	_keyscnx
	
_key_rel:
	mov	a,pa
	and	a,03h
	mov	mtemp,a
	
	meqis	mtemp,03h		;release key?
	jmp	_key_rel_1		;no
		
	mgtms	key_tim,4bh
	jmp	_key_rel_5
	jmp	_key_rel_4
	
_key_rel_5:	
	set	keyact_f
_key_rel_4:
	clr	keyin_f
	clr	twokey_f
	clr	key_tim
	jmp	_keyscnx

_key_rel_1:
	inc	key_tim
	meqis	key_tim,4bh		;hold key for 1.5s?
	jmp	_key_rel_3		;no
	
	mov	a,03h			
	addm	a,keybuf
	set	keyact_f
	jmp	_keyscnx
	
_key_rel_3:
	mgtms	32h,key_tim
	jmp	_keyscnx
	
	sz	twokey_f
	jmp	_keyscnx
	
	mov	a,pa
	and	a,03h
	xor	a,03h
	mov	keybuf,a
	
	meqis	keybuf,03h
	jmp	_keyscnx
	
	set	twokey_f
	clr	key_tim
	jmp	_keyscnx

_keyinix:
	clr	keyfst_f	
_keyscnx:
	ret	
;==================================
;	key subproc
;==================================
_is_k1:
	snz	keyact_f
	jmp	_is_k_x2
	meqis	keybuf,k_1
	jmp	_is_k_x2
	jmp	_is_k_x1
	
;----------------------------------	
_is_k2:
	snz	keyact_f
	jmp	_is_k_x2
	meqis	keybuf,k_2
	jmp	_is_k_x2
	jmp	_is_k_x1
	
;----------------------------------
_is_k1_hld:
	snz	keyact_f
	jmp	_is_k_x2
	meqis	keybuf,k1_hld
	jmp	_is_k_x2
	jmp	_is_k_x1
	
;----------------------------------
_is_k2_hld:
	snz	keyact_f
	jmp	_is_k_x2
	meqis	keybuf,k2_hld
	jmp	_is_k_x2
	jmp	_is_k_x1
	
;----------------------------------	
_is_k1k2_hld:	
	snz	keyact_f
	jmp	_is_k_x2
	meqis	keybuf,k1_k2_hld
	jmp	_is_k_x2
	jmp	_is_k_x1
	

_is_k_x1:
	clr	keyact_f
	clr	status_c
	
	jmp	_is_k_x
_is_k_x2:
	set	status_c
_is_k_x:
	;sz	status_c
	ret

;----------------------------------
_start_adc:
	clr	adcr.7
	set	adcr.7
	clr	adcr.7	
	ret
;----------------------------------
_set_s0sec5:
	mov	a,32h
	mov	timer1,a
	clr	timout_f
	ret
;----------------------------------
_set_s0sec2:
	mov	a,14h
	mov	timer1,a
	clr	timout_f
	ret
;----------------------------------
_3sec_tm2:
	mov	a,1eh
	mov	timer2,a
	clr	tim2out_f
	ret
;----------------------------------
_1sec_tm2:
	mov	a,0ah
	mov	timer2,a
	clr	tim2out_f
	ret
;----------------------------------
_2sec_tm2:
	mov	a,14h
	mov	timer2,a
	clr	tim2out_f
	ret
;----------------------------------
_dec_tim1:
	sz	timer1
	jmp	_dec_tim1_1
	jmp	_dec_tim1_x
_dec_tim1_1:
	dec	timer1
	sz	timer1
	jmp	_dec_tim1_x
	set	timout_f
_dec_tim1_x:
	ret
	
;----------------------------------
_dec_tim2:
	sz	timer2
	jmp	_dec_tim2_1
	jmp	_dec_tim2_x
_dec_tim2_1:
	dec	timer2
	sz	timer2
	jmp	_dec_tim2_x
	set	tim2out_f
_dec_tim2_x:
	ret
;**********************************
;*	eeprom	subproc           *
;**********************************
_i2c_start:
	set	scl_p
	set	sda_p
	delay			;>4.7u for 3V system
	clr	sda_p
	delay			
	clr	scl_p
	nop
	nop
	ret

;**********************************
_i2c_stop:
	clr	scl_p
	clr	sda_p
	delay
	set	scl_p
	delay
	set	sda_p
	nop
	nop
	ret
;**********************************
_wait_eep_free:
	call	_i2c_start
	mov	a,0a0h
	mov	i2cbyte,a
	call	_send_1byte_data
	call	_wait_ack
	snz	status_c
	jmp	_wait_eep_free
	ret

;*********************************		
_wait_ack:
	set	sda_dir
	delay
	set	scl_p
	delay
	mov	a,05h
	mov	mtemp,a
_wait_a1:
	snz	sda_p
	jmp	_wait_a2
	
	dec	mtemp
	sz	mtemp
	jmp	_wait_a1
	
	clr	status_c
	jmp	_wait_a3
	
_wait_a2:
	set	status_c
_wait_a3:
	clr	sda_dir
	clr	scl_p
	
	ret
	
;********************************
_send_no_ack:
	set	sda_p
	delay
	set	scl_p
	delay
	clr	scl_p
	nop
	ret

;********************************
_send_ack:
	clr	sda_p
	delay
	set	scl_p
	delay
	clr	scl_p
	nop
	ret

;********************************
_send_1byte_data:
	mov	a,08h
	mov	mtemp,a
_send_1byte_1:
	clr	scl_p
	nop
	nop
	rlc	i2cbyte
	sz	status_c
	jmp	_send_1byte_2
	clr	sda_p
	jmp	_send_1byte_3	
_send_1byte_2:
	set	sda_p
_send_1byte_3:
	delay
	set	scl_p
	delay
	dec	mtemp
	sz	mtemp
	jmp	_send_1byte_1
	clr	scl_p
	ret
	
;********************************
_get_1byte_data:
	mov	a,08h
	mov	mtemp,a
	set	sda_p
	set	sda_dir			;set to input	
_get_1byte_1:
	clr	scl_p
	delay
	set	scl_p
	delay
	sz	sda_p
	jmp	_get_1byte_2
	clr	status_c
	jmp	_get_1byte_3
	
_get_1byte_2:
	set	status_c
	
_get_1byte_3:
	rlc	i2cbyte
	
	dec	mtemp
	sz	mtemp
	jmp	_get_1byte_1
	clr	scl_p
	clr	sda_dir			;set to output
	ret
	
;*********************************
_i2c_read:
	nop
	nop
	sz	eep_length
	jmp	_i2c_rd_1
	jmp	_i2c_rd_x
	
_i2c_rd_1:
	call	_wait_eep_free
	
	call	_i2c_start
	
	mov	a,0a0h
	mov	i2cbyte,a
	call	_send_1byte_data
	call	_wait_ack
	
	mov	a,eep_addr
	mov	i2cbyte,a
	call	_send_1byte_data
	call	_wait_ack
	
	call	_i2c_start
	
	mov	a,0a1h
	mov	i2cbyte,a
	call	_send_1byte_data
	call	_wait_ack
	
	mov	a,eep_bf_adr
	mov	mp,a
	
_i2c_rd_2:
	call	_get_1byte_data
	mov	a,i2cbyte
	mov	idr0,a
	
	inc	mp
	inc	eep_addr
	dec	eep_length
	
	sz	eep_length
	jmp	_i2c_rd_3
	
	call	_send_no_ack
	jmp	_read_done
	
_i2c_rd_3:
	call	_send_ack
	jmp	_i2c_rd_2
_read_done:
	call	_i2c_stop
_i2c_rd_x:
	ret
;**********************************	
_i2c_write:
	call	_wait_eep_free
	
	call	_i2c_start
	
	mov	a,0a0h
	mov	i2cbyte,a
	call	_send_1byte_data
	call	_wait_ack
	
	mov	a,eep_addr
	mov	i2cbyte,a
	call	_send_1byte_data
	call	_wait_ack
	
	mov	a,eep_bf_adr
	mov	mp,a

_i2c_wr_1:
	sz	eep_length
	jmp	_i2c_wr_2
	jmp	_write_done

_i2c_wr_2:
	mov	a,idr0
	mov	i2cbyte,a
	call	_send_1byte_data
	call	_wait_ack
	
	inc	mp
	inc	eep_addr
	dec	eep_length
	jmp	_i2c_wr_1
	
_write_done:
	jmp	_i2c_stop
	ret
	
;**********************************
;*	display subproc           *
;**********************************
	org	400h					     	   ;l   o     -    r							
	dc	0ffh,000h,0f3h,0c3h,00ch,0cfh,0ffh,003h,0ffh,0cfh,0fch,0f0h,000h,030h,0ffh,03fh
	dc	033h,033h,00fh,03fh,03fh,03ch,03ch,033h,03fh,03fh,000h,03ch,00ch,00ch,00ch,00ch
_dspjob:
	sz	dspon_f
	jmp	_dspjob3
	
	call	_ini_seg
	jmp	_dspjobx

_dspjob3:
	;first 7_seg  
	sz	dsp_bufh
	jmp	_dspjob1
	jmp	_dspjob2
_dspjob1:
	mov	a,0fh
	and	a,dsp_bufh
	mov	mtemp2,a
	mov	tblp,a
	tabrdc	mtemp
	mov	a,mtemp
	xorm	a,seg0_buf
	
	mov	a,mtemp2  
	add	a,10h
	mov	tblp,a
	tabrdc	mtemp
	mov	a,mtemp
	xorm	a,seg1_buf
	

	;second	7_seg
_dspjob2:	
	mov	a,0f0h
	and	a,dsp_bufl
	mov	mtemp2,a
	rr	mtemp2
	rr	mtemp2
	rr	mtemp2
	rr	mtemp2
	
	sz	mtemp2
	jmp	_dspjob5
	jmp	_dspjob4
	
_dspjob5:
	mov	a,mtemp2
	mov	tblp,a
	tabrdc	mtemp
	mov	a,mtemp
	xorm	a,seg2_buf
	
	mov	a,mtemp2
	add	a,10h
	mov	tblp,a
	tabrdc	mtemp
	mov	a,mtemp
	xorm	a,seg3_buf
	
	
	;third 7_seg
_dspjob4:	
	mov	a,0fh
	and	a,dsp_bufl
	mov	mtemp2,a
	mov	tblp,a
	tabrdc	mtemp
	mov	a,mtemp
	xorm	a,seg4_buf
	
	mov	a,mtemp2
	add	a,10h
	mov	tblp,a
	tabrdc	mtemp
	mov	a,mtemp
	xorm	a,seg5_buf

_dspjobx:
	ret
;----------------------------
_seg_shift:
	clr	seg_dsp_buf
	clr	status_c
	rlc	seg5_buf
	rlc	seg_dsp_buf
	rlc	seg4_buf
	rlc	seg_dsp_buf
	rlc	seg3_buf
	rlc	seg_dsp_buf
	rlc	seg2_buf
	rlc	seg_dsp_buf
	rlc	seg1_buf
	rlc	seg_dsp_buf
	rlc	seg0_buf
	rlc	seg_dsp_buf
	rl	seg_dsp_buf
	ret	
;----------------------------
_segdrv:
	call	_seg_shift
	mov	a,pb
	and	a,81h
	or	a,seg_dsp_buf
	mov	pb,a	
	ret



;**********************************	
;*	initial subproc		  *	
;**********************************
_ini_port:
	mov	a,0c2h			;com pin to low
	mov	pa,a
	mov	a,3fh			;p6,p7 output, others input
	mov	pac,a
	mov	a,01h			;set pb0 input;	others output
	mov	pbc,a
	mov	a,00h
	mov	pb,a
	mov	a,08h			;set pb0 adc port
	mov	adcr,a
	
	ret	

;-------------------------------
_clr_ram:	
	mov 	a,reg_adr	
	mov 	mp,a 		
_clrloop:
	clr 	idr0	
	inc 	mp
	sz	mp
	jmp 	_clrloop	
_clr_ramx:
	nop
	ret
	
;-------------------------------
_ini_ram:
	mov	a,04h
	mov	t10mcnt,a
	mov	a,0ah
	mov	t100mcnt,a
	mov	a,01h
	mov	time_seq,a
		
	mov	a,0c0h				;???
	mov	timer1,a
	
_ini_seg:
	mov	a,0aah
	mov	seg0_buf,a
	mov	seg1_buf,a
	mov	seg2_buf,a
	mov	seg3_buf,a
	mov	seg4_buf,a
	mov	seg5_buf,a
	ret

;-------------------------------
_ini_int0:
	
	mov	a,000h
	mov	tmrl,a

    	mov	a,0d9h
	mov	tmrh,a

	mov	a,98h
	mov	tmrc,a
	
	set	intc0.2	
	ret	
;----------------------------------
_ini_adc:
	set	intc0.3
	
	mov	a,08h
	mov	adcr,a
	
	mov	a,01h
	mov	adsr,a
	ret
;------------------------------------
_ext_alarm:
	clr	almon_f
	clr	to_low_f
	clr	to_high_f
	ret
;------------------------------------
_clr_param:
	mov	a,v_default
	mov	vdif,a
	mov	vdtmp,a
	ret	
;------------------------------------
_liutest:
	sz	pb.7
	jmp	_liutest1
	set	pb.7
	jmp	_liutestx
_liutest1:
	clr	pb.7
_liutestx:	
	ret

⌨️ 快捷键说明

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