怎么将单片机接收到的十六进制数转为十进制?,
怎么将单片机接收到的十六进制数转为十进制,接收到的数范围比较大如从0.00-12000000.00,这该怎么写程序?要C语言的!呵呵,其实我问错了,问题是将0.00-12...
怎么将单片机接收到的十六进制数转为十进制,接收到的数范围比较大如从0.00-12000000.00,这该怎么写程序?要C语言的!
呵呵,其实我问错了,问题是将0.00-12000000.00HZ之间的频率值由VB上位机发送到单片机上使用,调用到ad9833_data(frequence,0,2,0)中控制AD9833产生特定的频率,还请高手指点。此出使用了单片机的中断处理,我在将数据由上位机发送到单片机SBUF中之后就不知道怎么处理数据了! 展开
呵呵,其实我问错了,问题是将0.00-12000000.00HZ之间的频率值由VB上位机发送到单片机上使用,调用到ad9833_data(frequence,0,2,0)中控制AD9833产生特定的频率,还请高手指点。此出使用了单片机的中断处理,我在将数据由上位机发送到单片机SBUF中之后就不知道怎么处理数据了! 展开
3个回答
展开全部
追问
呵呵,其实我问错了,问题是将0.00-12000000.00HZ之间的频率值由VB上位机发送到单片机上使用,从上位机发送所需的frequence值到下位机,要将frequence放到void ad9833_data(double frequence,unsigned int frequence_SFR,unsigned int WAVE_MODE,unsigned int Phase )中使用;怎样从中断接收的SBUF中取出frequence的值赋给ad9833_data(frequence,0,2,0
);上位机发过来的数据应该是二进制的或者字符型的数。
追答
你用VB,发送给单片机的数据是什么格式的?
例如:上位机发送到如果是long 型的,单片机收到后保存到一个long型的变量中就可以使用了。
long 有4个字节,单片机分四次保存到long型变量中
例如:sbf=SBUF;
ltmp=sbf;
ltmp<<8; //收到第一次
sbf=SBUF;
ltmp|=sbf; //收到第二次
ltmp<<8;
sbf =SBUF;
ltmp|=sbf; //收到第三次
ltmp<<8;
sbf =SBUF;
ltmp|=sbf; //收到第四次
此时 ltmp 就是收到的long型数据
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于2017-10-04 · 知道合伙人教育行家
关注
展开全部
转换方法:
16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15。字母不区分大小写。
十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……,所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。
例如:
用竖式计算:
2AF5换算成10进制:
第0位: 5 * 16的0次方 = 5
第1位: F * 16的1次方 = 240
第2位: A * 16的2次方 = 2560
第3位: 2 * 16的3次方 = 8192
直接计算就是:
5 * 16的0次方 + F * 16的1次方 + A * 16的2次方 + 2 * 16的3次方 = 10997
16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15。字母不区分大小写。
十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……,所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。
例如:
用竖式计算:
2AF5换算成10进制:
第0位: 5 * 16的0次方 = 5
第1位: F * 16的1次方 = 240
第2位: A * 16的2次方 = 2560
第3位: 2 * 16的3次方 = 8192
直接计算就是:
5 * 16的0次方 + F * 16的1次方 + A * 16的2次方 + 2 * 16的3次方 = 10997
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询