#include<reg52.h>
#include<stdio.h>
void Debug_put(unsigned char *s,unsigned char c){
TMOD = 0x20;
TH1 = 0xfd;
TL1 = 0xfd;
TR1 = 1;
SM0 = 0;
SM1 = 1;
REN = 1;
EA = 1;
ES = 1;
TI = 1;
printf("%s%d",s,c);
while(!TI)
;
TI = 0;
TR1 = 0;
ES = 0;
}
void main(){
Debug_put("123\0",4);
}
很好理解 就是输出1234而已
为什么就是输出的值不对呢
输出1024 为什么???
------解决方案--------------------------------------------------------
c的类型,你在函数里用的是char,只占用1个字节;而打印的时候使用的是“%d”, %d表示是整形,一般是4个字节。所以,这个打印结果就会出错。
你可以把函数原型改为void Debug_put(unsigned char *s,unsigned int c);