求高人:PICTL&=~0x01;PICTL默认赋值为0;何不这样写:PICTL=0x00
答案:2 悬赏:0 手机版
解决时间 2021-01-27 03:11
- 提问者网友:我们很暧昧
- 2021-01-26 11:47
求高人:PICTL&=~0x01;PICTL默认赋值为0;何不这样写:PICTL=0x00
最佳答案
- 五星知识达人网友:荒野風
- 2021-01-26 13:06
很多时候,我们需要对单字节的SFR中的某一位赋值(0或1),以精确控制硬件设备。
有的SFR支持位寻址,比如说TCON、P0等,此时,对位的赋值非常简单,只需查询 ioCC2430.h 头文件中 SFR Bit Access 部分的位定义即可:
P0_0 = 0;//对P0第一位赋值0
P0_0 = 1;//对P0第一位赋值1
但有的SFR并不支持位寻址,就如本实验中的PICTL,此时想要对其中的某一位赋值,语法如下:
PICTL &= ~0x01; //对第1位赋值0
PICTL |= 0x01; //对第1位赋值1
大家可以记住&= ~,|=这两个常用的位赋值语法。
有的SFR支持位寻址,比如说TCON、P0等,此时,对位的赋值非常简单,只需查询 ioCC2430.h 头文件中 SFR Bit Access 部分的位定义即可:
P0_0 = 0;//对P0第一位赋值0
P0_0 = 1;//对P0第一位赋值1
但有的SFR并不支持位寻址,就如本实验中的PICTL,此时想要对其中的某一位赋值,语法如下:
PICTL &= ~0x01; //对第1位赋值0
PICTL |= 0x01; //对第1位赋值1
大家可以记住&= ~,|=这两个常用的位赋值语法。
全部回答
- 1楼网友:患得患失的劫
- 2021-01-26 14:37
无非有两种可能:
1 PICTL 初始值虽然为0,但 在程序运行过程中值会发生更改,(这种更改也可能是来自其他线 程、模块 甚至是其他外部进程)。
2 这段代码是无用代码, 写成 PICTL=0x00更直接。
没有第三种可能了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