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

📄 linedt.asm

📁 linedt.iar是电话线防止窃听的汇编源代码。
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	.listmacro
	.listinclude
	include macro.def
	
	;special reg.******
	idr0	equ	[00h]
	mp	equ	[01h]
	pcl	equ	[06h]
	tblp	equ 	[07h]
	tblh	equ	[08h]

	status	equ	[0ah]
	;------------------------
	status_c	equ	status.0
	status_z	equ	status.2
        status_ac	equ	status.1
	intc0	equ	[0bh]
	;------------------------
	emi	equ	intc0.0
	eti	equ	intc0.2
	eadi	equ	intc0.3
	tf	equ	intc0.5
	adf	equ	intc0.6
	
	tmrh	equ	[0ch]
	tmrl	equ	[0dh]
	tmrc	equ	[0eh]
	pa	equ	[12h]
	pac	equ	[13h]
	;------------------------
	sda_dir	equ	pac.6
	
	pb	equ	[14h]
	pbc	equ	[15h]
	pc	equ	[16h]
	pcc	equ	[17h]
	pd	equ	[18h]
	pdc	equ	[19h]
	pwm	equ	[1ah]
	intc1	equ	[1eh]
	hadr	equ	[20h]
	hcr	equ	[21h]
	hsr	equ	[22h]
	hdr	equ	[23h]
	adrl	equ	[24h]
	adrh	equ	[25h]
	adcr	equ	[26h]
	adsr	equ	[27h]
	
	;pin define.********
	ksave_p	equ	pa.0
	kset_p	equ	pa.1
	com0_p	equ	pa.2
	com1_p	equ	pa.3
	com2_p	equ	pa.4
	com3_p	equ	pa.5
	sda_p	equ	pa.6
	scl_p	equ	pa.7
	
	
	adc0_p	equ	pb.0
	seg0_p	equ	pb.1
	seg1_p	equ	pb.2
	seg2_p	equ	pb.3
	seg3_p	equ	pb.4
	seg4_p	equ	pb.5
	seg5_p	equ	pb.6
	
	
	;reg. *************
	seg0_buf	equ	[40h]
	seg1_buf	equ	[41h]
	seg2_buf	equ	[42h]
	seg3_buf	equ	[43h]
	seg4_buf	equ	[44h]
	seg5_buf	equ	[45h]
	keybuf		equ	[46h]
	keyold		equ	[47h]
	dsp_bufl	equ	[48h]
	dsp_bufh	equ	[49h]
	seg_dsp_buf	equ	[4ah]	
	
	adrh_buf	equ	[4bh]
	adrl_buf	equ	[4ch]
	t100mcnt	equ	[4dh]
	t500mcnt	equ	[4eh]
	t10mcnt		equ	[4fh]
	time_seq	equ	[50h]
	a_buffer	equ	[51h]
	mtemp		equ	[52h]
	mtemp2		equ	[53h]
	mtemp3		equ	[54h]
	mtemp1		equ	[55h]
	stat_buf	equ	[56h]
	int_mtemp3	equ	[57h]
	int_mtemp4	equ	[58h]
	timer1		equ	[59h]
	timer2		equ	[5ah]
	adrh_bufx	equ	[5bh]
	adrl_bufx	equ	[5ch]
	adrh_bufy	equ	[5dh]
	adrl_bufy	equ	[5eh]
	;		equ	[5fh]
	key_tim		equ	[60h]	
	i2cbyte		equ	[61h]
	eep_addr	equ	[62h]
	eep_length	equ	[63h]
	eep_buf_addr	equ	[64h]
	eep_buf_addr1	equ	[65h]
	eep_buf_addr2	equ	[66h]
	eep_buf_addr3	equ	[67h]
	eep_buf_addr4	equ	[68h]
	eep_buf_addr5	equ	[69h]
	eep_buf_addr6	equ	[6ah]
	eep_buf_addr7	equ	[6bh]
	vlineh		equ	[6ch]
	vlinel		equ	[6dh]
	vref		equ	[6eh]
	;		equ	[6fh]
	vdif		equ	[70h]
	;		equ	[71h]
	vdtmp		equ	[72h]
	lin_mod		equ	[73h]
	sub_mod		equ	[74h]
	
	flag0		equ	[7dh]
	t500ms_f	equ	flag0.0
	t100ms_f	equ	flag0.1
	t10ms_f		equ	flag0.2
	keyact_f	equ	flag0.3
	keyin_f		equ	flag0.4
	keyfst_f	equ	flag0.5
	timout_f	equ	flag0.6
	t2m5_f		equ	flag0.7
	
	flag1		equ	[7eh]
	batlow_f	equ	flag1.0
	tim2out_f	equ	flag1.1
	dspon_f		equ	flag1.2
	twokey_f	equ	flag1.3
	almon_f		equ	flag1.4	
	to_low_f	equ	flag1.5
	to_high_f	equ	flag1.6
	lcdof_f		equ	flag1.7
	
	
	flag2		equ	[7fh]
	

	;*********constant.*********
	reg_adr		equ 	40h
	eep_bf_adr	equ	64h
	
	v_default	equ	02h
	
	no_key		equ	0
	k_1		equ	1
	k_2		equ	2
	k1_k2		equ	3
	k1_hld		equ	4
	k2_hld		equ	5
	k1_k2_hld	equ	6

