【电子资讯】以9个数据的方式发送帧
汇编代码例程
USART_Transmit:
;等待发送缓冲器为空
sbis UCSRA.UDRE
rj mp USART_Transmit
;将第9位从Rl7中复制到TXB8
cbi UCSRB,TXB8
sbrc rl7,0
sbi UCSRB,TXB8
;将低8位数据放入缓冲器,发送数据
out U职.rl6
ret
C代码例程:
void USART_Transmit(uns igned int data)
(
/*等待发送缓冲器为空*/
while(!(UCSRA&(1<
;
/*将第9位复制到TXB8*/
UCSRB&=~(1<
if(data&0x0100)
UCSRBI=(I<
/*将数据放入缓冲器,发送数据*/
UDR=data;
}
第9位数据在多机通信中用于表示地址帧,在同步通信中可以用于协议处理。
发送器标志和中断
发送器标志和中断USART发送器有两个标志位:USART数据寄存器空标志UDRE及传输结束标志TXC,两个标志位都可以产生中断。数据寄存器空UDRE标志位表示发送缓冲器是否可以接受一个新的数据,该位在发送缓冲器空时被置“1”;当发送缓冲器包含需要发送的数据时清零。为与将来的器件兼容,写L(SRA寄存器时该位要写“0’’。
当UCSRB寄存器中的数据寄存器空中断使能位UDRIE“1”只要UDRE被置位(且全局中断使能),就将产生USART数据寄存器空中断请求。对寄存器UDR执行写操作.则清零UDRE。
当采用中断方式传输数据时,在数据寄存器空中断服务程序中必须写一个新的数据到UDR以清零UDRE,或者是禁止数据寄存器空中断。否则一旦该中断程序结束,一个新的中当整个数据帧移出发送移位寄存器,同时发送缓冲器中又没有新的数据时,发送结束标志TXC.置位。Txc在传送结束中断执行时自动清零,也可在该位写“l”来清零。TXC标志位对于采用如rs485准的半双工通信接口十分有用。在这些应用里,一旦传送完毕.应用程序必须释放通信总线并进入接收状态。当ucsRB上的发送结束中断使能位TXCIE与全局中断使能位均被置为“1,,时,随着Txc标志位的置位,USART发送结束中断将被执行。一旦进人中断服务程序,TXC标志位即被自动清零,中断处理程序不必执行TXC清零操作。
校验位
奇偶校验产生电路为串行数据帧生成相应的校验位。校验位使能(UPMl—1)时,发送控制逻辑电路会在数据的最后一位与第1个停止位之间插入奇偶校验位。
禁止发送
TXEN清零后,只有等到所有的数据发送完成后发送器才能够真正禁止,即发送移位寄存器与发送缓冲寄存器中没有要传送的数据。发送器禁止后,TxD引脚恢复其通用I/O功能。
更多推荐信息