ARM7 编程里如何定义一个位? 单片机中用sbit 在ARM里编程去无法定义 是不是需要什么头文件啊?
答案:3 悬赏:40 手机版
解决时间 2021-02-02 17:45
- 提问者网友:太高姿态
- 2021-02-01 20:54
ARM7 编程里如何定义一个位? 单片机中用sbit 在ARM里编程去无法定义 是不是需要什么头文件啊?
最佳答案
- 五星知识达人网友:封刀令
- 2021-02-01 21:35
楼上说的都没错~arm不能进行位操作,只能按以下方式来进行:
#define AA_set port |= (1<) // ?表示置1第几位 比如?=1,将第1位置1
#define AA_clr port &= ~(1<) // ?表示清除第几位 比如?=1,将第1位置0
比如:
#define AA_set port |= (1<<5) // 将第5位置1
#define AA_clr port &= ~(1<<5) // 将第5位置0
#define AA_set port |= (1<<0) // 将第0位置1
#define AA_clr port &= ~(1<<0) // 将第0位置0
其中的port就是定义的端口,类似于51里面的P0,P1~
port的形式一般如下:
#define port (*(volatile unsigned int *)0x40000000)
程序中就直接用AA_set和AA_clr就可以了,比如:
AA_set; //置1
AA_clr; //置0
#define AA_set port |= (1<) // ?表示置1第几位 比如?=1,将第1位置1
#define AA_clr port &= ~(1<) // ?表示清除第几位 比如?=1,将第1位置0
比如:
#define AA_set port |= (1<<5) // 将第5位置1
#define AA_clr port &= ~(1<<5) // 将第5位置0
#define AA_set port |= (1<<0) // 将第0位置1
#define AA_clr port &= ~(1<<0) // 将第0位置0
其中的port就是定义的端口,类似于51里面的P0,P1~
port的形式一般如下:
#define port (*(volatile unsigned int *)0x40000000)
程序中就直接用AA_set和AA_clr就可以了,比如:
AA_set; //置1
AA_clr; //置0
全部回答
- 1楼网友:迟山
- 2021-02-01 22:18
几乎所有ARM都不能位操作,即便用有些芯片提供的固件库让人感觉可以位操作,但是其实函数体里也是通过移位处理的,试着慢慢习惯吧,我刚开始也很别扭觉得,后来用多了就好了,祝成功~
- 2楼网友:低音帝王
- 2021-02-01 22:00
51系列单片机里面,具有“位寻址区”,才具有“位地址”的概念、方法。
这是51及兼容单片机所特有的,其它的CPU,都没有这个功能。
想要对某个位进行操作,只能对整个的字节、或字,进行操作。
这是51及兼容单片机所特有的,其它的CPU,都没有这个功能。
想要对某个位进行操作,只能对整个的字节、或字,进行操作。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