;**********************************	
;*	    proc vector		  *	
;**********************************

	org 	00h
	jmp	_reset
	org	04h
	jmp	_rtint
	org	08h
	jmp	_tim_int
	org	0ch
	jmp	_adc_int
	org	10h
	jmp	_rtint	
	
;**********************************	
;*	   timer interrupt	  *	
;**********************************
_tim_int:
	mov	a_buffer,a	
	mov	a,status
	mov	stat_buf,a

	set	t2m5_f
	
_tim_int1:
	mov	a,stat_buf
	mov	status,a
	mov	a, a_buffer
	reti

;**********************************	
;*	   adc interrupt	  *	
;**********************************
_adc_int:
		
	mov	a_buffer,a
	mov	a,status
	mov	stat_buf,a
	
	;--get value---
	mov	a,adrh
	mov	adrl_bufy,a
	mov	a,adrl
	mov	int_mtemp3,a

	clr	adrh_bufy
	clr	status_c

	rlc	int_mtemp3
	rlc	adrl_bufy
	rlc	adrh_bufy

	clr	status_c
	rlc	int_mtemp3
	rlc	adrl_bufy
	rlc	adrh_bufy
	
	
	;--(v1+v2+...+v8)/2=vline--
	mov	a,adrl_bufy
	addm	a,adrl_bufx
	
	mov	a,adrh_bufy
	adcm	a,adrh_bufx
	
	inc	int_mtemp4
	meqis	int_mtemp4,8
	jmp	_adcintx
	
	clr	int_mtemp4
	
	mov	a,05h
	mov	int_mtemp3,a
	
_adc_int3:				;
	clr	status_c
	rrc	adrh_bufx
	rrc	adrl_bufx
	
	mov	a,adrh_bufx
	mov	vlineh,a
	
	mov	a,adrl_bufx
	mov	vlinel,a
	
	dec	int_mtemp3
	
	sz	int_mtemp3
	jmp	_adc_int3

	clr	adrh_bufx
	clr	adrl_bufx	
		
_adcint1:	
	mov	a,stat_buf
	mov	status,a
	mov	a,a_buffer
	
_adcintx:
	reti	
;**********************************
;*       other interrupt          *      
;**********************************	
_rtint:
	reti
;**********************************	
;*	      reset		  *	
;**********************************	
_reset:
	clr	emi
	nop
	nop
	nop
	nop
	call	_ini_port	
	call	_clr_ram	
	call	_ini_ram		
	call	_ini_adc
	call	_ini_int0
	clr	dspon_f
	set	lcdof_f
	call	_rd_eep_init
	set	emi
	
	
;	mov	a,55h
;	mov	eep_buf_addr,a
;	mov	eep_buf_addr1,a
;	mov	a,0aah
;	mov	eep_buf_addr2,a
;	mov	eep_buf_addr3,a
;	
;	clr	eep_addr
;	mov	a,04h
;	mov	eep_length,a
;	call	_i2c_write
;
;	delay
;	delay
;	delay
;	delay
;	delay
;	delay
;	delay
;	delay
;	delay
;	
;	clr	eep_addr
;	mov	a,04h
;	mov	eep_length,a
;	call	_i2c_read
;_loop:
;	nop
;	nop
;	nop
;	jmp	_loop	
	
	
;**********************************	
;*	   main proc		  *	
;**********************************		
_mainloop:
	
	sz	t2m5_f
	jmp	_2m5job

	sz	t10ms_f
	jmp	_10msjob
	
	sz	t100ms_f
	jmp	_100msjob
	nop
	nop
	nop
	nop
	jmp	_mainloop
