我想用C語言對微控制器的RAM區清0,有人能告訴我個思路嗎

時間 2025-01-30 02:15:20

1樓:管灝

你那麼想就不可能了。

因為你要執行的指令也是在ram裡的。

自己把自己清掉了 難道還能繼續下去麼……

2樓:網友

用指標做個迴圈好了。

微控制器的問題

3樓:柒月黑瞳

工業用定時器是指輸入訊號進入後, 按預先設定的時間傳送輸出訊號的控制裝置。

定時器的開始方法 動作模式有2種開始方法。

例: on延遲動作 訊號on延遲動作: 預先在定時器電源部施加電壓的狀態下輸入進入輸入部開始計時動作。

電源on延遲動作: 定時器的電源部上施加電壓的話定時器開始動作。

可程式設計控制器中的定時器是根據時鐘脈衝累積計時的,時鐘脈衝有 1ms、10ms、100ms等不同規格。(定時器的工作過程實際上是對時鐘脈衝計數)因工作需要,定時器除了佔有自己編號的儲存器位外,還佔有乙個設定值暫存器(字),乙個當前值暫存器(字)。設定值暫存器(字)儲存程式設計時賦值的計時時間設定值。

當前值暫存器記錄計時當前值。這些暫存器為16位二進位儲存器。其最大值乘以定時器的計時單位值即是定時器的最大計時範圍值。

定時器滿足計時條件開始計時,當前值暫存器則開始計數,噹噹前值與設定值相等時定時器動作,起常開觸點接通,常閉觸點斷開,並通過程式作用於控制物件,達到時間控制的目的。定時器相當於繼電器電路中的時間繼電器,可在程式中作延時控制。

plc定時器計數器的工作原理。

**處理單元(cpu)是plc 的控制中樞,它按照plc 系統程式賦予的功能接收並儲存從程式設計器鍵入的使用者程式和資料、檢查電源、儲存器i/o以及警戒定時器的狀態;並能診斷使用者程式中的語法錯誤。當plc 投入執行時,首先它以掃瞄的方式接收現場各輸入裝置的狀態和資料,並分別存入i/o 映象區,然後從使用者程式儲存器中逐條讀取使用者程式,經過命令解釋後,按指令的規定執行邏輯或算數運算的結果送入i/o 映象區或資料暫存器內,等所有的使用者程式執行完畢之後,最後將i/o 映象區的各輸出狀態或輸出暫存器內的資料傳送到相應的輸出裝置,如此迴圈執行直到停止執行。

為了進一步提高plc 的可靠性近年來對大型plc 還採用雙cpu 構成冗餘系統或採用三cpu 的表決式系統,這樣即使某個cpu 出現故障整個系統仍能正常執行。

時間繼電器通過脈衝,毫秒,當計數滿一,時間繼電器清零幷重新計時。

plc時間繼電器分類:斷電延時時間繼電器,通電延時時間繼電器。

微控制器的問題

4樓:網友

舉個例子給你說明:

這個二進位數為0010000000010000

其中21h=00100000 20h=00010000

clr c ;c清零。

xch a,21h ;交換a與21h的值,a=00100000

rrc a ;將a中值右移一位高位補0(c),a=00010000

xch a,21h ;交換a與21h的值,21h=00010000

xch a,20h ;交換a與20h的值,a=00010000

rrc a ;將a中值右移一位高位補0(c),a=00001000

xch a,20h ;交換a與20h的值,20h=00001000

此時原二進位數變成了0001000000001000

可見:1、程式完成的邏輯功能是使21h和20h中的16位二進位數右移一位,並使最高位為0,一般稱為邏輯右移一位。

2、可以用mov指令,修改後程式段如下:

clr cmov a,21h

rrc amov 21h,a

mov a,20h

rrc amov 20h,a

3、有所差別。雖然從16位右移功能來說兩者的功能是相同的,但第乙個程式段執行後,累加器a的內容仍維持原值,而第二個程式段執行後將改變a中的數值。

5樓:網友

空氣感測器一般使用gp2y1010au0f,proteus裡面是沒有的,你可以用乙個電位器來模擬,gp2y1010au0f傳回的是乙個模擬訊號。

6樓:網友

