打印

一下子看不明白,谁给点拨一下,谢谢

[复制链接]
2351|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
doob|  楼主 | 2007-7-21 19:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*------------------------------------------------
Byte Registers
------------------------------------------------*/
sfr P0      = 0x80;
sfr SP      = 0x81;
sfr DPL     = 0x82;
sfr DPH     = 0x83;
sfr PCON    = 0x87;
sfr TCON    = 0x88;
sfr TMOD    = 0x89;
sfr TL0     = 0x8A;
sfr TL1     = 0x8B;
sfr TH0     = 0x8C;
sfr TH1     = 0x8D;

/*------------------------------------------------
P0 Bit Registers
------------------------------------------------*/
sbit P0_0 = 0x80;
sbit P0_1 = 0x81;
sbit P0_2 = 0x82;
sbit P0_3 = 0x83;
sbit P0_4 = 0x84;
sbit P0_5 = 0x85;
sbit P0_6 = 0x86;
sbit P0_7 = 0x87;

   寄存器地址怎么分配的,一下子迷糊了。。

相关帖子

沙发
gyt| | 2007-7-21 20:22 | 只看该作者

不同

上面的是字节地址

下面的是位地址

使用特权

评论回复
板凳
doob|  楼主 | 2007-7-21 22:57 | 只看该作者

是啊,迷糊了

  
sfr P0      = 0x80;

/*------------------------------------------------
P0 Bit Registers
------------------------------------------------*/
sbit P0_0 = 0x80;
sbit P0_1 = 0x81;
sbit P0_2 = 0x82;
sbit P0_3 = 0x83;
sbit P0_4 = 0x84;
sbit P0_5 = 0x85;
sbit P0_6 = 0x86;
sbit P0_7 = 0x87;

sfr SP      = 0x81;
那么SP的每一个位怎么定义啊?
好像都没定义。从0x88寄存器才定义位地址的
都是隔8个寄存器才定义

使用特权

评论回复
地板
doob|  楼主 | 2007-7-21 23:04 | 只看该作者

不知表达的清不清楚,请看

/*------------------------------------------------
Byte Registers
------------------------------------------------*/
sfr P0      = 0x80;
-----------------
sfr SP      = 0x81;
sfr DPL     = 0x82;
sfr DPH     = 0x83;
sfr PCON    = 0x87;
sfr TCON    = 0x88;
-------------------
sfr TMOD    = 0x89;
sfr TL0     = 0x8A;
sfr TL1     = 0x8B;
sfr TH0     = 0x8C;
sfr TH1     = 0x8D;
sfr P1      = 0x90;
------------------
sfr SCON    = 0x98;


/*------------------------------------------------
P0 Bit Registers
------------------------------------------------*/
sbit P0_0 = 0x80;
sbit P0_1 = 0x81;
sbit P0_2 = 0x82;
sbit P0_3 = 0x83;
sbit P0_4 = 0x84;
sbit P0_5 = 0x85;
sbit P0_6 = 0x86;
sbit P0_7 = 0x87;

/*------------------------------------------------
TCON Bit Registers
------------------------------------------------*/
sbit IT0  = 0x88;
sbit IE0  = 0x89;
sbit IT1  = 0x8A;
sbit IE1  = 0x8B;
sbit TR0  = 0x8C;
sbit TF0  = 0x8D;
sbit TR1  = 0x8E;
sbit TF1  = 0x8F;

/*------------------------------------------------
P1 Bit Registers
------------------------------------------------*/
sbit P1_0 = 0x90;
sbit P1_1 = 0x91;
sbit P1_2 = 0x92;
sbit P1_3 = 0x93;
sbit P1_4 = 0x94;
sbit P1_5 = 0x95;
sbit P1_6 = 0x96;
sbit P1_7 = 0x97;

像sfr SP      = 0x81;
sfr DPL     = 0x82;
这些怎么定义位地址啊?一下子迷糊了
谢谢指点啊