;**********************************
_2m5job:
	clr	t2m5_f
	call	_timjob
	
	mov	a,03ch		;set all com input
	orm	a,pac
	
	sz	time_seq.0
	jmp	_dspdrv_0	
	
	sz	time_seq.1
	jmp	_dspdrv_1
	
	sz	time_seq.2
	jmp	_dspdrv_2

	sz	time_seq.3
	jmp	_dspdrv_3

	sz	time_seq.4
	jmp	_dspdrv_4

	sz	time_seq.5
	jmp	_dspdrv_5

	sz	time_seq.6
	jmp	_dspdrv_6			

	sz	time_seq.7	
	jmp	_dspdrv_7	
	jmp	_2m5jbx

_dspdrv_0:
	snz	lcdof_f
	jmp	_dspdrv_0_2

	mov	a,81h
	andm	a,pb
	
	mov	a,0c3h
	andm	a,pa
	
	mov	a,0c3h
	andm	a,pac
	
	mov	a,0c3h
	andm	a,pa
	
	jmp	_2m5jbx
	
_dspdrv_0_2:	
	;call	_vlin_to_dspbuf
;	mov	a,07h
;	mov	dsp_bufh,a
;	mov	a,88h
;	mov	dsp_bufl,a

;	snz	dspon_f
;	jmp	_2m5jbx

;	sz	batlow_f
;	jmp	_dspdrv_0_1
	
;	mov	a,00h			;display low
;	mov	dsp_bufh,a
;	mov	a,0cdh
;	mov	dsp_bufl,a
	
_dspdrv_0_1:	
	call	_ini_seg
	call	_dspjob			;dsp_bufh,dsp_bufl-->seg0_buf~seg5_buf
	;seg job*********	
	call	_segdrv
	;clr	seg0_p
	;set	seg1_p
	;set	seg2_p
	;set	seg3_p
	;set	seg4_p
	;set	seg5_p
	;com job*********
	
	set	com0_p
	clr	pac.2
	set	com0_p
	jmp	_inc_tseq


_dspdrv_1:
	;seg job*********
	call	_segdrv
	;set	seg0_p
	;clr	seg1_p
	;clr	seg2_p
	;clr	seg3_p
	;clr	seg4_p
	;clr	seg5_p
	;com job*********	
	clr	com0_p
	clr	pac.2
	clr	com0_p
	jmp	_inc_tseq	
_dspdrv_2:
	;seg job*********
	call	_segdrv
	;set	seg0_p
	;set	seg1_p
	;set	seg2_p
	;set	seg3_p
	;set	seg4_p
	;set	seg5_p	
	;com job*********
	set	com1_p
	clr	pac.3
	set	com1_p	
	jmp	_inc_tseq
	
_dspdrv_3:
	;seg job*********
	call	_segdrv
	;clr	seg0_p
	;clr	seg1_p
	;clr	seg2_p
	;clr	seg3_p
	;clr	seg4_p
	;clr	seg5_p
	;com job*********
	clr	com1_p
	clr	pac.3
	clr	com1_p
	jmp	_inc_tseq

_dspdrv_4:
	;seg job*********
	call	_segdrv
	;set	seg0_p
	;set	seg1_p
	;set	seg2_p
	;set	seg3_p
	;set	seg4_p
	;set	seg5_p
	;com job*********
	set	com2_p
	clr	pac.4
	set	com2_p	
	jmp	_inc_tseq
_dspdrv_5:
	;seg job*********
	call	_segdrv
	;clr	seg0_p
	;clr	seg1_p
	;clr	seg2_p
	;clr	seg3_p
	;clr	seg4_p
	;clr	seg5_p
	;com job*********
	clr	com2_p
	clr	pac.4
	clr	com2_p
	jmp	_inc_tseq

