找回密码
 立即注册
查看: 970|回复: 14

printf打印输出得不到正确的读数

[复制链接]
  • TA的每日心情

    2023-12-25 15:38
  • 签到天数: 1 天

    [LV.1]初来乍到

    39

    主题

    204

    回帖

    651

    积分

    高级会员

    积分
    651
    发表于 2023-3-15 13:53:23 | 显示全部楼层 |阅读模式
    #define uchar unsigned char

    uchar key_flag=0;

    void int3() interrupt 11//按键按下,下降沿触发中断
    {
            key_flag=1;

    }

    打印程序:
      TI=1;
      printf("key_flag is %d \n",key_flag);
      while(TI==0);
      TI=0;          
    为什么key_flag的打印结果不是1
    printf打印输出得不到正确的读数-1.png                     

    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 87 天

    [LV.6]常住居民II

    38

    主题

    982

    回帖

    6749

    积分

    荣誉版主

    冲哥视频教程和各种开源资料QQ交流群884047237,可群

    积分
    6749
    QQ
    发表于 2023-3-15 14:00:46 | 显示全部楼层
    printf("key_flag is %d \n",(int)key_flag);

    请添加如上部分在进行测试!
  • TA的每日心情

    2023-12-25 15:38
  • 签到天数: 1 天

    [LV.1]初来乍到

    39

    主题

    204

    回帖

    651

    积分

    高级会员

    积分
    651
     楼主| 发表于 2023-3-15 14:44:04 | 显示全部楼层
    电子DIY小家 发表于 2023-3-15 14:00
    printf("key_flag is %d \n",(int)key_flag);

    请添加如上部分在进行测试!



    可以了,但是呢(int)key_flag之后,key_flag在单片机内存是不是占用两个字节了?(int)key_flag是什么意思呢,可以解释一下吗?谢谢。
    1.png
  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 87 天

    [LV.6]常住居民II

    38

    主题

    982

    回帖

    6749

    积分

    荣誉版主

    冲哥视频教程和各种开源资料QQ交流群884047237,可群

    积分
    6749
    QQ
    发表于 2023-3-15 14:51:26 | 显示全部楼层
    980578873 发表于 2023-3-15 14:44
    可以了,但是呢(int)key_flag之后,key_flag在单片机内存是不是占用两个字节了?(int)key_flag是什 ...

    强制转化为16位数。
    %d打印的是16位的有符号整数,后面带的参数也必须要是这个类型的参数,这个(int)就是这个作用
    回复 支持 1 反对 0 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-1-4 08:56
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    16

    主题

    711

    回帖

    2516

    积分

    超级版主

    积分
    2516
    发表于 2023-3-15 17:41:37 | 显示全部楼层
    也可改为printf("key_flag is %bd \n",key_flag);

    可参考如下Keil有关printf的使用帮助
    1. #include <stdio.h>
    2. void tst_printf (void) {
    3.   char a = 1;
    4.   int b  = 12365;
    5.   long c = 0x7FFFFFFF;
    6.   unsigned char x = 'A';
    7.   unsigned int y  = 54321;
    8.   unsigned long z = 0x4A6F6E00;
    9.   float f = 10.0;
    10.   float g = 22.95;
    11.   char buf [] = "Test String";
    12.   char *p = buf;
    13.   printf ("char %bd int %d long %ld\n",a,b,c);
    14.   printf ("Uchar %bu Uint %u Ulong %lu\n",x,y,z);
    15.   printf ("xchar %bx xint %x xlong %lx\n",x,y,z);
    16.   printf ("String %s is at address %p\n",buf,p);
    17.   printf ("%f != %g\n", f, g);
    18.   printf ("%*f != %*g\n", (int)8, f, (int)8, g);
    19. }
    复制代码


  • TA的每日心情

    2023-12-25 15:38
  • 签到天数: 1 天

    [LV.1]初来乍到

    39

    主题

    204

    回帖

    651

    积分

    高级会员

    积分
    651
     楼主| 发表于 2023-3-15 19:46:08 | 显示全部楼层
    zhp 发表于 2023-3-15 17:41
    也可改为printf("key_flag is %bd \n",key_flag);

    可参考如下Keil有关printf的使用帮助

    我找不到这个函数,这是什么原因呢?%bd 是表示什么意思呢?谢谢
    1.png

    点评

    zhp
    %bd 表示格式化为字节型整数(char) %d 表示格式化为整数(int) %ld 表示格式化为长整型(long)  详情 回复 发表于 2023-3-16 08:58
  • TA的每日心情
    开心
    2024-1-4 08:56
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    16

    主题

    711

    回帖

    2516

    积分

    超级版主

    积分
    2516
    发表于 2023-3-16 08:58:12 | 显示全部楼层
    980578873 发表于 2023-3-15 19:46
    我找不到这个函数,这是什么原因呢?%bd 是表示什么意思呢?谢谢

    %bd 表示格式化为字节型整数(char)
    %d 表示格式化为整数(int)
    %ld 表示格式化为长整型(long)

  • TA的每日心情
    开心
    2023-12-18 09:20
  • 签到天数: 1 天

    [LV.1]初来乍到

    11

    主题

    86

    回帖

    202

    积分

    中级会员

    积分
    202
    发表于 2023-3-16 09:40:08 来自手机 | 显示全部楼层
    keil有非常丰富得hlp信息,很轻易,自己查一下就ok了
  • TA的每日心情

    2023-12-25 15:38
  • 签到天数: 1 天

    [LV.1]初来乍到

    39

    主题

    204

    回帖

    651

    积分

    高级会员

    积分
    651
     楼主| 发表于 2023-3-16 19:14:45 | 显示全部楼层
    xhbwork 发表于 2023-3-16 09:40
    keil有非常丰富得hlp信息,很轻易,自己查一下就ok了

    hlp是什么
  • TA的每日心情
    开心
    11 小时前
  • 签到天数: 128 天

    [LV.7]常住居民III

    37

    主题

    845

    回帖

    3878

    积分

    荣誉版主

    积分
    3878
    发表于 2023-3-17 06:57:39 | 显示全部楼层
    帮助文档, help
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-4-24 12:03 , Processed in 0.076972 second(s), 72 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表