📄 commu.asm
字号:
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 + -