OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4712|回复: 8

谁可以帮我看一下,为什么将table数组的元素输出到窜口助手那里会出现乱码,而把字符串“chen_jun”输到那里就没问题

[复制链接]

12

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2014-10-17
在线时间
3 小时
发表于 2014-11-28 14:50:36 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]谁可以帮我看一下,为什么将table数组的元素输出到窜口助手那里会出现乱码,而把字符串“chen_jun”输到那里就没问题 #include<reg52.h> //52系列单片机的头文件,其包含特殊功能寄存器的定义 #include<string.h> sbit led=P0^0; typedef unsigned char uchar; //定义uchar 为unsigned char型 typedef unsigned int uint; //定义uint 为unsigned int 型 uchar cmd; uchar table[4]={0,0,0,0}; /*--------------------------------------------------------------- 串行口方式1初始化函数 ----------------------------------------------------------------*/ void uart_init() { TMOD|=0x20; // TMOD: timer 1, mode 2, 8-bit 自动重装 PCON=0X00; //波特率正常,如PCON=0X80;则波特率加倍 SCON=0x50; // SCON: 模式 1, 8-bit UART, 使能接收 // SM0=0; SM1=1;REN=1; //这三条语句等效于 SCON=0X50; TH1=0xFD; // TH1: 自动重装值 波特率为9600 晶振 11.0592MHz TL1=0xFD; // TL1: 自动重装值 波特率为9600 晶振 11.0592MHz TR1=1; REN=1; ES=1; // timer 1 打开 EA=1; //打开总中断 } void uart_print(char *p,uint len) { uint i; for(i=0;i<len;i++) { SBUF=*p++; while(!TI); TI=0; } SBUF=0x0A; while(!TI); TI=0; } /*--------------------------------------------------------------- 主函数 ----------------------------------------------------------------*/ void main() { uint t=1831; uart_init(); //串口初始化函数 table[0]=t/1000; table[1]=t%1000/100; table[2]=t%100/10; table[3]=t%10; uart_print(table,strlen(table)); uart_print("chen_jun",strlen("chen_jun")); } void timer1() interrupt 4 { if(RI) { RI=0; cmd=SBUF; TI=0; } } [/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

太感谢谢哥们了,不知为什么用strlen(table)时,1831后面有乱码,如果把他换成4的话就没问题
没有最好只有更好
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2014-10-17
在线时间
3 小时
 楼主| 发表于 2014-11-28 14:50:37 | 显示全部楼层
太感谢谢哥们了,不知为什么用strlen(table)时,1831后面有乱码,如果把他换成4的话就没问题
没有最好只有更好
回复

使用道具 举报

14

主题

67

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2011-8-8
在线时间
15 小时
发表于 2014-11-28 15:01:22 | 显示全部楼层
串口勾选16进制显示或者把数组元素转换成字符发送。
上帝之所以创造指纹,是因为他想让人们知道:其实,每个人都有伤痕。?
回复

使用道具 举报

12

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2014-10-17
在线时间
3 小时
 楼主| 发表于 2014-11-28 15:09:22 | 显示全部楼层
回复【2楼】小曾:
勾选16进制是,不知道是一窜是啥来的,但是为什么另外一个字符串输出正常呢
没有最好只有更好
回复

使用道具 举报

12

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2014-10-17
在线时间
3 小时
 楼主| 发表于 2014-11-28 15:24:11 | 显示全部楼层
第一个图时勾选16进制的,第二个是不勾选的,请问兄台怎样才能输出十进制呢,还有勾选16进制时为什么会有14个数呢,不应是12个吗

没有最好只有更好
回复

使用道具 举报

14

主题

67

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2011-8-8
在线时间
15 小时
发表于 2014-11-28 16:56:04 | 显示全部楼层
用sprintf函数就可以了,至于用法你可以问一下度娘。
上帝之所以创造指纹,是因为他想让人们知道:其实,每个人都有伤痕。?
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2013-3-7
在线时间
3 小时
发表于 2014-11-28 21:56:07 | 显示全部楼层
talbe[4]改为table[]
回复

使用道具 举报

12

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2014-10-17
在线时间
3 小时
 楼主| 发表于 2014-11-28 23:19:48 | 显示全部楼层
回复【6楼】你认识我:
---------------------------------改了结果还是一样
没有最好只有更好
回复

使用道具 举报

8

主题

125

帖子

0

精华

高级会员

Rank: 4

积分
844
金钱
844
注册时间
2013-4-27
在线时间
120 小时
发表于 2014-11-29 16:09:31 | 显示全部楼层
回复【7楼】军霸之上:
---------------------------------
你table中的数应该这么算:
table[0]=t/1000+'0';

至于为啥你懂的
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 04:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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