论坛风格切换切换到宽版
  • 3304阅读
  • 8回复

初学单片机请教一下“储存器”和C里的“数组”的问题。 [复制链接]

上一主题 下一主题
离线Mit
 
发帖
808
只看楼主 倒序阅读 0楼 发表于: 2003-10-31
初学单片机请教一下“储存器”和c里的“数组”的问题。

请问:
1)在89c51里的“数据储存器ram”和“程序储存器rom”都是一行8位字节宽的吗?
2)什么是8位/16位单片机?是不是8根总线和16根总线?
3)8位的总线和16位总线的单片机用起来有什么区别?这和它们的储存器之间有什么联系?
4)在c语言里,有各种的变量形式如:int,char,float这些形式都该如何用啊?int形的长度是16bit,那么是不是说如果存储器一行是8位字节宽,int形的变量就要占用两行的存储器空间?
5)我看书上讲的“一维数组,二维数组”太抽象了,正好小弟的抽象思维差,所以基本上看不懂。还要请大家结合单片机给俺来点形象的吧。
                                          感谢!感谢!
                                          bg8ajw
离线bg7gs
发帖
178
只看该作者 1楼 发表于: 2003-10-31
我来说说吧,说得不好,请再参考其他资料。因为89c51是八位的单片机,就是说它的数据存储格式是8位的,也就是说一个字节是8bit,如果是十六位的单片机,则一个字节是16bit,所以你在这里说它的数据存储器和程序存储器是“一行8位字节宽”,没有这种说法。应该是说一个字节是8,即8bit。
至于什么是8位和16位的单片机,我在前面说了,就是说它的数据一个字节是多少位(bit)。
至于c语言里int,char,float的含义你自己看相关的书吧,一般如果你用的是51单片机,则你编程时就应尽量使用char类型的数据,因为char是8位的,正好一个数据对应单片机里的一个字节,而如果用int,float类型,则一个数据占用单片机中2个字节或更多。
所谓数组,就是对应在单片机的数据或程序存储区留出一大片连续的单元用来存放数据。譬如一个char型的8*9的二维数组,占用单片机里72个连续的字节。所以用数组要注意单片机的资源,需要多大的数组就用多大的数组,因为数组设计得太大会白白浪费大量的存储空间。
最后,如果你是初学单片机,建议你先学会51系列的汇编,然后再学c语言,只有这样你才能看得懂,编得好c语言程序!
离线BA3CE
发帖
1652
只看该作者 2楼 发表于: 2003-10-31
楼上朋友说的基本是这个道理。但是,需要指出的是字节是计算机的存储和计算的最小单位,一个字节是8位,与“几位机”没有关系。8位机的字长是8位,16位机字长16位。字长是cpu寄存器的宽度。
c的数据类型是与编译器有关的,int一般为16位float一般32位,这样在生成代码后数据存储器就要占用相应的空间。可单片机不同于微机,数据存储器较小,所以要节约使用,比如计算范围不超过-128~127就没有必要用int可以用char。

最初由 bg7gs 发表
我来说说吧,说得不好,请再参考其他资料。因为89c51是八位的单片机,就是说它的数据存储格式是8位的,也就是说一个字节是8bit,如果是十六位的单片机,则一个字节是16bit,所以你在这里说它的数据存储器和程序存储器是“一行8位字节宽”,没有这种说法。应该是说一个字节是8,即8bit。
至于什么是8位和16位的单片机,我在前面说了,就是说它的数据一个字节是多少位(bit)。
至于c语言里int,char,float的含义你自己看相关的书吧,一般如果你用的是51单片机,则你编程时就应尽量使用char类型的数据,因为char是8位的,正好一个数据对应单片机里的一个字节,而如果用int,float类型,则一个数据占用单片机中2个字节或更多。
所谓数组,就是对应在单片机的数据或程序存储区留出一大片连续的单元用来存放数据。譬如一个char型的8*9的二维数组,占用单片机里72个连续的字节。所以用数组要注意单片机的资源,需要多大的数组就用多大的数组,因为数组设计得太大会白白浪费大量的存储空间。
最后,如果你是初学单片机,建议你先学会51系列的汇编,然后再学c语言,只有这样你才能看得懂,编得好c语言程序!
离线Mit
发帖
808
只看该作者 3楼 发表于: 2003-10-31
非常感谢大家的回复!不过我还是不明白char究竟是什么?它代表的是字符吗?
                                  谢谢!
离线BA3CE
发帖
1652
只看该作者 4楼 发表于: 2003-11-01
char本身是字符类型,但c中字符可以表示-128~127的代符号整数。
离线wgqaz
发帖
22504
只看该作者 5楼 发表于: 2003-11-03
楼主把数学补习补习吧...数组是高中的东西吧....
离线迷思
发帖
2388
只看该作者 6楼 发表于: 2003-11-05
关于一、二维数组:

想像12个人排队,如果用一维数组表示,就是排一列纵队(或横队),找人的时候说几号(数组下标)就能找到了

如果是二维数组,那就是排成方阵(或长方阵),比如3行、4列,找人时就要说第几行、第几列,才能找到相应的人。
离线Mit
发帖
808
只看该作者 7楼 发表于: 2003-11-07
感谢!
离线bg9bj
发帖
90
只看该作者 8楼 发表于: 2003-11-24
ding