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

📄 commu.asm

📁 一种简单可行的串行通讯方式
💻 ASM
📖 第 1 页 / 共 2 页
字号:
		mov   	rscbufft, #121	;send "y"
		lcall 	send_rsc_port
		mov   	rscbufft, #35		;send "#"
           	lcall 	send_rsc_port
		mov   	rscbufft, #121	;send "y"
		lcall 	send_rsc_port


		setb	receive_f		; 表示串行通讯接收到数据

read_rsc_4:	clr   	d_start_f

read_exit:  	pop	acc
		pop    psw
             	ret


;******************************************************************
;               data out
;******************************************************************
;==================================================================
;name: data_out
;number:
;used resoures: r0, r2 
;algorithm: 送"*xxxxxxx+回车" data1=42, data8=data2+...+data7
;      
;entry: data1~data8
;exit:  no
;------------------------------------------------------------------
data_out:	push 	psw
		mov	data1, #42
		mov	a, data2	; 本监控器地址
		add	a, data3
		add	a, data4
		add	a, data5
		add	a, data6
		add	a, data7
		clr	acc.7
		mov	data8, a

		clr	send_f
		setb	receive_m	;接收"#y"信息模式
		mov	dsp_hz0, #0
data_out_1:	lcall	sd_nc

		mov	r7, #200
data_out_2:	nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		djnz	r7, data_out_2

		jnb	send_f, data_out_1
		clr	receive_m	;回到正常接收信息模式

		pop	psw
		ret


;******************************************************************
;               通过串口送数据
;******************************************************************
;==================================================================
;name: sd_nc
;number:
;used resoures: r0, r2 
;algorithm: 通过串口送data1~data8+回车到NC_COM模块
;      
;entry: data1~data8
;exit:  no
;------------------------------------------------------------------
sd_nc:		push 	psw
		clr	ea
		mov	r1, #data1
		mov	dsp_hz15, #8

sd_nc_1:	mov	rscbufft, @r1
		lcall	send_rsc_port
		inc	r1
		djnz	dsp_hz15, sd_nc_1

		mov	rscbufft, #13
		lcall	send_rsc_port

		pop	psw
		setb	ea
		ret


;==================================================================
;name: send_rsc_port
;number:
;used resoures: internal:acc
;               
;algorithm:
;entry:  No
;exit:   
;------------------------------------------------------------------
send_rsc_port:  push    psw

		setb    tb8
            	mov     sbuf,  rscbufft      ; send data to serial port
s_rsc_p_w: 	jbc     ti,  s_rsc_p_e
            	sjmp	s_rsc_p_w

s_rsc_p_e:	pop     psw
            	ret

;******************************************************************
;               SEND DATA TO MAIN CPU
;******************************************************************
;==================================================================
;name: commu
;number:
;used resoures: internal:acc
;               
;algorithm:send data2~data7 to main cpu 
;entry:  No
;exit:   
;------------------------------------------------------------------
sd_cpu:	clr	comi
		mov	a, p1
		jb	acc.0, sd_cpu
		jnb	acc.1, sd_cpu
		jb	acc.2, sd_cpu
		jnb	acc.3, sd_cpu

		setb	comi
		clr	dira		;data send to main cpu

sd_cpu1:	mov	p0, data2
		setb	ans4		;1st byte
		clr	ans5
		clr	ans6
		clr	ans7
		mov	a, p1
		anl	a, #00001111b
		cjne	a, #1, sd_cpu1
sd_cpu2:	mov	p0, data3
		clr	ans4		;2nd byte
		setb	ans5
		clr	ans6
		clr	ans7
		mov	a, p1
		anl	a, #00001111b
		cjne	a, #2, sd_cpu2
sd_cpu3:	mov	p0, data4
		setb	ans4		;3rd byte
		setb	ans5
		clr	ans6
		clr	ans7
		mov	a, p1
		anl	a, #00001111b
		cjne	a, #3, sd_cpu3
sd_cpu4:	mov	p0, data5
		clr	ans4		;4th byte
		clr	ans5
		setb	ans6
		clr	ans7
		mov	a, p1
		anl	a, #00001111b
		cjne	a, #4, sd_cpu4
sd_cpu5:	mov	p0, data6
		setb	ans4		;5th byte
		clr	ans5
		setb	ans6
		clr	ans7
		mov	a, p1
		anl	a, #00001111b
		cjne	a, #5, sd_cpu5
sd_cpu6:	mov	p0, data7
		clr	ans4		;5th byte
		setb	ans5
		setb	ans6
		clr	ans7
		mov	a, p1
		anl	a, #00001111b
		cjne	a, #6, sd_cpu6

		ret




delay50ms:  	mov	delay3, #2 
delay50ms0:	mov    delay1,#200            ;2us
delay50ms_lp:	mov  	delay2,#250              ;2us  2*4=8us
           	djnz 	delay2,$                 ;2us  250*2=500us
          	djnz 	delay1, delay50ms_lp      ;2us 20*500+8=10.008ms
		djnz	delay3, delay50ms0
		
           	ret                             ;2us
;--------------------------------------------------------------------

;******************************************************************
;               RECEIVE DATA FROM MAIN CPU
;******************************************************************
;==================================================================
;name: commu
;number:
;used resoures: internal:acc
;               
;algorithm:
;entry:  No
;exit:   
;------------------------------------------------------------------
re_cpu:    	push	psw
            	clr     ea

		setb	dira
		clr	ans4
		clr	ans5
		clr	ans6
		clr	ans7

re_cpu1:	mov	a, p1
		anl	a, #00001111b
		cjne	a, #1, re_cpu1
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		mov	data2, p0

re_cpu2:	mov	a, p1
		anl	a, #00001111b
		cjne	a, #2, re_cpu2
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		mov	data3, p0

re_cpu3:	mov	a, p1
		anl	a, #00001111b
		cjne	a, #3, re_cpu3
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		mov	data4, p0

re_cpu4:	mov	a, p1
		anl	a, #00001111b
		cjne	a, #4, re_cpu4
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		mov	data5, p0

re_cpu5:	mov	a, p1
		anl	a, #00001111b
		cjne	a, #5, re_cpu5
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		mov	data6, p0

re_cpu6:	mov	a, p1
		anl	a, #00001111b
		cjne	a, #6, re_cpu6
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		mov	data7, p0

		setb	out_cpu_f

;		inc	data2
;		inc	data3

;		lcall	sd_cpu

re_cpu_e: 	pop	psw
		setb    ea
            	reti

end

⌨️ 快捷键说明

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