_dspdrv_6:		
	;seg job*********
	call	_segdrv
	;set	seg0_p
	;set	seg1_p
	;set	seg2_p
	;set	seg3_p
	;set	seg4_p
	;set	seg5_p
	;com job*********
	set	com3_p
	clr	pac.5
	set	com3_p
	jmp	_inc_tseq
		
_dspdrv_7:
	;seg job*********
	call	_segdrv
	;clr	seg0_p
	;clr	seg1_p
	;clr	seg2_p
	;clr	seg3_p
	;clr	seg4_p
	;clr	seg5_p
	;com job*********
	clr	com3_p
	clr	pac.5
	clr	com3_p	
	jmp	_inc_tseq	
						
_inc_tseq:
	rl	time_seq



_2m5jbx:	
	jmp	_mainloop
;**********************************
_100msjob:
	clr	t100ms_f
	call	_dec_tim2
	
	sz	almon_f
	jmp	_100msj_1
	
	clr	pb.7
	jmp	_100msjx
	
_100msj_1:
	call	_liutest
	
_100msjx:
	jmp	_mainloop	
;**********************************
;
_10msjob:
	clr	t10ms_f
	call	_start_adc
	call	_keyscan
	call	_dec_tim1
	call	_mode_jb
	jmp	_mainloop
	
;**********************************
_timjob:
	
	sdz	t10mcnt
	jmp	_timjob1
	
	set	t10ms_f
	mov	a,04h
	mov	t10mcnt,a
_timjob1:	
	sdz	t100mcnt
	jmp	_timjobx
	set	t100ms_f

	mov	a,28h
	mov	t100mcnt,a
_timjobx:
	ret
;**********************************
;*	subproc                   *
;**********************************	
;==================================
;	mode job
;==================================
_mode_jb:
	mgtms	vlinel,0b9h
	jmp	_mode_jb_3
	
_mode_jb_4:
	call	_ext_alarm
	set	lcdof_f
	jmp	_mode_jb_x
	
_mode_jb_3:
	mgtms	vlinel,01eh
	jmp	_mode_jb_4

_mode_jb_5:	
	clr	lcdof_f
	sz	lin_mod
	jmp	_mode_jb_1	
	jmp	_mode0_jb
	
_mode_jb_1:
	mneis	lin_mod,1
	jmp	_mode1_jb
	mneis	lin_mod,2
	jmp	_mode2_jb
	mneis	lin_mod,3
	jmp	_mode3_jb
	
	clr	lin_mod
	jmp	_mode_jb_x
_mode_inc:
	inc	sub_mod
_mode_jb_x:
	ret
;==================================
_mode0_jb:

	call	_is_k1
	sz	status_c
	jmp	_mod0_jb_2		 ;no
	
	
	mov	a,vlinel
	mov	vref,a
	
	mov	a,v_default
	mov	vdif,a
	
	call	_vref_to_eep
	set	dspon_f
	mov	a,01h
	mov	lin_mod,a
	clr	sub_mod
	jmp	_mode0_jbx
	
_mod0_jb_2:
	sz	sub_mod
	jmp	_mod0_jb_1
	jmp	_mod0_0
	
_mod0_jb_1:
	mneis	sub_mod,1
	jmp	_mod0_1
	mneis	sub_mod,2
	jmp	_mod0_2

	clr	sub_mod
	jmp	_mode0_jbx

_mod0_0:
	call	_vlin_to_dspbuf

	set	dspon_f
	call	_set_s0sec5
	jmp	_mode_inc
	
_mod0_1:
	snz	timout_f
	jmp	_mode0_jbx
	clr	dspon_f
	call	_set_s0sec5
	
	jmp	_mode_inc
	
_mod0_2:
	snz	timout_f
	jmp	_mode0_jbx
	
	call	_vlin_to_dspbuf
	set	dspon_f
	call	_set_s0sec5
	mov	a,01h
	mov	sub_mod,a
_mode0_jbx:
	jmp	_mode_jb_x
;==================================
_mode1_jb:
	
	call	_is_k1
	sz	status_c
	jmp	_mod1_jb_1
	
	call	_vref_to_dspbuf
	call	_3sec_tm2
	mov	a,02h
	mov	lin_mod,a
	clr	sub_mod
	jmp	_mode1_jbx
	
