兇求助51微控制器c語言用陣列指標實現倒計時

時間 2021-12-19 07:20:04

1樓:匿名使用者

程式中明顯錯誤為三處,一一指出。

j=t*100;t是浮點型,100為整數型,運算時候會發生隱式型別轉換,按照型別轉換規則進行轉換,具體規則我已經忘了,說下大概,浮點型t會被轉換成整形進行運算,如不進行強制型別轉換則,t被轉換成了我們不期望看見的數。所以運算一定發生了問題,具體自己用c語言編譯器printf就知道。

關於隱式型別轉換看下這個

*p=&a[0]; 指標使用錯誤,&a[0]確實取得了陣列首位址,但是不應賦值給*p而是p,否則你的程式將會在微控制器中跑飛,或者在作業系統中如windows上面出現記憶體不能為read字樣

for(n=0;n>10;n++)該語句不會正確執行,因為條件不符合,應為n<10

正確的例項,並沒有放在微控制器上執行,用電腦模擬下,你可以從中提取程式格式寫法和程式設計套路

#include

#include

/*整理代替你的define部分 只是演示 */

int numregs[10]=;

void delayms(int ims)  }

void printnum(inum)

int main(void)

return 0;

}當然以後會遇到其他情況,如三位四位的數碼管顯示,雖然大家都不怎麼用,我還是得提及用結構體,省的寫一些簡單的東西,別人花好長時間才把變數對號入座。

typedef struct

num_dispaly_buf_t;

void fuc(num_dispaly_buf_t *p)

void main(void)

2樓:周黃根

此程式編譯沒有錯?*p=&a[0];把這句前的*號去掉試試。

小白c語言理解求助!謝謝大神幫我看一下~

3樓:游泳的魚

c語言的函式傳遞引數時傳的是引數的位址,如果是一維陣列的話就是首元素的位址,函式本身並不知道你的陣列有多大,所以,不管你怎麼改,得到的永遠都是8(有些編譯器是4)。其實你完全沒必要這樣求陣列長度的,太麻煩了,不如直接在主函式裡用sizeof()。如果你非要這樣用的話也可以,就是得給它乙個迴圈結束的標誌,比如在陣列的最後輸入乙個不可能的數,比如:

-1,當遇到-1時,就知道陣列結束了。**如下:

void test(int buf)

printf("size: %d \n", sizeof(int)*(size));}

4樓:愚運凡

如果我沒猜錯的話,你的作業系統應該是64位的吧

小白c語言理解求助!謝謝大神看一下,很簡單的。

5樓:

指標p指向陣列的第三個元素,所以p[1]=4,

也就是p將原陣列的第三個元素作為自己的第乙個元素。陣列是從0開始的,所以p[1]指的實際上是p的第二個元素

6樓:弒之觴

第二步:double* p = arr + 2;

得到*p= ;

所以p[1]=4,陣列下標從0開始的

請問一下有哪位 大神做過51微控制器串列埠模擬呀~這段可以幫我看看這段程式有什麼問題嗎?小白求助啊。。。 10

7樓:

建議你用 proteus **看看輸出的波形是不是跟標準的串列埠波形一樣,比如說一幀資料是不是發對了,有沒有少資料位。波特率是不是對了,等等,都可以通過 proteus **看到波形。

當然,**不一定都是正確的,但像你這個簡單的觀察io口輸出高低電平功能,**還是能比較真實反應出來的。

如果有條件,最好是用示波器看真實的波形。

如果不是,分析一下大概是**出問題,對應地修改**

8樓:匿名使用者

你好!模擬串列埠的波特率是 2400, 你現在測的存在什麼問題

9樓:匿名使用者

串列埠助手設定為n,8,1,2400,使用16制接收。

求助c語言大神。指標問題。如果*p=&a, *p++和*(p++)怎麼計算,表示什麼啊?不懂啊?

10樓:

*p=&a是錯誤的,只能是int *p=&a才對,*是int的不是p的,*p意思是「取p指向的值」。如果a=3,那麼*p++的值3,然後p=p+1。*(p++)的效果與*p++一樣。

因為++的結合性是從右至左的,所以有沒有()是一樣的。

11樓:

操作符的運算優先順序,具體你自己去查

12樓:匿名使用者

++優先順序比間接訪問優先順序高,不過你這個問題中的a是什麼元素沒說

13樓:90後小白

如果是陣列那麼p就指向該陣列,p++指向下乙個元素

51微控制器流水燈程式求助,求c語言程式

這個 看來你是微控制器沒學好啊。挺簡單的找你同學寫乙個就行 我給你乙個我練習的程式,你自己看看吧。不符合你要求,你參考參考吧。include include include define uchar unsigned char define uint unsigned int define bit ...

51微控制器,簡單問題,微控制器C語言程式設計的簡單問題

一般情況下我們都是以1作為高電平,0作為低電平,因為這樣符合我們日常生活中的認識。但是晶元的高低電平有時候不是這樣的,微控制器是以1作為高電平 這時也是高電壓 0作為低電平 低電壓 但是並不是所有的邏輯電平都是這樣 1為高,0為低 的。比如rs 232c標準規定的邏輯電平與ttl數位電路 例如 微控...

微控制器c語言右移指令怎麼用,微控制器C語言右移指令怎麼用?

吉祥二進位制 在c語言中 代表右移運算子,就相當於 shr 該運算子為雙目運算子,結合方向為從左到右,作用是把乙個整型數的所有位向右移動指定的位數,移動到右邊界之外的多餘二進位制位會被丟棄,並從左邊界移入0。舉例 計算表示式14 2的值。表示式14 2的值為3,因為14 即二進位制的0000 111...

用C51微控制器控制LED流水燈的C語言程式怎麼寫

斯帝國乘八國聯軍侵華戰爭之機,出兵侵占我國東北全境。中俄兩國 用at89c51微控制器控制8個led的流水燈的c程式看不懂 include包含微控制器專用標頭檔案 include這個是什麼俺也不知道,但這個程式不需要這個標頭檔案void delay10ms unsigned int c 自定義的延時...

微控制器用c語言程式設計問題

其一,分號是不會出現在那裡的,所以要去掉 其二,大括號內的逗號是必須的,不能用空格代替。其三,延時5us是這麼算的,讓微控制器去做 運算子的運算 注意 在c中是乙個運算子,其值取最後乙個,兩個 運算在微控制器中要花5個指令去完成,在12mhz晶振時每條指令花乙個us 所以大概延時5個us。其四,不能...