cpi ZL,DataUPD_RALWI ;是,则继续
brne USART_RXD_Data_RET ;否,直接返回
lds ZL,USARTAI_RXUPD ;检查接收作业是否己更新?
cpi ZL,USARTAI_RUPDI ;是,则继续
brne USART_RXD_Data_RET ;否,直接返回
lds ZL,USARTAI_TXEnd ;发送作业是否全部结束?
cpi ZL,USARTAI_TEndI ;是,继续
brne USART_RXD_Data_RET ;否,返回,等待发送作业结束
lds ZL,USARTAI_RXEnd ;检查接收作业是否全部结束?
cpi ZL,USARTAI_REndI ;是,则继续
brne USART_RXD_Data_Error ;否,转至接收错误处理
USART_RXD_Data_Check:
ldi ZL,Low(USARTAI_RXDAA) ;Z 指针指向接收数据的首字节
ldi ZH,High(USARTAI_RXDAA)
lds DCRC2B_DLength,USARTAI_RXDAA;置校验的数据长度初值
call DataCheck_CRC2B ;校验接收的数据是否正确?
or YL,YH ;是,继续
brne USART_RXD_Data_Error ;否,转至接收错误处理
rcall USART_TX_COMM_DataOK ;向对方发送“接收数据正确”命令
ldi ZL,USARTAI_RCOMI ;置接收命令作业标志值
sts USARTAI_RXCOM,ZL
rcall USART_RXData_Process ;调用接收数据处理子程序
clr ZL ;清除接收作业己更新标志
sts USARTAI_RXUPD,ZL
clr ZL ;清除允许处理接收数据标志
sts DataUPD_RXALW,ZL
rjmp USART_RXD_Data_RET ;返回
USART_RXD_Data_Error:
rcall USART_RXD_Error ;调用接收错误处理子程序
USART_RXD_Data_RET:
ret ;子程序返回
;*** 此段程序用于对从 USART 端口上接收到的数据进行处理操作
USART_RXData_Process:
;此处插入接收数据处理程序
ret ;子程序返回
;*******************************************************************************
;*
;* 向 USART 端口上发送数据更新子程序 - “USART_TXD_Data”
;*
;* 说明:
;* 本子程序用于更新向 USART 端口上上发送数据,本子程序中包含有数据循环
;* 冗余检测校验子程序。
;* 本子程序要在主程序中不间断循环查询运行。
;*
;* SRAM 中标志字节用法:
;* 入口标志:本子程序将检查这个标志,只有这个标志置值后才允许更新数据。
;* 允许更新发送数据(DataUPD_TXALW)= $c0(DataUPD_TALWI)
;* 出口标志:更新发送数据操作得到执行后,将对下面这个标志置值。
;* 允许更新发送数据(DataUPD_TXALW)= $00
;*
;*******************************************************************************
USART_TXD_Data:
lds ZL,DataUPD_TXALW ;检查是否允许更新发送数据?
cpi ZL,DataUPD_TALWI ;是,则继续
brne USART_TXD_Data_RET ;否,直接返回
lds ZL,USARTAI_TXEnd ;发送作业是否全部结束?
cpi ZL,USARTAI_TEndI ;是,继续
brne USART_TXD_Data_RET ;否,返回,等待发送作业结束
rcall USART_TX_COMM_AskTX ;发送“向对方请求发送”命令
rcall USART_TXData_Process ;调用更新发送数据子程序
USART_TXD_Data_Check:
lds ZL,USARTAI_TXDAA ;取发送的数据长度值
adiw ZL,$03 ;发送的总长度=发送的数据长度值+
sts USARTAI_TXDAA,ZL ;1 个长度字符字节+ 2 个校验字节
MOV USARTAI_TEMP2,ZL
ldi ZL,Low(USARTAI_TXDAA-2) ;发送数据的校验字节在发送数据序列
ldi ZH,High(USARTAI_TXDAA-2) ;尾部后两个字节
clr USARTAI_TEMP
add ZL,USARTAI_TEMP2 ;Z 指针指向发送数据的校验字节
adc ZH,USARTAI_TEMP
clr USARTAI_TEMP
st Z+,USARTAI_TEMP ;清除发送数据的尾部后两个字节
st Z+,USARTAI_TEMP ;的校验字节值
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] 下一页
本文关键字:通信 程序 AVR单片机,单片机-工控设备 - AVR单片机