不能用一个变量"n",来代表P1八位里的其中一位?

[复制链接]
2648|5
 楼主| wasay 发表于 2011-4-5 20:02 | 显示全部楼层 |阅读模式
本帖最后由 wasay 于 2011-4-5 20:37 编辑

“其中一位”是随机数,由变量n来表示。 用P1.n=1来把P1端口的第n位置1,始终提示错误(KEIL 4)。 这个怎么弄呢?
sdpz 发表于 2011-4-5 20:23 | 显示全部楼层
//置位
P1 |= (1<<n);

//清零
P1 &= ~(1<<n);

//取反
P1 ^= (1<<n);
coody 发表于 2011-4-5 21:25 | 显示全部楼层
当然可以,2楼的方法几可以,不过比较耗时间,我一般查表,8个字节的表
aihe 发表于 2011-4-8 18:47 | 显示全部楼层
Keil里不是有位操作指令的嘛
再不会就嵌入汇编
ayb_ice 发表于 2011-4-9 08:29 | 显示全部楼层
LZ
的那种想法是不能直接实现的,必须间接实现
这和MCU的指令架构有关,
端口属于SFR,而SFR只能直接寻址,SFR的位寻址其实也是直接位寻址,而不存在间接位寻址,也就是没有位指针
刘前辈 发表于 2011-4-9 10:51 | 显示全部楼层
#include <reg52.h>

sbit P1_3=P1^3;

void main(void)
{
P1_3=1;

while(1);
}


/
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

27

帖子

1

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