是把陣列固定到rom裡面,而不是放在ram裡面,減少ram的使用量,例如使用51微控制器的時候如果陣列大於256b,那麼ram就不夠用了,所以把不會改變的陣列放到rom裡面,當然,如果是會時常變化的陣列,是不能固定到rom中的;

2.都是這麼用,應該是編譯器設定的,你就當成是在keil編譯器下編寫51中斷程式的模組吧。

7樓:網友

1,code的意思就是告訴編譯器將這個一維陣列做為常量存放在程式儲存器rom或flash裡面。

2,不用定義,直接寫就好就像寫呼叫的子程式一樣。

8樓:高山入雲

1。「code」是微控制器c語言特有的關鍵字。

在微控制器中ram的空間特別小,特別珍貴。ram空間,存放變數。而一些常量,比如碼錶等常量放在rom中。所以微控制器中code就是告訴微控制器這個資料放入rom中。

本例中dispbit[8]=; 陣列內容為常量,故加上code,以節約ram的空間。

其實code放在unsigned char 前也可以,比如code unsigned char dispbit[8]效果一樣。

2.關於void t1zd(void) interrupt 3

interrupt 」是微控制器c語言中斷關鍵字,至於後面的0,1,2,3,4,5,分別表示。

0-外部中斷0

1-定時器0

2-外部中斷1

3-定時器1

4-串列埠中斷。

5-定時器2

interrupt 」是微控制器c語言中斷關鍵字,是c51 語言在微控制器中規定的,在程式編譯時指明中斷的型別。當相應的中斷髮生時,並執行這個中斷函式。

本例中當定時器計數時間一到(即 th1和tl1全部計滿,並溢位 ),便執行下面程式,將0x1c放到 th1中 0x18放到tl1 中,再開始重新計數(不斷加1),每計滿一次 lednumval值 加1。如此下去。。。

微控制器用c語言的基礎

9樓:網友

先找本c語言的書看看,學會基本的c語言程式設計。學過微控制器嗎?沒有就最好先學習一下微控制器原理。

數電模電都需要了解一點。《例說51微控制器(c語言)》還有郭天祥出的那本關於c語言的,都不錯。建議自己買個開發板慢慢學習。

裡面會贈送很多相關資料的。

10樓:網友

譚浩強的《c語言程式設計》和深圳職業技術學院的微控制器基礎。

微控制器程式問題

11樓:網友

對於暫存器和ram中的值,不需要改變的時候不要總重新整理,特別是特殊功能暫存器,很多是和外設共同操作的,錯誤的重新整理會導致不正常的後果,有可能使程式跑飛。巨集使用多一些應該問題不大,可能會使編譯慢一點,只要命名規則嚴格,一般不會有問題。

微控制器和c語言的問題,幫我出個思路

12樓:網友

你的問題有點不太清楚 你可以單聯絡我。

13樓:網友

不用改這個函式,按字元的編碼相對量調整引數就是了。

微控制器c語言 定義bit flag 那這flag剛定義時是0還是

14樓:網友

這個我只能說不同的微控制器,不同的編譯器結果是不確定的。所以建議變數要賦初值。

微控制器C語言程式設計題,微控制器C語言程式設計題

爬行的山羊 這是兩個題啊。哈哈好做,第一個有c語言的冒泡法排序,第二個用中斷,讀,輸出就可以 include define led0 0 define led1 1 define led2 2 define ledport p2 sbit sw0 p1 0 sbit sw1 p1 1 sbit sw...

微控制器c語言中定義,微控制器C語言中 定義a1 P0 1 a2 P0 2 a8 P0 7 b P2 0 。a1 a8不斷隨機為1。

這樣實現 sbit p20 p2 0 char consum 0 char i,bitflag 0x01 for i 0 i 8 i if consum 3 p20 1 希望我的回答對你有幫助,有什麼問題歡迎一起 謝謝。 如果是c51微控制器 include void main 如果找完一次p0口後...

微控制器c語言字串對比問題,微控制器C語言字串對比問題

要寫for迴圈判斷,不能直接用 也不能用strcmp等標準庫裡面的函式 風若遠去何人留 c語言字串對比可以呼叫標準庫函式strcmp。該函式宣告在string.h中,形式為 int strcmp char a,char b 返回值有三種情況,1,0或 1.其比較原則為 1 從第一個字元開始按照asc...