📄 mian.c
字号:
/*--- include files ---*/
#include "44blib.h"
#include "44b.h"
void Uart_SendByte1(int data);
/*--- function code ---*/
char str_send[17] = "Embest S3CEV40 >\0";
char str_error[50] = "TERMINAL OVERFLOW : 256 character max !";
char str[256];
char CR[1] = {0x0A};
static int whichUart=0;
void Main(void)
{
char input_char; /* 用户输入的字符 */
int i;
char *pt_str = str;
rPCONA = 0x1ff;
// PORT B GROUP
// BIT 10 9 8 7 6 5 4 3 2 1 0
// /CS5 /CS4 /CS3 /CS2 /CS1 GPB5 GPB4 /SRAS /SCAS SCLK SCKE
// EXT NIC USB IDE SMC NC NC Sdram Sdram Sdram Sdram
// 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1
rPDATB = 0x7ff; // P9-LED1 P10-LED2
rPCONB = 0x1cf;
// PORT C GROUP
// BUSWIDTH=16
// PC15 14 13 12 11 10 9 8
// I I RXD1 TXD1 I I I I
// NC NC Uart1 Uart1 NC NC NC NC
// 00 00 11 11 00 00 00 00
// PC7 6 5 4 3 2 1 0
// I I I I I I I I
// NC NC NC NC IISCLK IISDI IISDO IISLRCK
// 00 00 00 00 11 11 11 11
rPDATC = 0xff00;
rPCONC = 0x0ff0ffff;
rPUPC = 0x30ff; //PULL UP RESISTOR should be enabled to I/O
// PORT D GROUP
// PORT D GROUP(I/O OR LCD)
// BIT7 6 5 4 3 2 1 0
// VF VM VLINE VCLK VD3 VD2 VD1 VD0
// 00 00 00 00 00 00 00 00
rPDATD= 0xff;
rPCOND= 0xaaaa;
rPUPD = 0x0;
// These pins must be set only after CPU's internal LCD controller is enable
// PORT E GROUP
// Bit 8 7 6 5 4 3 2 1 0
// CODECLK LED4 LED5 LED6 LED7 BEEP RXD0 TXD0 LcdDisp
// 10 01 01 01 01 01 10 10 01
rPDATE = 0x1ff;
rPCONE = 0x25529;
rPUPE = 0x6;
// PORT F GROUP
// Bit8 7 6 5 4 3 2 1 0
// IISCLK IISDI IISDO IISLRCK Input Input Input IICSDA IICSCL
// 100 100 100 100 00 00 00 10 10
rPDATF = 0x0;
rPCONF = 0x252a;
rPUPF = 0x0;
// PORT G GROUP
// BIT7 6 5 4 3 2 1 0
// INT7 INT6 INT5 INT4 INT3 INT2 INT1 INT0
// S3 S4 S5 S6 NIC EXT IDE USB
// 11 11 11 11 11 11 11 11
rPDATG = 0xff;
rPCONG = 0xffff;
rPUPG = 0x0; //should be enabled
rSPUCR = 0x7; //D15-D0 pull-up disable
/* Non Cache area */
rNCACHBE0=((Non_Cache_End>>12)<<16)|(Non_Cache_Start>>12);
/* Low level default */
rEXTINT=0x0;
/* Port_Init(); */ /* 初始化44B0X的I/O口 */
rI_ISPC = 0xffffffff; /* 清中断 pend */
Uart_Init(0,115200); /* 初始化44B0X的串口1 */
/* printf interface */
Uart_Printf("\n");
Uart_Printf(str_send);
/* get user input */
Delay(500);
//* Terminal handler
while(1)
{
*pt_str = Uart_Getch();
Uart_SendByte1(*pt_str);
if (*pt_str == 0x0D)
{
if (pt_str != str)
{
//* Send str_send
Uart_SendByte1(CR[0]);
//* Send received string
pt_str = str;
while (*pt_str != 0x0D)
{
Uart_SendByte1(*pt_str);
pt_str++;
}
pt_str = str;
}
Uart_SendByte1(CR[0]);
Uart_Printf(str_send);
}
else
pt_str++;
}
}
void Uart_SendByte1(int data)
{
if(whichUart==0)
{
if(data=='\n')
{
while(!(rUTRSTAT0 & 0x2));
Delay(10); //因为超能为终端的响应较慢
WrUTXH0('\r');
}
while(!(rUTRSTAT0 & 0x2)); //等待直到THR为空
Delay(10);
WrUTXH0(data);
}
else
{
if(data=='\n')
{
while(!(rUTRSTAT1 & 0x2));
Delay(10); //
rUTXH1='\r';
}
while(!(rUTRSTAT1 & 0x2)); //
Delay(10);
rUTXH1=data;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -