① 单片机 汇编语言 怎样给某一位赋值 比如给P3.2赋1 问题二:有位寄存器吗能够存放位累加器C中的值
位蚂含赋值:setb P3.2
MOV C,bit 将直接地址的某位值存入进位C。
MOV bit,C 将激物卖进位C的值存入直明逗接地址的某位。
② 单片机C语言数组赋值求助
数组只能在定义的时候整体赋值,不能在之后这样用。
所以你只能写成
uchar frist[5]={a,b,c,d,e,f};
而不能写成
uchar frist[5];
frist[5]={a,b,c,d,e,f};
如果你真的要在之后赋值,特别是每个成员不一样,你只能用循环或者手动一个一个赋值。
或者先把所有值放在另外一个数值然后memcpy给目标数组。
③ 51单片机c语言编程能给位赋值么
C语言中不能直接给二进制某一位赋值
但是可以通过按位操作来实现
如果你的P3是整型或者字符型的变量,可以通过“按位或”对某一位赋1,通过“按位与”对某一位赋0
P3=P3|0x40;//这样就是在不改变其他位的同时给第6位赋1
0x40转换成二进制位01000000
假如:P3的值为10110010
10110010
| 01000000
结果为 11110010
④ 请问:单片机c语言中如何实现将变量A中某1位赋值给B中某1位的操作
假锋茄并如将A第三位赋给B第二纳销位
对于C51架构单片机,可使用位寻址:
bdata A, B;
sbit a3 = A^3; //位变量指向A第三位
sbit b2 = B^2;
b2 = a3;
对于其他任何类型单片银迹机,可使用位操作宏(同样适用于C51):
#define get_bit(var, n) (var & (1<<n))
#define set_bit(var, n) (var |= (1<<n))
#define clr_bit(var, n) (var &= ~(1<<n))
使用方法
if(get_bit(A, 3))set_bit(B, 2);
else clr_bit(B, 2);
这是速度最快的方法。移位操作在编译的时候已经被优化了。