ldi ZL,Low(USARTAI_TXDAA) ;Z 指针指向发送数据首个字节
ldi ZH,High(USARTAI_TXDAA)
lds DCRC2B_DLength,USARTAI_TXDAA;置校验的数据长度初值
call DataCheck_CRC2B ;生成发送数据序列的 CRC 码
clr ZL ;清除允许更新发送数据标志
sts DataUPD_TXALW,ZL
USART_TXD_Data_RET:
ret ;子程序返回
;*** 此段程序用于向 USART 端口上发送数据的更新操作
USART_TXData_Process:
;此处插入更新发送数据程序
; 此段程序为示例数据的更新操作
MOV USARTAI_TEMP,r3
ldi USARTAI_TEMP2,$fc
sts USARTAI_TXDAA,USARTAI_TEMP2
ldi YL,Low(USARTAI_TXDAA+1) ;置接收作业地址指针为
ldi YH,High(USARTAI_TXDAA+1) ;首个接收数据地址指针
USART_TXData_Process1:
st Y+,USARTAI_TEMP
inc USARTAI_TEMP
dec USARTAI_TEMP2
brne USART_TXData_Process1
inc r3
; 示例程序结束
ret ;子程序返回
;*******************************************************************************
;*
;* USART 通信发生错误处理子程序 - “USART_Error”
;*
;* 说明:
;* 本子程序用于当 USART 通信发生错误时的处理。
;*
;*******************************************************************************
USART_Error:
push ZL ;压入寄存器中的数值到堆栈
push ZH
in ZL,SREG ;压状态寄存器中的标志值到堆栈
push ZL
ldi ZH,(1<<RXCIE)|(1<<UDRIE)|(1<<RXEN)|(1<<TXEN)
com ZH ;禁止接收器和发送器,禁止 USART
in ZL,UCSRB ;接收结束中断和数据寄存器空中断
and ZL,ZH
out UCSRB,ZL
;此处插入错误处理程序
;此处插入从头开始重新进行数据处理操作程序
ldi ZH,(1<<FE)|(1<<DOR)|(1<<PE)
com ZH ;清除帧错误(FE)、数据溢出(DOR)
in ZL,UCSRA ;及奇偶校验错误(UPE)标志
and ZL,ZH
out UCSRA,ZL
ldi ZH,(1<<UDRE)
in ZL,UCSRA ;置数据寄存器空(UDRE)标志
or ZL,ZH
out UCSRA,ZL
call USART_AINT_INI ;重新初始化 USART 异步中断接收和发送
call USART_TX_COMM_REPINI ;向对方发送“要求其重新初始化”命令
USART_Error_RET:
pop ZL
out SREG,ZL ;弹出堆栈中的标志值到状态寄存器
pop ZH ;弹出堆栈中的数值到寄存器
pop ZL
ret ;子程序返回
;*******************************************************************************
;*
;* 所有通信协议命令开头标识字符串 - “COMAgreement_Head”
;*
;*******************************************************************************
COMAgreement_Head:
.DB $03,"COM" ;通信协议命令开头标识字符(COM)
; │ │
; │ 通信协议命令开头标识字符(COM)
; 本指令字符串字符长度数值(不包括自已在内共 3 个字符)
;*******************************************************************************
;*
;* 向对方请求发送命令字符串 - “USART_AskTX”
;*
;*******************************************************************************
USART_AskTX:
.DB "ATX" ;向对方请求发送命令字符串(ATX)
;*******************************************************************************
;*
;* 允许对方发送命令字符串 - “USART_OKRX”
;*
;*******************************************************************************
USART_OKRX:
.DB "YET" ;允许对方发送命令字符串(YET)
;*******************************************************************************
;*
;* 要求对方重新发送命令字符串 - “USART_REPTX”
;*
;*******************************************************************************
USART_REPTX:
.DB "RPT" ;要求对方重新发送命令字符串(RPT)
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] 下一页
本文关键字:通信 程序 AVR单片机,单片机-工控设备 - AVR单片机