CyberHamster 发表于 2024-12-16 12:08:09

251编译器printf异常怎么办


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


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

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

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



4个参数,第二个和第四个为零:




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




第二个改为%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



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







printf:






一个参数一个printf都正常:





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



这东西精度约20ppm,跑了14年差了两个半小时



bkeuqoaq 发表于 2024-12-16 13:04:19

小于16位的用16位打印

xxkj2010 发表于 2024-12-16 13:45:57

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

CyberHamster 发表于 2024-12-16 14:22:39

bkeuqoaq 发表于 2024-12-16 13:04
小于16位的用16位打印

已经用%02bX了

CyberHamster 发表于 2024-12-16 14:22:53

xxkj2010 发表于 2024-12-16 13:45
大佬的杜邦线怎样与某宝上经常看到的不一样?

自制的

bkeuqoaq 发表于 2024-12-16 14:37:05

CyberHamster 发表于 2024-12-16 14:22
已经用%02bX了
u8 c = 0x55;

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

因为251其实是16位机

xxkj2010 发表于 2024-12-16 16:45:58

CyberHamster 发表于 2024-12-16 14:22
自制的

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

xxkj2010 发表于 2024-12-16 16:47:58

CyberHamster 发表于 2024-12-16 14:22
自制的

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

CyberHamster 发表于 2024-12-16 16:49:51

bkeuqoaq 发表于 2024-12-16 14:37
u8 c = 0x55;

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


这样会显示0x0055,而我希望显示0x55

bkeuqoaq 发表于 2024-12-16 17:13:12

CyberHamster 发表于 2024-12-16 16:49
这样会显示0x0055,而我希望显示0x55

printf("c=0x%04x", c);
这样才显示0x0055
页: [1] 2
查看完整版本: 251编译器printf异常怎么办