串口接收到的數據一定是字符型,如何把字符型里的數字轉成整型?
我們知道,0的ASCII碼值是0X30,如果發送一個“9”,那么得到的ASCII碼值為0X39,減去0X30就完成了字符型到整型的轉變
例:
unsigned int k=0;
unsigned char j="5";
k=j-0x30; //這樣k就是5了
拆分、轉換、合并的源程序如下
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
u8 chatet[5]={'1','1','0','1','\0'};
u16 hhj=0;
u16 kl1=1;
u16 kl2=3;
sbit ght=P2^0;void delay(u16 n);
void UsartInit()
{
SCON=0X50;
TMOD=0X20;
PCON=0X80;
TH1=0XF3;
TL1=0XF3;
ES=1;
EA=1;
TR1=1;
}
void main()
{
UsartInit();
while(1)
{
kl1=(chatet[0]-0X30)*10+chatet[1]-0X30;
kl2=(chatet[2]-0X30)*10+chatet[3]-0X30;
ght=0;
delay(kl1);
ght=1;
delay(kl2);
}
}
void delay(u16 n)
{
unsigned int i=0,j=0;
for(i=0;i<n;i++)
for(j=0;j<21738;j++);
}
void Usart() interrupt 4
{
chatet[hhj]=SBUF;
hhj=hhj+1;
if(hhj==4)
{
hhj=0;
}
RI=0;
TI=0;
}
|