欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

串口收到字符后进展转换

更新时间: 2014-01-05 03:14:13 责任编辑: Author_N1

 

串口收到字符后进行转换
如果串口收到收据,如何进行格式转换?
如我想把每个数据都转成对应的16进制ascii,并且转完后,以固定格式发送出去,比如a,就是AT%IPSEND="61",比如b,就是AT%IPSEND="62",ab就是AT%IPSEND="6162"
下面是教科书上的程序:
#include <reg52.h>
#define uchar unsigned char ;
bit Flag;   //串口接收到字符的标志
unsigned char UartChar;

    
/*--------------------------------------------------------------
                           函数声明
--------------------------------------------------------------*/
void InitUART(void);
void SendByte(unsigned char dat);
void SendStr(unsigned char *s);

/*--------------------------------------------------------------
                            主函数
--------------------------------------------------------------*/
void main (void)
{
    //串口初始化
    InitUART();

    SendStr("\r\n\n SZ-51 UART test OK if you see these words!");
    SendStr("\r\n ARM技术论坛 神舟51开发板 单片机串口收发测试");
    SendStr("\r\n 神舟51开发板,中断方式接收,请输入字符:");
    
    Flag = 0;
    while (1)                       
    {
        if(Flag == 1) 
        {
            Flag = 0;
            SendByte(UartChar);
            if(UartChar == '\r')
            {
                SendByte('\n');
            }
        }
    }
}

/*--------------------------------------------------------------
                            串口初始化
--------------------------------------------------------------*/
void InitUART(void)
{

    SCON  = 0x50;   // SCON: 模式 1, 8-bit UART, 使能接收  
    TMOD |= 0x20;   // TMOD: timer 1, mode 2, 8-bit 重装
    //TH1 = 0xF3;   // 波特率4800、数据位8、停止位1。效验位无 (12M)
    TH1   = 0xFD;   // TH1:  重装值 9600 波特率 晶振 11.0592MHz  
    TR1   = 1;      // TR1:  timer 1 打开                         
    EA    = 1;      //打开总中断
    ES    = 1;      //打开串口中断
}                            

/*--------------------------------------------------------------
                            发送一个字节
--------------------------------------------------------------*/
void SendByte(unsigned char dat)
{
    SBUF = dat;
    while(!TI);
    TI = 0;
}

/*--------------------------------------------------------------
                            发送一个字符串
--------------------------------------------------------------*/
void SendStr(unsigned char *s)
{
    //检测是否字符串末尾, '\0'表示字符串结束标志,
    while(*s != '\0')
    {
        SendByte(*s);
        s++;
    }
}

/*--------------------------------------------------------------
                     串口中断程序
--------------------------------------------------------------*/
void UART_SER (void) interrupt 4 //串行中断服务程序
{
    if(RI)                  //判断是接收中断产生
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:14:13
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/19872/
本文WWW.DOC100.NET DOC100.NET版权所有。