⑴ 單片機 匯編語言 怎樣給某一位賦值 比如給P3.2賦1 問題二:有位寄存器嗎能夠存放位累加器C中的值
位螞含賦值:setb P3.2
MOV C,bit 將直接地址的某位值存入進位C。
MOV bit,C 將激物賣進位C的值存入直明逗接地址的某位。
⑵ 請高手幫忙!用C51對單片機存儲單元中的一位進行賦值,例如:給20H中的一位賦值,把P1.0口的值賦給20H.0
C51有一些地址支持位定址,可以直接脊褲型進行位操作,不同51MCU的地址段純前不一櫻猜樣,你查一下相應的datasheet.
⑶ 單片機變數賦值問題
不知道 是不是你的輸入蘆侍弊法沒陪族變過來 我按照你的程談運序編譯沒有出錯
第二個問題 是不可以P1^1=1的 ,可以P1=0xff.
⑷ 將單片P3.7至p3.2和p1.7,p1.6八個口整合一個變數,直接改變變數值,就能同時賦值八個口
如果是51系列的單片機,因為涉及到的是不同的埠地址,匯編語言所提供的指令系統,只能分別訪問不同的埠地址。所以單靠軟體無法實現此需求。
如果必須要一次腔激性如圓正同時改變8個I/O位,最簡單的方法是將8個I/O位安排在同一個埠上。
若是必須同時改變分布在不渣悔同埠上的I/O位,則可以通過在電路設計時,加上一級鎖存器的方案來實現。即先分別設置好I/O位的狀態,然後控制鎖存器的選通信號,將這些位狀態一次同時打入到鎖存器的輸出端。但是如果採用的是購置的成品電路,改動起來可能會比較麻煩。
⑸ ST單片機C語言有什麼指令定義埠的某一位做變數
先用SBIT 設置然後衫清直接讓那個變數=1或或培前=0就可以中察,例如下面的做法
sbit s1=P2^3;
然後在程序里直接操作s1=1 或s1=0
⑹ 單片機中有一個整型變數,如何給它賦值。
嘿嘿 俺來幫你解答
1 先在片內RAM中定義一個字變數(裝整型數據 16位數) 再傳送數據(先傳送低8位 再傳送高8位)
2 參考程序:
IN16 DATA 40H ;在片內RAM中定義一個整型變數 40H單元為低旅宴8位 41H單元為高做數8位
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV IN16,#12H ;將數據1234H傳送拆胡銀給整型變數
MOV IN16+1,#34H
呵呵 滿意就給 滿意回答吧
⑺ 單片機怎麼將兩個數組指定位置的值互換
這就是兩個數互換,用一個臨時變數轉存一下差宏就行了,例如,數組野慶粗xa[i] 和xb[j] 互換,用temp做臨頌鎮時變數,
temp=xa[i];
xa[i]=xb[j];
xb[j]=temp;
⑻ 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);
這是速度最快的方法。移位操作在編譯的時候已經被優化了。
⑽ 怎麼從單片機外部改變單片機中程序的變數
直接修改程序中的變數,危謹兆險性很清櫻大呢,要是改錯了位元組讓指令變成非法的,那程序就亂祥正租套了。最好是把那些變數分離出來單獨放在一個地方,比如24C02存儲器,這樣修改方便。