标题: 一种通过ASCII码值的字符型转整型方式 [打印本页]

作者: madnick16    时间: 2019-4-19 17:59
标题: 一种通过ASCII码值的字符型转整型方式
串口接收到的数据一定是字符型,如何把字符型里的数字转成整型?
我们知道,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;       
}



作者: devcang    时间: 2019-4-19 21:02
我们知道,0的ASCII码值是0X30

应该是

我们知道,'0'的ASCII码值是0X30



我们知道,数字0的ASCII码值是0X30


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1