-
首先,我們來比較一下左邊和右邊,哪裡有區別,同時,不同程式對應的輸出結構有什麼區別。
P2 埠連線 8 個 LED 以驅動低電平以使其發光。
P2=0xfe 開機 連線的 LED 發光。 其餘的都熄滅了。
比較程式。
void main() main 函式。
p2=0xfe;p2 初始化。
while(1) 無限迴圈。
num=p2;在這裡,與左邊不同,p2 的狀態是給定 num,即 num=0xfe 0xfe
p2=_crol_(num,1);p2 等於 num 迴圈左移 p2=0xef此時,應該是連線的 LED 發光。
delay(0);延遲。
在左邊** num 每次做乙個大迴圈時都會被分配 num=0xfe,所以以後不管你怎麼移動它,p2 埠的輸出都不會變成,只會移動一次。
-
原因很簡單,左邊的那個總是採取相同的0xfe右邊的那個是當時的 P2 內容。
所以左邊的結果永遠不會一樣。
-
不可能是這樣的。 估算:您直接在 P2 埠上連線 LED。
在這種情況下,當P2輸出1時,實際引腳電平為左右,然後引腳狀態直接從環路中的P2讀取,實際讀入的資料均為0,即0x00
-
右。 num=p2
p2 在後一句中被 crol (num, 1) 重新分配,因此 p2 在下次迴圈到 num=p2 時不再0xfe。
左側的 **num=0xfe 始終0xfe。
-
我有問題
有多少個二極體? P0 和 P1 各有 8 個埠被占用?
問題會出在硬體連線和軟體控制之間的對應關係上嗎?
-
將 c=0x02, d=0x01 移到 while() 之前。
-
錯誤訊息和迴圈偏移之間有什麼關係? 重複定義。
-
你先賦值 p0=0xfe,即 p0 1 開啟,其他都關,你的 zuoyi() 函式只在執行後給 p0 賦值,zuoyi() 執行後返回值為 0;
-
M==0xfe你這是什麼意思,對吧?
m<<=1 不為真。
m<<1 的左移不是迴圈移位,左移的最右側可能是零填充。
-
for(i=0,m==0xfe;i<7;i++) m==0xfe正確嗎?還有 << = 是左移嗎?
-
crol 字元在迴圈中向左移動。
cror 字元在迴圈中向右移動。
IROL 整數。
迴圈的版本向左移動。
iror 整數迴圈向右移動。
lrol 長整數迴圈向左移動。
LROR 長整數迴圈向右移動。
你的這個結果是錯誤的。
a = 0xa5a5;
b = _irol_(a,1) ;執行後 b=0x4b4b;
根據你的結果應該這樣給出:
a = 0xa5a5;
b = _iror_(a,1) ;執行後 b=0xd2d2;
PS:IROR(A,1)表示將變數A迴圈向右移動1位。
-
由於您了解位移,因此您可以理解運算元 a5a5 和二進位結果:
A5A5:1010010110100101D2D2:1101001011010010其中 D2D2 是運算元 A 左移 1 位的結果,末尾為 0,最高的 1 是標誌位。
-
從結果來看,這是乙個向右的圓周移動。
-
編譯忘記了。
C.dat<<1
1 表示 1 位的左移,而不是每秒週期的左移,多餘的部分忽略---
常用場合:
u8 a;for( u8 i=0,j=0x01; i<8; i++,j<<=1 )
也常用於左移一位,只要不超出範圍,就相當於2
-
這是行不通的。 因為微控制器中的 p1 不是變數,而是埠。 給 P1 賦值是將相應的值輸出到埠,讀 P1 就是讀埠。 這兩者是完全不相關的操作。
for(p1=0xfe;p1!=0x7f;p1=left(p1));中 p1!=0xf7 讀取埠 P1,left(P1) 再次讀取,P1 = SO 輸出到埠 P1
如果外圍電路不變,那麼P1埠不變,讀值不變,當然迴圈永遠或只持續一次; 如果外圍電路發生變化,則電路中的變化與迴圈位移無關,因此迴圈也是不確定的。
您可以改為新增變數。
unsigned char b;
for(a = 2; a > 0;乙個--)最好在左右移位功能中也更改 p1,因為很容易混淆。
-
delay();時間不夠。
如果它太小,您將不會在光線中看到停頓。
同樣在 2 fors 之間,還有乙個暫停。
-
p1 埠不是變數,無法計算,可以使用以下程式嘗試 int a;
unsigned char temp;
p1=0xfe;
temp=p1;
for(a=2;a>0;a--)
p1=0x7f;
temp=p1;
delay();
while(temp!=0xfe)}
-
Loop Shift Right 是。
CROR 與此類似。
你在微控制器中,對吧?
除微控制器外,此類用途很少。
-
以下不是最簡單的嗎:
#include
#include
void main (void)
---完成。
原理:只是執行一些所謂的“無意義指令”,比如縮放或執行乙個int自加法,簡單來說,就像高中數學中的“乘法原理”一樣,很容易快速增加上面提到的“無意義指令”的數量。 >>>More
1. 直接呼叫庫函式。
2.以下是該函式的配置,從中可以看出,當i=0時,埠對應的燈亮,當i=1時,埠對應的燈亮,在for迴圈中,兩組燈交替閃爍。 >>>More
idata:定義的變數在 00 h ffh ram 和 256 位元組的範圍內,可以讀寫變數。 >>>More
讓我們先對你的問題做點什麼:從你的描述來看,你似乎想把重點放在微控制器上。 如果對C語言的要求不高,按照形式化流程學習指標和結構基本就夠了,而譚浩強的書更多的是針對PC的,有些東西你看不懂。 >>>More