找回密码
 立即注册
查看: 576|回复: 13

251编译器printf异常怎么办

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:156
  • 最近打卡:2025-04-29 00:51:09

24

主题

229

回帖

1281

积分

金牌会员

积分
1281
发表于 2024-12-16 12:08:09 | 显示全部楼层 |阅读模式

拆机DS12C887,至少16年了,上次对时至少在14年前,好奇这东西还有没有电了,接8051U上读一下看看
截图202412161149227405.jpg

在这过程中发现251编译器printf异常
读寄存器13,值是0x80,说明还有电,再读一次结果为零
两个参数都是unsigned char,值都是0x80,printf %02bx 第二个为零
第二个参数 %04x,为0x8000,按16位输出了,都写了%02bx不起作用

第一个参数改成16位,第二个就正常

三个unsigned char,第一和第三个正常,第二个为零,第二个改成signed char,输出0xFF



4个参数,第二个和第四个为零:
截图202412161155038223.jpg

截图202412161155155182.jpg

第二个改成%4X,发现值在高8位,然后第三个异常了:
截图202412161156052141.jpg

截图202412161156177348.jpg

第二个改为%X,确实是unsigned char的参数被当做unsigned int了:


代码:0x%02bX 0x%X 0x%02bX 0x%02bX\r\n
显示:0x80 0x8000 0x00 0x80



没有b,02也是无效的,因为2位不够:


代码:0x%02bX 0x%02X 0x%02bX 0x%02bX\r\n
显示:0x80 0x8000 0x00 0x80



类型不会影响值,值始终是错的

截图202412161201339069.jpg

截图202412161201394418.jpg



printf:
截图202412161200499393.jpg

截图202412161200584982.jpg



一个参数一个printf都正常:

截图202412161203467988.jpg

截图202412161203537032.jpg

多个unsigned char参数,只有第一个正常,后面隔一个正常一下
应该是字节对齐问题,但不知如何解决



这东西精度约20ppm,跑了14年差了两个半小时
截图202412161206454134.jpg


回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-29 08:28:25
已绑定手机

17

主题

446

回帖

1173

积分

金牌会员

积分
1173
发表于 2024-12-16 13:04:19 | 显示全部楼层
小于16位的用16位打印
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:520
  • 最近打卡:2025-05-01 08:06:21

109

主题

1897

回帖

5204

积分

论坛元老

积分
5204
发表于 2024-12-16 13:45:57 | 显示全部楼层

大佬的杜邦线怎样与某宝上经常看到的不一样?

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:156
  • 最近打卡:2025-04-29 00:51:09

24

主题

229

回帖

1281

积分

金牌会员

积分
1281
发表于 2024-12-16 14:22:39 | 显示全部楼层
bkeu*** 发表于 2024-12-16 13:04
小于16位的用16位打印

已经用%02bX了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:156
  • 最近打卡:2025-04-29 00:51:09

24

主题

229

回帖

1281

积分

金牌会员

积分
1281
发表于 2024-12-16 14:22:53 | 显示全部楼层
xxkj*** 发表于 2024-12-16 13:45
大佬的杜邦线怎样与某宝上经常看到的不一样?

自制的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-29 08:28:25
已绑定手机

17

主题

446

回帖

1173

积分

金牌会员

积分
1173
发表于 2024-12-16 14:37:05 | 显示全部楼层

u8 c = 0x55;

printf("c=0x%x", c);

因为251其实是16位机
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:520
  • 最近打卡:2025-05-01 08:06:21

109

主题

1897

回帖

5204

积分

论坛元老

积分
5204
发表于 2024-12-16 16:45:58 | 显示全部楼层

自制的,难怪在某宝上看不到这样式的。
很不错的,质量肯定棒哒哒的!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:520
  • 最近打卡:2025-05-01 08:06:21

109

主题

1897

回帖

5204

积分

论坛元老

积分
5204
发表于 2024-12-16 16:47:58 | 显示全部楼层

连杜邦线也可以自制?插头的金属部分怎样弄来的?想请教一下
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:156
  • 最近打卡:2025-04-29 00:51:09

24

主题

229

回帖

1281

积分

金牌会员

积分
1281
发表于 2024-12-16 16:49:51 | 显示全部楼层
bkeu*** 发表于 2024-12-16 14:37
u8 c = 0x55;

printf("c=0x%x", c);

这样会显示0x0055,而我希望显示0x55
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-29 08:28:25
已绑定手机

17

主题

446

回帖

1173

积分

金牌会员

积分
1173
发表于 2024-12-16 17:13:12 | 显示全部楼层
CyberH*** 发表于 2024-12-16 16:49
这样会显示0x0055,而我希望显示0x55

printf("c=0x%04x", c);
这样才显示0x0055
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-2 03:53 , Processed in 0.153496 second(s), 113 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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