📄 d_pccomm.r
字号:
//
// Programmer
//
// Date init 14.12.2004
//
// Reviser $Author:: Dktochpe $
//
// Revision date $Date:: 22-02-05 11:10 $
//
// Filename $Workfile:: d_pccomm.r $
//
// Version $Revision:: 6 $
//
// Archive $Archive:: /LMS2006/Sys01/Ioctrl/Firmware/Source/d_pccomm $
//
// Platform C
//
#ifdef ATMEGAX8
#define BAUD_RATE 4800L
#define RX_BUFFERSIZE (BYTES_TO_TX)
#define TX_BUFFERSIZE (BYTES_TO_RX)
UBYTE RxBuffer[RX_BUFFERSIZE];
UBYTE RxPointer;
UBYTE TxBuffer[TX_BUFFERSIZE];
UBYTE TxPointer;
#pragma language=extended
#pragma vector = USART_RX_vect
__interrupt void RxInterrupt(void)
{
UBYTE *pBuffer;
RxBuffer[RxPointer] = UDR0;
RxPointer++;
if (RxPointer >= RX_BUFFERSIZE)
{
pBuffer = (UBYTE*)&IoToAvr;
for (RxPointer = 0;RxPointer < RX_BUFFERSIZE;RxPointer++)
{
*pBuffer = RxBuffer[RxPointer];
pBuffer++;
}
RxPointer = 0;
pBuffer = (UBYTE*)&IoFromAvr;
for (TxPointer = 0;TxPointer < TX_BUFFERSIZE;TxPointer++)
{
TxBuffer[TxPointer] = *pBuffer;
pBuffer++;
}
TxPointer = 0;
UDR0 = TxBuffer[TxPointer];
TxPointer++;
UCSR0B |= 0x40;
}
}
#pragma language=extended
#pragma vector = USART_TX_vect
__interrupt void TxInterrupt(void)
{
UDR0 = TxBuffer[TxPointer];
TxPointer++;
if (TxPointer >= TX_BUFFERSIZE)
{
UCSR0B &= ~0x40;
TxPointer = 0;
RxPointer = 0;
}
}
#define INITPcComm {\
DDRD |= 0x02;\
DDRD &= ~0x01;\
UBRR0 = (UWORD)((OSC/(16 * BAUD_RATE)) - 1);\
UCSR0A = 0x40;\
UCSR0B = 0x98;\
UCSR0C = 0x36;\
RxPointer = 0;\
}
#define EXITPcComm {\
UCSR0B = 0x00;\
PORTD &= ~0x01;\
DDRD |= 0x01;\
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -