1樓:匿名使用者
這個問題,我也曾經是很難理解,這裡牽涉到兩個概念
1,|= 和 = 的基本區別
2,ucsctl4 在上面的兩個方式下會發生什麼不一樣的變化
這樣回答你把,可能比較好理解
1,對於 |= 和 = 的基本區別
直接等於的話,是會把原來的ucsctl4 的值給抹掉,然後再賦給一個全新的值,就是說和原來的值沒有任何關係了。
但是|= 呢,和原來的值有直接的關係,只是拉高了 等於 號後面對應位為1的值,而等於號後面位原來為0的值還是0,原來為1的值還是1,舉個例子
ucsctl4 = 0x1f; // (0b1000 1111)
ucsctl4 = 0x11;
上面的那句話執行之後,就和開始的值為0x1f值沒有任何關係了,最後得到的值就是 0x11;
ucsctl4 = 0x8f;
ucsctl4 = 0x11; //(0b0001 0001)
這個執行之後,就和原來的0x1f有關係,實際上就做了一個位運算
0b1000 1111
0b0001 0001 ,拉高最後一位,以及倒數第5位和倒數第8位
-----------------
0b1001 1111
最後的值是 0x1f,原來的倒數第8,3,2位,因為和0一起運算,所以本身是1,最後還是1;
2,ucsctl4 在上面的兩個方式下會發生什麼不一樣的變化,現在你大概能夠明白了把,如果把(sela__xt1clk+sels__xt1clk + selm__xt1cl)看成我們上面例子的0x11 的話,那麼最後的結果,對於兩種運算方式來說,一種是和原來的值有關係,一種是和原來的值沒有關係。
2樓:匿名使用者
首先你要知道 | 是或運算.
其次 a|=b , 這樣的寫法等同於 a=a|b;
最後 ucsctl4 | =sela__xt1clk+sels__xt1clk + selm__xt1clk
等同於 ucsctl4 =ucsctl4 |(sela__xt1clk+sels__xt1clk + selm__xt1clk )
這樣的運算也可以擴充套件為 a+=b,a-=b等等
3樓:匿名使用者
|= 符號前後的值進行或運算後 將值賦給前面的變數
= 僅僅是把後面的值賦給前面的變數
微控制器中程式每條語句的意思
4樓:
org 000h ;設定程式儲存區初始地址的偽指令
ljmp main ;跳到main語句,繞過中斷入口
org 1000h ;設定程式儲存區初始地址的偽指令
main: mov sp,#60h ;堆疊入口地址
mov 81h,#50h ;把立即數50h送到資料區81h地址
mov r0,#20h ;把立即數20h送到r0
mov @r0,#45h ;暫存器間接定址,把45h送到r0存的資料對應的地址
;就是20h這個地址
inc r0 ;r0加一
mov @r0,#74h ;暫存器間接定址,把74h送到r0存的資料對應的地址
;就是21h這個地址
mov r1,#30h ;把30h送到r1
mov @r1,#67h ;暫存器間接定址,把67h送到r1存的資料對應的地址
;就是30h這個地址
inc r1 ;r1加一
mov @r1,#28h ;暫存器間接定址,把28h送到r1存的資料對應的地址
;就是31h這個地址
clr c ;清除符號位
mov r2,#02 ;把2送到r2
l2:acall l1 ;調子函式l1
dec r0 ;r0減一
dec r1 ;r1減一
djnz r2,l2 ;如果r2減到0,就執行下一句,否則跳到l2
clr a ;累加器清零
mov acc.0,c ;把符號位移到累加器的第零位
nop ;延時一個週期
mov @r0,a ;暫存器間接定址,把a裡的資料傳送到r0對應的地址
l3: sjmp l3 ;死迴圈
l1: mov a,@r0 ;暫存器間接定址,把r0對應的地址
;裡的資料傳送到 a
addc a,@r1 ;把r1裡存放的地址裡的資料和a相加,再加進位位。
da a ;十進位制調整指令
mov @r0,a ;暫存器間接定址,把a裡的資料傳送到r0對應的地址
ret ; 子程式返回
end ;結束
求解:請各位大師多多指教 想問下如何用c語言編輯微控制器指令,指令如...
5樓:凌瓏井
unsigned char data;
data = 0x01;
p0 = data;
p1 = data;
p2 = data;
p3 = data;
如果不需要變數的話就直接
p0 = 0x01;
p1 = 0x01;
p2 = 0x01;
p3 = 0x01;
html 佈局的一個問題,請各位大俠多多指教!為方便描述問題,用**來說明問題 30
6樓:匿名使用者
沒有貼**啊,只是這麼簡單的要求麼?那可以試試這樣行1測試
行2測試
行3在進行測試描述問題
行4測試
7樓:等待放飛夢想
給描述問題,新增一個class。比如padding-left: 45px
求解:請各位大師多多指教 想問下如何用c語言編輯微控制器指令,指令如下...
8樓:快樂小斯
#include"reg52.h"
main()
9樓:
例:x=1;
p0=x;p1=x;p2=x;p3=x;
10樓:
p0=01h;
p1=01h;
p2=01h;
p3=01h
具有挑戰性的stc12c5a60s2微控制器程式設計問題!高手請多多指教!!
11樓:匿名使用者
按鍵可以考慮用電壓表示 可以省7個口 或者佔用p3的8個口 ,數碼管考慮用zlg 只要一箇中斷口,兩個普通口。 至於切換賦值要用到陣列,10個數字鍵 ,一個切換位置鍵,顯示用陣列直接顯示,內部實際數值演算法重算, 控制暫空比可以到官網上下例項 有個專門控制pwm暫空比的, 改改還是挺好用的 pid演算法得靠自己調了 得考慮實際情況
12樓:匿名使用者
口合!問題多而籠統!要搞明白,需看幾百頁的資料,不是幾句話能說明白的!而且每個人解決問題的程式設計思路也不同!
13樓:
呵呵,確實有點標題黨啊
大都是基礎知識,自己去翻書找資料才能提高
51微控制器與430微控制器的區別,430微控制器與51微控制器有什麼區別
首先,89c 51 單片 1 51單片 bai機是8位單 片機,du430是16位微控制器zhi。2 51微控制器dao效能和功耗上都不如版430微控制器,430微控制器被認權 為是現在功耗最低的微控制器。3 51微控制器主要用在一些比較簡單的工業裝置控制上,430主要用在一些低功耗手持裝置上 4 ...
微控制器問題。msp430g2 和51微控制器有哪些區別?求詳細
完全不一樣的架構,根本沒有可比性。430微控制器與51微控制器有什麼區別 一 主體不同 1 430微控制器 是美國德州儀器 ti 1996年開始推向市場的一種16位超 內低功耗 具有精簡指令容集 risc 的混合訊號處理器。2 51微控制器 是對所有相容intel 8031指令系統的微控制器的統稱。...
關於51微控制器中斷程式的一個問題
include unsigned char countsecond 計到20為1s unsigned int second 秒。void initial t0 void timer0 interrupt 1 using 0void main second 0 如果中斷則清0 51微控制器外部中斷的觸...