📄 carduart.cpp.bak
字号:
//cardUART.cpp : source file for the card UART
//
#include "card.h"
#include "cardUART.h"
/////////////////////////////////////////////////////////////////////////////
//cardUART
void uart_init(void)
{
//19200
UCSRB = 0x00; //UCSR0B = 0x00; //disable while setting baud rate
UCSRA = 0x00; //UCSR0A = 0x00; //Disable double
UCSRC = 0x06; //UCSR0C = 0x06;
UBRRL = 0x0c; //UBRR0L = 0x0c;
UBRRH = 0x00; //UBRR0H = 0x00;
UCSRB = 0x90; //UCSR0B = 0x90;
}
ISR(SIG_USART_RECV)
{
// TODO: Add your code here
UDRBuff = UDR;
if(UartReceive == UART_IS_RECEIVING)
{
RxBuff1[RxByteCounts] = UDRBuff;
RxByteCounts++;
if(RxByteCounts == 1)
{
RxPayloadLength = UDRBuff;
RxCheckSum += UDRBuff;
}
else
{
if(RxByteCounts == (RxPayloadLength + 2))
{
UartReceive = UART_RECEIVE_ONE_PACKET;
for(RxByteCounts = 0;RxByteCounts < RX_BUFF_LEN;RxByteCounts++)
{
RxBuff[RxByteCounts] = RxBuff1[RxByteCounts];
}
RxCheckSum = 0x100 - RxCheckSum;
if(RxCheckSum != UDRBuff)
{
UartReceive = UART_RECEIVE;
//UartReceive = UART_RECEIVE_ERROR_PACKET;
}
}
else
{
RxCheckSum += UDRBuff;
}
}
}
else
{
if(UartReceive == UART_RECEIVE)
{
if(UDRBuff == 0x55)
{
UartReceive = UART_IS_RECEIVING;
RxByteCounts = 0;
RxTimeOut = 0;
RxCheckSum = 0;
}
}
}
//uart has received a character in UDR
}
//ISR(SIG_USART_TRANS)
//{
// TODO: Add your code here
//}
ISR(SIG_USART_DATA)
{
// TODO: Add your code here
wTxByteCounts++;
if(wTxByteCounts < wTxByteNumber)
{
UDRBuff = TxBuff[wTxByteCounts];
UDR = UDRBuff;
if(wTxByteCounts > 1)
{
TxCheckSum += UDRBuff;
}
}
else if(wTxByteCounts == (wTxByteNumber))
{
if(wTxByteNumber < 3)
{
UCSRB &= (~RE_UDRIE0 & ~RE_TXEN0);
}
else
{
UDR = 0x100 - TxCheckSum;
UCSRB &= (~RE_UDRIE0 & ~RE_TXEN0);
}
bTxBuffLock = FALSE;
}
//else
//{
//UCSR0B &= (~RE_UDRIE0 & ~RE_TXEN0);
//}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -