250分問微控制器C語言題

發布 科技 2024-07-09
12個回答
  1. 匿名使用者2024-01-30

    這應該是你的定義有問題,你只需要將定義更改為無符號字元 idata,你就會沒事的。

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

    1.可能是RAM不夠出去一次。 需要更改 **。

    2.基本沒有區別,標頭檔案自帶keil,只要在搭建專案時選擇即可。

    3、微控制器在程式設計前,應先擦除ROM,再進行程式設計,當然資料不能程式設計。

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

    1.由於微控制器51-52內部RAM可以直接通過片上資料儲存器(工作暫存器區、位定址區、資料緩衝區---區128位元組)進行定址,但是工作暫存器區至少有一組暫存器被系統占用8位元組,所以我們最多只能使用128-8=120位元組的直接定址空間。 如果要使用更多空間,可以使用間接定址區域。

    改為無符號字元 idata fifo[121]; 就是這樣。

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

    如果看一下頭檔案中記憶體的定義,即使記憶體很大,定義這麼多記憶體仍然存在問題。

    其餘的我不知道,但標頭檔案必須在您的 keil 軟體安裝目錄中。

    或者他叫不來,你仔細看,我用的是430,標頭檔案就裝在目錄裡。

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

    微控制器本身可以分配的空間是有限的,它可能會限制全域性變數或堆疊的最大分配容量,所以只能是 120。

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

    這可能是keil的問題,有時會發生在盜版中,如果程式本身沒有錯,也表明存在錯誤。

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

    你好,我看到你用的是51微控制器,對吧?

    這樣,th0 是定時器 0 的上八位位元組(h 代表高),tl0 是定時器 0 的下八位位元組(l 代表低),兩個八位位元組二進位陣列合成乙個 16 位二進位數用於計時器計數。

    定時時,根據晶振的頻率(一般為晶振週期的12倍加1),不斷加法,直到th0和tl0溢位(即超出16位整數範圍),執行定時器0函式的運算,此時定時器0的初始值一般復位,保持這個頻率呼叫函式。

    這裡,-10000 256 實際上是 -10000 的上八分之一,而 -10000% 256 是 -10000 的下八分之一,當它從這個初始值新增到 16 位整數溢位時,它是乙個計時週期。

    我上學期才學會使用微控制器,不是很好,還在學,如果有任何問題歡迎大家來嗨我**。

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

    語句:th0 = -10000 256tl0 = -10000 % 256

    在 keil 環境中使用時,它將等同於以下兩個語句:

    th0 = (65536 -10000) 256tl0 = (65536 -10000) %256 編譯,keil 編譯器會為我們計算初始值。

    keil 編譯器在計算時,根據 16 二進位數進行計算,因此 65536 等於 0。

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

    你應該使用方法2的時序,你的上面也可以等價於th0=(65535-10000)256;

    tl0=(65535-10000)%256;

    Th0 和 tl0 分別是高低八位組暫存器,所以 th0 是 tl0 是 %,初始值是 65535-10000

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

    1 大括號主要是告訴編譯器這是乙個程式段,不能用空格代替,空格只有在用作字串時才能被編譯器識別。

    2.程式的延遲主要與你使用的晶體振盪器有關,計算方法:如果你使用12m晶體,一般51微控制器只有1m經過12次交叉,1m是它的工作速度(也叫機器週期,大小是1us),指令執行的時間叫指令週期, 單週期指令在機器週期內執行,NOP是單週期指令(時間為1us)。編譯器不認為空格有空格,使用多少都無關緊要; 逗號是乙個空語句,通常被編譯成 nop 指令。

    3你可以使用 nop(); 這是乙個空躍點函式,再呼叫幾次就會達到效果。 一般來說,延遲最好使用,定時器,

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

    微控制器C語言程式設計不能做到精確的延遲,這個延遲程式是用兩個空語句來延遲的,類似於彙編中的NOP指令,延遲5us應該用斷點的方法來測試。

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

    1. 對於 51 自帶的 IO 口,例如將 P0 埠狀態傳送到累加器,可以這樣寫:

    acc = p0;

    acc 是累加器,p0 是埠名。 這些標識已在 中定義,並且可以直接引用。

    2.如果是擴充套件的外部埠,一般這些埠都會有對應的位址,訪問時可以直接使用它們的位址。 例如,如果Chasun Sou使用8255晶元擴充套件IO埠,則其失敗歷史記錄中0xc001乙個8位埠位址,可以這樣寫:

    acc = xbyte[0xc001];

    其中,xbyte[ ] 是 51 個微控制器直接訪問外部儲存儲存器的方法。

    3.至於房東說的outport和import,都是用在電腦裡,在微控制器的C語言裡用到的(至少在最常用的Keil C編譯器裡沒有用到)。

相關回答
9個回答2024-07-09

一般來說,我們用 1 作為高水平,用 0 作為低水平,因為這符合我們日常的理解。 但是晶元的高低電平有時不是這樣,微控制器用1作為高電平(此時也是高電壓),0作為低電平(低電壓)。 >>>More

18個回答2024-07-09

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

19個回答2024-07-09

按下按鈕就等於短路,只要任何一點與地面短路,其電位就變得與地面相同,即0,既然是0,當然是低電平。

8個回答2024-07-09

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