微控制器C語言的迴圈左右移動功能。

發布 科技 2024-06-15
19個回答
  1. 匿名使用者2024-01-29

    首先,我們來比較一下左邊和右邊,哪裡有區別,同時,不同程式對應的輸出結構有什麼區別。

    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 埠的輸出都不會變成,只會移動一次。

  2. 匿名使用者2024-01-28

    原因很簡單,左邊的那個總是採取相同的0xfe右邊的那個是當時的 P2 內容。

    所以左邊的結果永遠不會一樣。

  3. 匿名使用者2024-01-27

    不可能是這樣的。 估算:您直接在 P2 埠上連線 LED。

    在這種情況下,當P2輸出1時,實際引腳電平為左右,然後引腳狀態直接從環路中的P2讀取,實際讀入的資料均為0,即0x00

  4. 匿名使用者2024-01-26

    右。 num=p2

    p2 在後一句中被 crol (num, 1) 重新分配,因此 p2 在下次迴圈到 num=p2 時不再0xfe。

    左側的 **num=0xfe 始終0xfe。

  5. 匿名使用者2024-01-25

    我有問題

    有多少個二極體? P0 和 P1 各有 8 個埠被占用?

    問題會出在硬體連線和軟體控制之間的對應關係上嗎?

  6. 匿名使用者2024-01-24

    將 c=0x02, d=0x01 移到 while() 之前。

  7. 匿名使用者2024-01-23

    錯誤訊息和迴圈偏移之間有什麼關係? 重複定義。

  8. 匿名使用者2024-01-22

    你先賦值 p0=0xfe,即 p0 1 開啟,其他都關,你的 zuoyi() 函式只在執行後給 p0 賦值,zuoyi() 執行後返回值為 0;

  9. 匿名使用者2024-01-21

    M==0xfe你這是什麼意思,對吧?

    m<<=1 不為真。

    m<<1 的左移不是迴圈移位,左移的最右側可能是零填充。

  10. 匿名使用者2024-01-20

    for(i=0,m==0xfe;i<7;i++) m==0xfe正確嗎?還有 << = 是左移嗎?

  11. 匿名使用者2024-01-19

    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位。

  12. 匿名使用者2024-01-18

    由於您了解位移,因此您可以理解運算元 a5a5 和二進位結果:

    A5A5:1010010110100101D2D2:1101001011010010其中 D2D2 是運算元 A 左移 1 位的結果,末尾為 0,最高的 1 是標誌位。

  13. 匿名使用者2024-01-17

    從結果來看,這是乙個向右的圓周移動。

  14. 匿名使用者2024-01-16

    編譯忘記了。

    C.dat<<1

    1 表示 1 位的左移,而不是每秒週期的左移,多餘的部分忽略---

    常用場合:

    u8 a;for( u8 i=0,j=0x01; i<8; i++,j<<=1 )

    也常用於左移一位,只要不超出範圍,就相當於2

  15. 匿名使用者2024-01-15

    這是行不通的。 因為微控制器中的 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,因為很容易混淆。

  16. 匿名使用者2024-01-14

    delay();時間不夠。

    如果它太小,您將不會在光線中看到停頓。

    同樣在 2 fors 之間,還有乙個暫停。

  17. 匿名使用者2024-01-13

    p1 埠不是變數,無法計算,可以使用以下程式嘗試 int a;

    unsigned char temp;

    p1=0xfe;

    temp=p1;

    for(a=2;a>0;a--)

    p1=0x7f;

    temp=p1;

    delay();

    while(temp!=0xfe)}

  18. 匿名使用者2024-01-12

    Loop Shift Right 是。

    CROR 與此類似。

    你在微控制器中,對吧?

    除微控制器外,此類用途很少。

  19. 匿名使用者2024-01-11

    以下不是最簡單的嗎:

    #include

    #include

    void main (void)

    ---完成。

相關回答
19個回答2024-06-15

原理:只是執行一些所謂的“無意義指令”,比如縮放或執行乙個int自加法,簡單來說,就像高中數學中的“乘法原理”一樣,很容易快速增加上面提到的“無意義指令”的數量。 >>>More

2個回答2024-06-15

1. 直接呼叫庫函式。

2.以下是該函式的配置,從中可以看出,當i=0時,埠對應的燈亮,當i=1時,埠對應的燈亮,在for迴圈中,兩組燈交替閃爍。 >>>More

30個回答2024-06-15

idata:定義的變數在 00 h ffh ram 和 256 位元組的範圍內,可以讀寫變數。 >>>More

18個回答2024-06-15

讓我們先對你的問題做點什麼:從你的描述來看,你似乎想把重點放在微控制器上。 如果對C語言的要求不高,按照形式化流程學習指標和結構基本就夠了,而譚浩強的書更多的是針對PC的,有些東西你看不懂。 >>>More

8個回答2024-06-15

這是乙個簡單的例程,即 P1 埠上 LED 燈閃爍的例程。 >>>More