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年差了两个半小时
小于16位的用16位打印 <p>大佬的杜邦线怎样与某宝上经常看到的不一样?</p>
bkeuqoaq 发表于 2024-12-16 13:04
小于16位的用16位打印
已经用%02bX了 xxkj2010 发表于 2024-12-16 13:45
大佬的杜邦线怎样与某宝上经常看到的不一样?
自制的 CyberHamster 发表于 2024-12-16 14:22
已经用%02bX了
u8 c = 0x55;
printf("c=0x%x", c);
因为251其实是16位机 CyberHamster 发表于 2024-12-16 14:22
自制的
自制的,难怪在某宝上看不到这样式的。
很不错的,质量肯定棒哒哒的! CyberHamster 发表于 2024-12-16 14:22
自制的
连杜邦线也可以自制?插头的金属部分怎样弄来的?想请教一下 bkeuqoaq 发表于 2024-12-16 14:37
u8 c = 0x55;
printf("c=0x%x", c);
这样会显示0x0055,而我希望显示0x55 CyberHamster 发表于 2024-12-16 16:49
这样会显示0x0055,而我希望显示0x55
printf("c=0x%04x", c);
这样才显示0x0055
页:
[1]
2