社区
单片机/工控
帖子详情
关于位寻址的问题
liuconghan
2010-12-11 02:57:15
我用的是 C8051f020单片机。由于其P4~7口只能直接寻址,无法位寻址。现在由于要用到高位端口做液晶显示的数据端口。我该如何我该如何对这些高端口的每一位进行位操作呢?望各位高人指点一下?问分感谢!
...全文
158
6
打赏
收藏
关于位寻址的问题
我用的是 C8051f020单片机。由于其P4~7口只能直接寻址,无法位寻址。现在由于要用到高位端口做液晶显示的数据端口。我该如何我该如何对这些高端口的每一位进行位操作呢?望各位高人指点一下?问分感谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
liuconghan
2010-12-11
打赏
举报
回复
我还想问问像我那样的宏定义可以吗?能不能像“#define DB P1” 这种把P5口的三位和P6口五位也用宏定义成一个类似比如像“#define DB P5&P6”,能这样定义吗?如果不行该怎么定义?
zyzhang365
2010-12-11
打赏
举报
回复
液晶操作应该还有个R/W同步信号,即使你按位操作应该也是可以的。
P6 &= ~(0x1F);
P6 |= (data & 0x1F); // 设置低5 bits
P5 &= ~(0xE0);
P5 |= (data & 0xE0); // 设置高3 bits
liuconghan
2010-12-11
打赏
举报
回复
谢谢解答!我现在是用P5口的三位和P6口的五位来做液晶显示的8位数据位。还有一些控制位也是高位端口的。因为在给数据位写数据的话不可能一位一位的读写,我想合并成一个8位数据位。我用的是宏定义
#define DB0 P6 &=0x10
#define DB1 P6 &=0x08
#define DB2 P6 &=0x04
#define DB3 P6 &=0x02
#define DB4 P6 &=0x01
#define DB5 P5 &=0x80
#define DB6 P5 &=0x40
#define DB7 P5 &=0x20
#define DB ???//该怎么写(合并成八位)
不知道以上用法行不行?还请指教,谢谢
zyzhang365
2010-12-11
打赏
举报
回复
输入就更简单了,读入端口值,判断需要的位就可以了。
if(Px & (0x01 << y))就可以判断第y位是否为‘1’了。
liuconghan
2010-12-11
打赏
举报
回复
谢谢了!但是如果该位是数字输入,它的值是事先不知道,是由外设决定。这样的话我想问的是否能像低端接口就是定义该位而不给其置位。就是的把某一位独立出来,不知道是否能设置?该怎么设置?谢谢
zyzhang365
2010-12-11
打赏
举报
回复
Px &=~(0x01<< y), 将port或变量的第y清‘0’,其余位不变;
Px |=(0x01 << y),将端口或变量的第y位置‘1’,其余位不变。
使用同样的方法可以同时操作多位。
C++第4课:C++协程及高并发网络协程库State-Threads
然后讲解汇编语言的CPU寻址,以及CS:IP控制CPU走向的原理。 然后讲解高并发网络协程库State-Threads的案例应用,开发上万个协程,以及TCP服务器案例。 本课程的内容主要包括C/C++语言的setjmp、longjmp和goto,C/...
可
位寻址
和不可
位寻址
所谓的可
位寻址
就是我们在操作一个寄存器的时候,可以单独对某一位进行操作。不可
位寻址
,就是操作寄存器的时候需要操作整个寄存器,不能单独对某些位进行操作。如果我们只想改变其中几个位的值,而不改变其他位的值...
中断系统的相关知识(二)(可
位寻址
、不可
位寻址
)
中断系统中会涉及许多寄存器,这个时候我们会遇到一些有点陌生的名词,比如接下来说的“可
位寻址
”和“不可
位寻址
”,如下图:
位寻址
是指对一些内部数据存储器RAM和特殊功能寄存器进行位操作的寻址。简单来说...
可
位寻址
与不可
位寻址
位寻址
指的是这个寄存器中各位值可以直接调用如:可
位寻址
的IE中有八位EA - ET2 ES ET1 EX1 ET0 EX0可以直接用ET2=1来操作;不可
位寻址
的TMOD只能用TMOD=0x00来控制其中的各位。不可以未开控制其中的某一位,不可以...
单片机的字节寻址c语言,单片机中
位寻址
和字节寻址的区别?
位寻址
是位操作命令,写入和读出的是一个位bit变量。二、传递不同:MOV A,00H和MOV C,00H,前者是将RAM中地址为00H的8位内容传递给A,后者是将
位寻址
区(20H-2FH)中的地址为00H的1位内容传递给C。这两个00H不是在同一...
单片机/工控
27,375
社区成员
28,769
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章