① 單片機 匯編語言 怎樣給某一位賦值 比如給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);
這是速度最快的方法。移位操作在編譯的時候已經被優化了。