sprintf C51 8051 MCU嵌入式系统输出错误

时间:2018-09-21 21:19:51

标签: c printf keil 8051 c51

对于AT89S52微控制器,我具有以下C代码片段:

unsigned char x = 0x10;
unsigned char str[21];

sprintf(str, "%u", (x >> 4) );

stdio.h中的sprintf函数原型:

extern int sprintf  (char *, const char *, ...);

有人可以告诉我为什么我的字符串包含“ 256” 而不是“ 1” 吗?x变量的大小甚至不足以容纳256个值

我正在使用标准的stdio.h库使用KEIL uVision 5进行编译。

如果我使用:

void UlToStr(char *s, unsigned long bin, unsigned char n)
{
    s += n;
    *s = '\0';

    while (n--)
    {
        *--s = (bin % 10) + '0';
        bin /= 10;
    }
}

该字符串而不是sprintf包含一个“ 1”。

我正在验证通过char-LCD 40x4(兼容KS 0066的控制器)打印字符串的内容

str_lecd1(str);

具有以下功能:

void str_lcd1(unsigned char *a)
{
    int i;
    for(i=0;a[i]!='\0';i++)
     data_lcd1(a[i]);
    delay(10);
}

void data_lcd1(unsigned char x)
{
    P1 = x;
    rs = 1;
    en1 = 1;                
    delay(4);
    en1=0;
    delay(4);
}

0 个答案:

没有答案