使用特权

评论回复
5
conwh| | 2007-7-21 23:09 | 只看该作者

不是编译器不好,就是掌握的不好

使用特权

评论回复
6
ayb_ice| | 2007-7-22 07:58 | 只看该作者

"不是编译器不好,就是掌握的不好"

答: 掌握的不好

使用特权

评论回复
7
doob|  楼主 | 2007-7-22 08:54 | 只看该作者

对,掌握得不好,解释一下啊

使用特权

评论回复
8
xwj| | 2007-7-22 09:19 | 只看该作者

LZ,先去搞清楚51的存储器、位是怎样分布的,你就会明白了

仔细看几遍,一定要看清楚

使用特权

评论回复
9
doob|  楼主 | 2007-7-22 10:02 | 只看该作者

hehe

那你说
sfr SP      = 0x81;
 怎么给sp 的每一位定义吧!!
 就像给p0口定义的那样!

使用特权

评论回复
10
xwj| | 2007-7-22 10:12 | 只看该作者

说了叫你去看书!!!

使用特权

评论回复
11
gyt| | 2007-7-22 10:39 | 只看该作者

不是每一个字节的位都有位地址的

经常会用到的才有。

使用特权

评论回复
12
doob|  楼主 | 2007-7-22 19:24 | 只看该作者

那,楼上大哥,我就是要给他分配一个怎么分配啊^_^

:-),钻牛角尖

使用特权

评论回复
13
computer00| | 2007-7-22 19:58 | 只看该作者

不能分配. 只有可位寻址的寄存器才可以这样搞.

关于什么是可位寻址的寄存器,找本51的书来看看吧.

使用特权

评论回复
14
doob|  楼主 | 2007-7-23 21:11 | 只看该作者

晕死,楼上的

为什么非要这么写呢?
sbit P0_0 = 0x80;
sbit P0_1 = 0x81;
sbit P0_2 = 0x82;
sbit P0_3 = 0x83;
sbit P0_4 = 0x84;
sbit P0_5 = 0x85;
sbit P0_6 = 0x86;
sbit P0_7 = 0x87;

这是库的写法,建议去看书!

使用特权

评论回复
15
isbit| | 2007-7-23 23:00 | 只看该作者

其实写c的对地址分配都不大明白

sfr P0      = 0x80;
sfr SP      = 0x81;
sfr DPL     = 0x82;
sfr DPH     = 0x83;
。。
。。
这些是给他们分配的寄存器地址

/*------------------------------------------------
P0 Bit Registers
------------------------------------------------*/
sbit P0_0 = 0x80;
sbit P0_1 = 0x81;
sbit P0_2 = 0x82;
sbit P0_3 = 0x83;
。。

sfr SP      = 0x81;
sfr DPL     = 0x82;
sfr DPH     = 0x83;
sfr PCON    = 0x87;
  这几个不能位分配的

其实51的地址是有重叠的,
难怪楼主会有疑惑,呵呵,
不知我说的对不对,欢迎高手拍砖!
。。
这些是p0口每一位的地址

使用特权

评论回复
16
hotpower| | 2007-7-23 23:02 | 只看该作者

C人的指针就是A人的地址~~~

使用特权

评论回复
17
conwh| | 2007-7-23 23:05 | 只看该作者

LZ得恶补了

使用特权

评论回复
18
gyt| | 2007-7-24 11:43 | 只看该作者

楼主怎么了?

好像越学越乱了:)

使用特权

评论回复
19
xxrrpp2000| | 2007-7-24 13:47 | 只看该作者

特设功能寄存器地址能够被8整除的才可以位寻址。

也就是说地址不能被8整除的SFR,是不可以用sbit定义位地址的,即不可以位访问,只能按字节访问。

不知道这样说明是否清楚?

使用特权

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

本版积分规则

165

主题

1113

帖子

3

粉丝