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

📄 ydjk_com0.s43

📁 通过MSP430F135单片机内部的模数转换器实现简单的电量计算
💻 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 + -