stdlf
分类:
2009-10-11 19:00:40
//写串口终端函数---将ARM内核接收到的字母回写到终端里
void WrUart(unsigned char WriteData)
{
if(WriteData=='\r') //如果是换行符,则回车
{
while(!(rUTRSTAT0 & 0x2)); //rUTRSTAT0[1]=0(The buffer register is not empty)原地等待
Delay(10); //延时,超级终端显示速度慢
rUTXH0 = '\n';
}
while(!(rUTRSTAT0 & 0x2)); //rUTRSTAT0[1]=1(Tx buffer empty)向下执行
Delay(10);
rUTXH0 = WriteData; //将向终端写入的WriteData回显到终端
}
*************************************
//函数功能将串口接收到的字符串根据形式(进制)转换为int数据返回
*************************************
int Uart_GetIntNum(void)
{
char str[30];
char *string=str; //定义指向str数组的指针
int base=10;
int minus=0;
int lastIndex;
int result=0;
int i;
Uart_GetString(string); //接收定符串
if(string[0]=='-') //判断输入数是否为负数
{
minus=1;
string++;
}
if(string[0]=='0' && (string[1]=='x' || string[1]=='X')) //判断是否是十六进制数
{
base=16;
string+=2; //0x两个字符移动两位
}
lastIndex=strlen(string)-1; //最后一个索引不包含'\0',因为string从0开始最后一个元素下脚码=字符数组长度-1
if(lastIndex<0)
return -1;
if( string[lastIndex]=='h' || string[lastIndex]=='H' ) //hex:16进制
{
base=16; //如果末尾为H h则为16进制
string[lastIndex]=0; //最后的符号H或h 用0代替
lastIndex--
} //将str指向的字符串转换成一个整数值
if(base==10) // 如果输入的是10进制 int atoi (const char *str)
{ {
result=atoi(string); //将字符串string每个元素都转换成整数值 int i,j=0;
result=minus ? (-1*result):result; //minus表示负,将结果转换为正 for(i=0;str[i]!='\0';i++)
} {
else // 如果输入的不是10进制 j=j*10+(str[i]-'0');
{ }
for(i=0;i<=lastIndex;i++) return j;
{
| _________________ }
| if(isalpha(string[i]))
| {
| if(isupper(string[i]))
| result=(result<<4)+string[i]-'A'+10;
| else
| result=(result<<4)+string[i]-'a'+10;
| }
|
| else
| {
| result=(result<<4)+string[i]-'0';
| }
| -------------------------
}
result=minus ? (-1*result):result;
}
return result;
} //此}与函数定义配对
************************************
void Uart_GetString(char *string) //该函数具有回送功能
{
char *string2 = string;
char c; //c为输入的数字
while((c = Uart_Getch())!=''''\r'''')
{ //如果不是回车\/
if(c==''''\b'''')
{ //如果是退格\/
if( (int)string2 < (int)string ) //刚开始时string2=string设为=0x40,比较string2与string,if()不成立执行else srting++
{ //后string=0x41(string2仍=0x40),此时若c='\b'再比较if条件成立,实现退格。
Uart_Printf("\b \b");
string--;
}
}
else //如果 c !='\r'且!='\b' \/