DIY单片机串口打印函数print

原始的单片机串口只能发送单字节数据,再加个封装也就能发送个字符串,但是无法发送数字变量,要发送数字变量那基本要引入C语言的库函数printf,但是这个pintf函数 好用确实是好用但是有个很大的缺点相对于小存储容量的单片机来说,就是占用存储容量特别大,我曾在51单片机上测试 引入个printf函数占用1KB ROM空间,这就离谱了 我那个51单片机一共才8KB ROM,这就不能使用printf函数了,太占用存储器空间了!但是在开发的时候 有时候为了调试,比如的输出个温度数据,ADC检测到的电压值,不接显示屏的情况下又必须得用到串口打印,所以我就自己DIY了个串口打印函数

char* number[]={"0","1","2","3","4","5","6","7","8","9","10"};

void print(char*str, int x)
{
    SCI_SendString(str);

    if(x>0 && x<100)
    {
        SCI_SendString(number[x/10]);//串口发送字符串函数
        SCI_SendString(number[x%10]);
    }
    else if(x>=100 && x<1000)
    {
        SCI_SendString(number[x/100]);
        SCI_SendString(number[(x%100)/10]);
        SCI_SendString(number[x%10]);
    }
    else if(x>=1000 && x<10000)
    {
        SCI_SendString(number[x/1000]);
        SCI_SendString(number[(x%1000)/100]);
        SCI_SendString(number[(x%100)/10]);
        SCI_SendString(number[x%10]);
    }

    SCI_SendString("\r\n");
}
//example:  print("ADC: ",a);

这个打印函数的算法原理比较简单粗糙,只能打印正整数,函数的实现思路在这里了,大家如果有需要打印负数,浮点数的可以在这个基础上改改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值