| 5 | 1/1 | 返回列表 |
| 查看: 2024 | 回復(fù): 4 | |||
zhangricky新蟲 (初入文壇)
|
[求助]
單片機(jī)C語言編程中的自定義函數(shù)使用問題
|
|
void v_Lcd12864PutString_f (unsigned char x, unsigned char y, unsigned char *pData) unsigned char n1; v_Lcd12864PutString_f( 2,0,&n1); 編譯能成功,但是LCD無法顯示n1這個變量的內(nèi)容,如果是靜態(tài)的字符串就沒問題。是什么原因呢? 如果改成這樣 void v_Lcd12864PutString_f (unsigned char x, unsigned char y, unsigned char *pData) unsigned char *p1; p1=&n1; v_Lcd12864PutString_f( 2,0,p1); 編譯通過,可是還是亂碼。 其中n1是取自時鐘芯片DS1302。 unsigned char n1;n1=Time->Hour/10;所以n1應(yīng)該等于小時的高位,只有可能是字符“1”或者字符“2”。請高人指點。 |
銀蟲 (初入文壇)
|
根據(jù)我的經(jīng)驗來推測,這個問題跟變量的生命周期有關(guān)。 你如果不加static關(guān)鍵字,n1變量所屬的程序分支結(jié)束之后,n1所在的地址也就被收回了,里面存了什么數(shù)據(jù)就不好說了,而你調(diào)用的lcd顯示函數(shù)仍然引用n1之前的地址,而這個老地址里面的數(shù)據(jù)已經(jīng)不是你所期望的1或者2了。而你如果加了static關(guān)鍵字,n1這個變量就會被分配在靜態(tài)數(shù)據(jù)區(qū),不會被收回,數(shù)據(jù)永遠(yuǎn)是1或者2,顯示也就不會錯。 由于樓主沒有貼出完整的程序,所以我猜測一般來說,是你調(diào)用lcd顯示函數(shù)之前,n1變量的生命周期就結(jié)束了。 當(dāng)然還有另一種情況,由于單片機(jī)的內(nèi)存是很小的,IAR這種工具都是有編譯優(yōu)化的,也就是說編譯器會自動的省去一些它認(rèn)為不必要的代碼段和數(shù)據(jù)段。這種情況下,編譯器有可能認(rèn)為n1這個引用是沒有意義的,從而產(chǎn)生傳址錯誤。這種情況我也見過。如果不是第一種情況,你就把編譯器里的代碼優(yōu)化選項給去掉。 如果還有問題可以把完整的代碼貼出來看看 |
木蟲 (職業(yè)作家)
銀蟲 (初入文壇)
|
這個是亂碼問題。DS1320是獲取的BCD碼,你要把BCD轉(zhuǎn)成DEC碼 uchar bcdtodec(uchar bcd)//BCD碼(4位2進(jìn)制表示1個數(shù))轉(zhuǎn)為DEC(10進(jìn)制數(shù)) { uchar data1; data1 = bcd & 0x0f; //取BCD低4位 bcd = bcd & 0x70; //剔除BCD的最高位和低4位。 data1 += bcd >> 1; data1 += bcd >> 3; //用位移代替乘法運算 return data1; } 之后的值應(yīng)該不會亂碼 |
| 5 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 材料學(xué)碩333求調(diào)劑 +3 | 北道巷 2026-03-24 | 3/150 |
|
|---|---|---|---|---|
|
[考研] 306求0703調(diào)劑一志愿華中師范 +10 | 紙魚ly 2026-03-21 | 11/550 |
|
|
[考研] 求調(diào)劑 +5 | 林之夕 2026-03-24 | 5/250 |
|
|
[考研] 300求調(diào)劑,材料科學(xué)英一數(shù)二 +5 | leaflight 2026-03-24 | 5/250 |
|
|
[考研] 求調(diào)劑一志愿武漢理工大學(xué)材料工程(085601) +5 | WW.' 2026-03-23 | 7/350 |
|
|
[考研]
|
孅華 2026-03-22 | 6/300 |
|
|
[考研] 336求調(diào)劑 +4 | 收到VS 2026-03-20 | 4/200 |
|
|
[考研] 291 求調(diào)劑 +4 | 化工2026屆畢業(yè)?/a> 2026-03-21 | 5/250 |
|
|
[考研] 求老師收我 +3 | zzh16938784 2026-03-23 | 3/150 |
|
|
[考研] 323求調(diào)劑 +6 | 洼小桶 2026-03-18 | 6/300 |
|
|
[考研]
|
2117205181 2026-03-21 | 8/400 |
|
|
[考研] 318求調(diào)劑 +4 | plum李子 2026-03-21 | 7/350 |
|
|
[考研] 303求調(diào)劑 +5 | 安憶靈 2026-03-22 | 6/300 |
|
|
[考研] 材料求調(diào)劑 +5 | @taotao 2026-03-21 | 5/250 |
|
|
[考研] 材料 271求調(diào)劑 +5 | 展信悅_ 2026-03-21 | 5/250 |
|
|
[考研] 一志愿華中科技大學(xué),080502,354分求調(diào)劑 +5 | 守候夕陽CF 2026-03-18 | 5/250 |
|
|
[考研] 一志愿南昌大學(xué),327分,材料與化工085600 +9 | Ncdx123456 2026-03-19 | 9/450 |
|
|
[考研] 0703化學(xué)調(diào)劑 +4 | 18889395102 2026-03-18 | 4/200 |
|
|
[考研] 0703化學(xué)調(diào)劑 +5 | pupcoco 2026-03-17 | 8/400 |
|
|
[考博] 26博士申請 +3 | 1042136743 2026-03-17 | 3/150 |
|