6620|13

95

帖子

0

资源

一粒金砂(初级)

8位单片机,整型数组是多少位?

PIC16F73,定义了一个整型数组,int a[100],在调试时从watch窗口发现a是0xf090,有问题吗?
还有,int b=200,b/9会是多少?

回复

1

帖子

0

资源

一粒金砂(初级)

定义了一个整型数组,int a[100],在调试时从watch窗口发现a是0xf090,有问题吗?
可能数组的首地址是0xf090

int b=200,b/9会是多少?
22

回复

6

帖子

0

资源

一粒金砂(初级)

1、为什么是16位的?我用的是8位单片机呀。
2、也就是b/9会自动取整?

回复

2

帖子

0

资源

一粒金砂(初级)

数据类型是和编译器相关的。但char总是8bit, int可能是16bit也可能是32bit, long int总比short int位数宽。

8位单片机是指内部数据线的宽度,CPU一次读取数据最宽是8bit(1Byte)。所以从程序效率的角度讲尽量使用和CPU数据宽度相同的数据类型,否则会增加指令的。   

回复

1

帖子

0

资源

一粒金砂(初级)

呵呵, 看看你AD结果是多少位啊。 8位当然可以了, 不过一般需要做简单的均值滤波的, 这样就多个AD结果相加就可能超过8位,这就需要更长的数据类型。

数据类型是很基础很重要的东西,多看看书吧, 否则出了问题还不知道是怎么回事呢。

回复

4

帖子

0

资源

一粒金砂(中级)

均值滤波就是多次求平均值?我做了。估计是不是这个原因导致的?
我定义的是int a[]型的。
A/D后的结果应该是16进制的,可不可以直接存为10进制的?还是要自己来做?

回复

1

帖子

0

资源

一粒金砂(初级)

计算机看到的都是二进制,16进制只是表示方便,和二进制一样的。

你为什么要转换成10进制,是为了观察直观吗,如果是这样在调试的时候好像右键可以选择显示成10进制的。

回复

1

帖子

0

资源

一粒金砂(初级)

十六进制和十进制还不都是一样的,只是给你看的形式不同。
8位机使用16位地址的话,地址的值当然就是16位的,a【】是数组的首地址。

回复

3

帖子

0

资源

一粒金砂(初级)

1、为什么是16位的?我用的是8位单片机呀。
2、也就是b/9会自动取整?

这两个都是C语言的问题


回复

7

帖子

0

资源

禁止访问

提示: 作者被禁止或删除 内容自动屏蔽

回复

1

帖子

0

资源

一粒金砂(初级)

8位机里a地址有可能是16位有可能是32位,看怎么使用呢
int型几乎都是16位以上的。跟编译器有关。
AA/BB 这个要取整

回复

1

帖子

0

资源

禁止访问

提示: 作者被禁止或删除 内容自动屏蔽

回复

7075

帖子

193

资源

五彩晶圆(高级)

int型几乎都是16位以上的。跟编译器有关。

回复

7947

帖子

54

资源

裸片初长成(中级)

换个角度来看问题。
 看到的资料都说int是一个机器字长,所以8位机貌似就该是 8位字长。
不过比如说对于32位机器,它的任何指针字长都是32位,也就是说,地址宽度是32位。 那么,8位的51,它的地址总线也是16位的。所以它们的最大寻址范围都是64K。 那么,也就不难理解为啥它的int,机器字长是16位了。
 其实最好的办法是使用前,在具体的编译器和硬件上sizeof一下,然后typedef成 uint8 uint16一类的,不然你会晕头转向、

搜了一下百度,有两个文章可供参考

http://blog.csdn.net/s04023083/article/details/5182700

http://topic.csdn.net/u/20090626/17/dbca5fb5-22c2-4d6b-ae89-08d938679077.html

觉得其中一句话最重要:
int是机器字长,但机器字长 和 CPU取指字长,如果带操作系统,还有 系统字长 都不太一样。
以地址总线宽度来对比机器字长是最好的。因为一个机器字长的操作是最快最常用的。

忽然想起以前似乎听人说过,51这些8位单片机有点点不伦不类——我意思是像C语言,有点奇奇怪怪,估计是限制与当时的条件,不然怎么会闹出个8位CPU取指长度,却有一个16位的地址总线?但它却无比灵活。

也许是因为造价问题吧。毕竟做一个16位的CPU要比做一个8位的CPU贵(51存在了大概20年),可是,总不能寻址范围只有256B吧?
[ 本帖最后由 辛昕 于 2011-12-16 13:38 编辑 ]
个人签名

八年一梦,洗尽铅华,重头再来


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

关闭
站长推荐上一条 1/7 下一条

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表