📄 ydjk_com0.s43
字号:
; 在发送有效字节之前应先发送一个无效字节比如:空格( 0aH )
; 如果没有无效字节的起始发送就可能漏发第一个有效字节!
;****************
COM0_TX mov.b #00h,rx0_no ;清除接收定时记数标志
bit.b #04h,fg_rx0
jnz tx0_nml
reti
tx0_nml push R15
dec.b tx0_cnt
jnz tx0_go1
bit.b #08h,fg_rx0
jz tx0_go0
mov.b #10h,fg_rx0
mov.b #00h,delay
pop R15
reti
;*********************
tx0_go0 mov #real_data+39,R15
mov.b tx_crc_xr,0(R15)
mov.b tx_crc_ad,1(R15)
bis.b #08h,fg_rx0
mov.b #03h,tx0_cnt
;**********
tx0_go1 mov first_sd,R15
mov.b @R15,&TXBUF0
xor.b @R15,tx_crc_xr
add.b @R15,tx_crc_ad
add #0001h,first_sd
cmp #380h,first_sd
jlo tx0_ov
; mov #WDT_ARST_1_9,&WDTCTL ;
jmp $
tx0_ov pop R15
reti
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
;*************每次接收完成后必须清除接收过程中设置的标志
COM0_RX mov.b &RXBUF0,temp_rx0
cmp.b #00h,fg_exe
jne rx_1
cmp.b #0fah,temp_rx0 ;0fa
jne rx_err
rx_0 mov.b #01h,fg_exe
reti
rx_1 cmp.b #01h,fg_exe
jne rx_2
cmp.b #0b8h,temp_rx0 ;0b8
jne rx_err
mov.b #02h,fg_exe
reti
rx_2 cmp.b #02h,fg_exe
jne rx_3
cmp.b #6dh,temp_rx0 ;06d
jne rx_err
mov.b #03h,fg_exe
reti
rx_3 cmp.b #03h,fg_exe
jne rx_4
cmp.b #0f0h,temp_rx0 ;0f0
jne rx_err
mov.b #04h,fg_exe
reti
rx_4 cmp.b #04h,fg_exe
jnz rx_5
cmp.b #00h,temp_rx0 ;000
jne rx_err
mov.b #05h,fg_exe
reti
rx_5 cmp.b #05h,fg_exe
jne rx_6
cmp.b #00h,temp_rx0 ;000
jne rx_err
mov.b #06h,fg_exe
reti
rx_6 cmp.b #06h,fg_exe
jne rx_7
cmp.b #0dfh,temp_rx0 ;0df
jne rx_err
mov.b #07h,fg_exe
reti
rx_7 cmp.b #07h,fg_exe
jne rx_8
cmp.b #0fh,temp_rx0 ;00f
jne rx_err
mov.b #08h,fg_exe
reti
rx_8 cmp.b #08h,fg_exe
jne rx_err
cmp.b #0dh,temp_rx0 ;00d
jne rx_err
bis.b #80h,&P2OUT ;准备发送数据
mov.b #80h,fg_rx0 ;设置发送标志
rx_err mov.b #00h,fg_exe ;清除接收标志
rx_ov reti
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
;&&&&&&&&&&&&&&&&&以上内容均为发送内容
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
rxtx_com0 bis.b #80h,&P2OUT ;准备发送数据
mov #0800h,R15
tx_wait dec R15
jnz tx_wait
mov #real_data,first_sd
mov #real_data,R15
mov.b #0fah,0(R15) ;写入电表地址
inc R15
mov.b #8bh,0(R15) ;写入命令标识1
inc R15
mov.b #0d6h,0(R15) ;写入命令标识2
mov #real_data+41,R15
mov.b #0dh,0(R15) ;写入结束符
mov.b #39,tx0_cnt
mov first_sd,R15
mov.b @R15,&TXBUF0
mov.b @R15,tx_crc_xr
mov.b @R15,tx_crc_ad
inc first_sd
mov.b #04h,fg_rx0
ret
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -