一段C51程序不解(四行)

[复制链接]
 楼主| lwag 发表于 2010-11-30 10:17 | 显示全部楼层 |阅读模式
void delay_10ms(void) {      uint j;
      for (j = 0; j<9000; j++)
           WDT_CONTR = 0x34;
}
问题:这里j是unit, 按理是不能大于255的,这儿j<9000,这个程序还能工作吗?
yuyetufu 发表于 2010-11-30 10:22 | 显示全部楼层
C51,一般int是双字节的哦,uint的话即最大65535
char是单字节的
 楼主| lwag 发表于 2010-11-30 10:31 | 显示全部楼层
多谢帮助。
还有问题:这两个字节内存怎么安排的?(低地址对应高字节,还是低地址对应低字节)?这个变量是不是一个局部变量?
hgjinwei 发表于 2010-11-30 20:57 | 显示全部楼层
唉,等人回答,还不如自个写个程序一看就了然。。。 。。。
liang7143 发表于 2010-11-30 21:54 | 显示全部楼层
多谢帮助。
还有问题:这两个字节内存怎么安排的?(低地址对应高字节,还是低地址对应低字节)?lwag 发表于 2010-11-30 10:31

unsigned char 最大才是255!
低地址对应高字节,还是低地址对应低字节,这得看数据是大端还是小端的?
这个变量是不是一个局部变量?是局部变量
lhx522729 发表于 2012-1-10 14:31 | 显示全部楼层
fe07fe 发表于 2012-1-10 19:05 | 显示全部楼层
unsigned char一般都是这样表示的,51寄存器是8位的,0和1两个状态所以为2^8=256个数,单片机里最大值65535都这么用,2^16=65536就用两个寄存器,或许内存16位这样才能解释,寄存器与内存单元还是不一样的。
xiong87 发表于 2012-3-13 19:45 | 显示全部楼层
自己在软件中看一下就都明白了!
chumingyu 发表于 2012-3-15 19:34 | 显示全部楼层
这是微机原理典型的问题,看一下微机原理。
标准存储是逆序存放。
例 uint j=0x1234;

若j存放于0X0000单元,即占用0x0000和0x0001两存储单元
0x0000单元存放0x34
0x0001单元存放0x12
不知你看懂了没有。
logokfu 发表于 2012-4-16 21:09 | 显示全部楼层
:lolLZ现在应该会了吧
chhaich 发表于 2012-4-17 09:50 | 显示全部楼层
这是微机原理典型的问题,看一下微机原理。
标准存储是逆序存放。
例 uint j=0x1234;

若j存放于0X0000单元,即占用0x0000和0x0001两存储单元
0x0000单元存放0x34
0x0001单元存放0x12
不知你看懂了没有。 ...
chumingyu 发表于 2012-3-15 19:34


51单片机是大端存储的,按上面假设的条件存储的顺序如下:
0x0000单元存放0x12
0x0001单元存放0x34
开心8866 发表于 2012-4-19 20:45 | 显示全部楼层
同学,好好看看基础吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

163

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部