打印

一段C51程序不解(四行)

[复制链接]
2929|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者
唉,等人回答,还不如自个写个程序一看就了然。。。 。。。

使用特权

评论回复
5
liang7143| | 2010-11-30 21:54 | 只看该作者
多谢帮助。
还有问题:这两个字节内存怎么安排的?(低地址对应高字节,还是低地址对应低字节)?lwag 发表于 2010-11-30 10:31

unsigned char 最大才是255!
低地址对应高字节,还是低地址对应低字节,这得看数据是大端还是小端的?
这个变量是不是一个局部变量?是局部变量

使用特权

评论回复
6
lhx522729| | 2012-1-10 14:31 | 只看该作者
:D

使用特权

评论回复
7
fe07fe| | 2012-1-10 19:05 | 只看该作者
unsigned char一般都是这样表示的,51寄存器是8位的,0和1两个状态所以为2^8=256个数,单片机里最大值65535都这么用,2^16=65536就用两个寄存器,或许内存16位这样才能解释,寄存器与内存单元还是不一样的。

使用特权

评论回复
8
xiong87| | 2012-3-13 19:45 | 只看该作者
自己在软件中看一下就都明白了!

使用特权

评论回复
9
chumingyu| | 2012-3-15 19:34 | 只看该作者
这是微机原理典型的问题,看一下微机原理。
标准存储是逆序存放。
例 uint j=0x1234;

若j存放于0X0000单元,即占用0x0000和0x0001两存储单元
0x0000单元存放0x34
0x0001单元存放0x12
不知你看懂了没有。

使用特权

评论回复
10
logokfu| | 2012-4-16 21:09 | 只看该作者
:lolLZ现在应该会了吧

使用特权

评论回复
11
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

使用特权

评论回复
12
开心8866| | 2012-4-19 20:45 | 只看该作者
同学,好好看看基础吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

163

帖子

2

粉丝