_mod1_jb_1:
	call	_is_k2
	sz	status_c
	jmp	_mod1_jb_2
	
	call	_ext_alarm
	call	_vd_to_dspbuf
	
	mov	a,vdif
	mov	vdtmp,a
	
	set	dspon_f
	mov	a,03h
	mov	lin_mod,a
	clr	sub_mod
	jmp	_mode1_jbx
	
_mod1_jb_2:
	call	_is_k1k2_hld
	sz	status_c
	jmp	_mod1_jb_3
	
	call	_ext_alarm
	call	_clr_param		;???
	call	_clr_eep
	clr	lin_mod
	clr	sub_mod
	jmp	_mode1_jbx
	
_mod1_jb_3:

	call	_alarm_det

	set	dspon_f	
	sz	sub_mod
	jmp	_mod1_1
	
_mod1_0:
	call	_vlin_to_dspbuf
	call	_set_s0sec5
	mov	a,01h
	mov	sub_mod,a
	jmp	_mode1_jbx

_mod1_1:
	snz	timout_f
	jmp	_mode1_jbx
	
	clr	sub_mod
	jmp	_mod1_0
		
_mode1_jbx:
	jmp	_mode_jb_x
	
;==================================
_mode2_jb:
	snz	tim2out_f
	jmp	_mod2_jb_1
	
	call	_vlin_to_dspbuf
	set	dspon_f
	mov	a,01h
	mov	lin_mod,a
	clr	sub_mod
	jmp	_mode2_jbx
	
_mod2_jb_1:
	sz	sub_mod
	jmp	_mod2_jb_2
	jmp	_mod2_0
_mod2_jb_2:	
	mneis	sub_mod,1
	jmp	_mod2_1
	mneis	sub_mod,2
	jmp	_mod2_2
	
	clr	sub_mod
	jmp	_mode2_jbx
	
_mod2_0:	
	set	dspon_f
	call	_set_s0sec5
	jmp	_mode_inc
	
_mod2_1:
	snz	timout_f
	jmp	_mode2_jbx
	
	clr	dspon_f
	call	_set_s0sec5
	jmp	_mode_inc
	
_mod2_2:
	snz	timout_f
	jmp	_mode2_jbx
	
	set	dspon_f
	call	_set_s0sec5
	mov	a,01h
	mov	sub_mod,a

_mode2_jbx:
	jmp	_mode_jb_x
	
;==================================
_mode3_jb:
	call	_is_k2
	sz	status_c
	jmp	_mod3_jb_1

	call	_chg_vdtmp
	call	_vdtmp_to_dspbuf
	jmp	_mod3_jb_2

_mod3_jb_1:
	call	_is_k1
	sz	status_c
	jmp	_mod3_jb_2
	
	mov	a,vdtmp
	mov	vdif,a
	call	_vd_to_eep
	call	_vlin_to_dspbuf
	set	dspon_f
	mov	a,01h
	mov	lin_mod,a
	clr	sub_mod
	jmp	_mode3_jbx
	
_mod3_jb_2:
	sz	sub_mod
	jmp	_mod3_jb_3
	jmp	_mod3_0
	
_mod3_jb_3:
	mneis	sub_mod,01h
	jmp	_mod3_1
	mneis	sub_mod,02h
	jmp	_mod3_2
	
	clr	sub_mod
	jmp	_mode3_jbx
	
_mod3_0:
	set	dspon_f
	call	_set_s0sec5
	jmp	_mode_inc

_mod3_1:
	snz	timout_f
	jmp	_mode3_jbx
	
	clr	dspon_f
	call	_set_s0sec5
	jmp	_mode_inc
	
_mod3_2:
	snz	timout_f
	jmp	_mode3_jbx
	
	set	dspon_f
	call	_set_s0sec5
	mov	a,01h
	mov	sub_mod,a

_mode3_jbx:
	jmp	_mode_jb_x
	
;==================================
;	mode subproc
;==================================

;----------------------------------
_eep_to_vref:
	clr	eep_addr
	mov	a,01h
	mov	eep_length,a
	call	_i2c_read
	mov	a,eep_buf_addr
	mov	vref,a
	ret
;----------------------------------
_eep_to_vd:
	mov	a,01h

⌨️ 快捷键说明

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