打印

不能位寻址的寄存器怎么定义呢

[复制链接]
1756|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sunny鱼儿|  楼主 | 2016-4-6 15:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
像c8051f020单片机低端口p1-p3可以位寻址,例如sbit LED1=P1.1  sbit  LED2=P1.2。那么请问P4-P7该怎么定义呢

相关帖子

沙发
coody| | 2016-4-6 17:40 | 只看该作者
那你看下P4~P7能否能位寻址?
STC的P4~P7是可以位寻址的。
另外,定义寄存器跟是否能位寻址无关,定义方式相同,都用SFR。

使用特权

评论回复
板凳
airwill| | 2016-4-6 20:36 | 只看该作者
如果是不能位寻址的寄存器, 就不能使用 sbit 定义位了, 只能用读修改写的方式来实现修改 (用 AND, OR 指令).

使用特权

评论回复
地板
sunny鱼儿|  楼主 | 2016-4-6 20:37 | 只看该作者
coody 发表于 2016-4-6 17:40
那你看下P4~P7能否能位寻址?
STC的P4~P7是可以位寻址的。
另外,定义寄存器跟是否能位寻址无关,定义方式 ...

你好。我这单片机P4-p7不能位寻址,以前遇到P1-P3口,直接就sbit LED=P2.7。现在遇到P5口 不知道怎么办了

使用特权

评论回复
5
sunny鱼儿|  楼主 | 2016-4-6 20:39 | 只看该作者
airwill 发表于 2016-4-6 20:36
如果是不能位寻址的寄存器, 就不能使用 sbit 定义位了, 只能用读修改写的方式来实现修改 (用 AND, OR 指令) ...

你好,我也听他们这么说,可是我还是不太懂,你能给我举个简单的例子么

使用特权

评论回复
6
ningling_21| | 2016-4-7 15:56 | 只看该作者
sunny鱼儿 发表于 2016-4-6 20:39
你好,我也听他们这么说,可是我还是不太懂,你能给我举个简单的例子么 ...

例如

想置位P4.7=1 ,
要写作 P4|=0X80;
清零时为: P4&=0X7F;

使用特权

评论回复
7
洛理小子| | 2016-4-7 16:34 | 只看该作者
高端口那就用字节寻址方式试试呗~~

使用特权

评论回复
8
coody| | 2016-4-8 11:28 | 只看该作者
sunny鱼儿 发表于 2016-4-6 20:37
你好。我这单片机P4-p7不能位寻址,以前遇到P1-P3口,直接就sbit LED=P2.7。现在遇到P5口 不知道怎么办了 ...

那就用与或操作,
输出0用与操作:P5 &= ~(1<<5);   //把P5.5输出0
输出1用或操作:P5 |=  (1<<5);     //把P5.5输出1

使用特权

评论回复
9
sunny鱼儿|  楼主 | 2016-4-8 11:34 | 只看该作者
coody 发表于 2016-4-8 11:28
那就用与或操作,
输出0用与操作:P5 &= ~(1

谢谢,我大概明白了

使用特权

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

本版积分规则

4

主题

11

帖子

0

粉丝