📄 uart_int.c
字号:
#include "uart.h"
#include "R44b0.h"
#define KEY_BUFLEN 100
static unsigned char keyBuf[KEY_BUFLEN];
volatile static int keyBufWrPt=0;
volatile static int keyBufRdPt=0;
static char *uart0TxStr;
char Uart_IntGetkey(void)
{
if(keyBufRdPt==KEY_BUFLEN)
keyBufRdPt=0;
while(keyBufWrPt==keyBufRdPt); //until FIFO is triggered
return keyBuf[keyBufRdPt++];
}
void __irq Uart0_RxInt(void)
{
rI_ISPC=BIT_URXD0;
keyBuf[keyBufWrPt++]=RdURXH0();
if(keyBufWrPt==KEY_BUFLEN)
keyBufWrPt=0;
}
//unsigned int txcount=0;
void __irq Uart0_TxInt(void)
{
// rI_ISPC=BIT_UTXD0;
// txcount++;
if(*uart0TxStr != '\0')
{
WrUTXH0(*uart0TxStr++);
rI_ISPC=BIT_UTXD0;
}
else
{
rUCON0 &= 0x3f3;//workaround
rI_ISPC=BIT_UTXD0;
rINTMSK|=BIT_UTXD0;
}
}
void Uart_TxEmpty(int ch)
{
if(ch==0)
while(!(rUTRSTAT0 & 0x4)); //wait until tx shifter is empty.
else
while(!(rUTRSTAT1 & 0x4)); //wait until tx shifter is empty.
}
void Test_Uart0()
{
int key;
keyBufRdPt=keyBufWrPt=0;
pISR_UTXD0=(unsigned)Uart0_TxInt;
pISR_URXD0=(unsigned)Uart0_RxInt;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -