| 24小時(shí)熱門(mén)版塊排行榜 |
| 5 | 1/1 | 返回列表 |
| 查看: 2031 | 回復(fù): 4 | ||
| 當(dāng)前只顯示滿足指定條件的回帖,點(diǎn)擊這里查看本話題的所有回帖 | ||
zhangricky新蟲(chóng) (初入文壇)
|
[求助]
單片機(jī)C語(yǔ)言編程中的自定義函數(shù)使用問(wèn)題
|
|
|
void v_Lcd12864PutString_f (unsigned char x, unsigned char y, unsigned char *pData) unsigned char n1; v_Lcd12864PutString_f( 2,0,&n1); 編譯能成功,但是LCD無(wú)法顯示n1這個(gè)變量的內(nèi)容,如果是靜態(tài)的字符串就沒(méi)問(wèn)題。是什么原因呢? 如果改成這樣 void v_Lcd12864PutString_f (unsigned char x, unsigned char y, unsigned char *pData) unsigned char *p1; p1=&n1; v_Lcd12864PutString_f( 2,0,p1); 編譯通過(guò),可是還是亂碼。 其中n1是取自時(shí)鐘芯片DS1302。 unsigned char n1;n1=Time->Hour/10;所以n1應(yīng)該等于小時(shí)的高位,只有可能是字符“1”或者字符“2”。請(qǐng)高人指點(diǎn)。 |
木蟲(chóng) (職業(yè)作家)
銀蟲(chóng) (初入文壇)
|
根據(jù)我的經(jīng)驗(yàn)來(lái)推測(cè),這個(gè)問(wèn)題跟變量的生命周期有關(guān)。 你如果不加static關(guān)鍵字,n1變量所屬的程序分支結(jié)束之后,n1所在的地址也就被收回了,里面存了什么數(shù)據(jù)就不好說(shuō)了,而你調(diào)用的lcd顯示函數(shù)仍然引用n1之前的地址,而這個(gè)老地址里面的數(shù)據(jù)已經(jīng)不是你所期望的1或者2了。而你如果加了static關(guān)鍵字,n1這個(gè)變量就會(huì)被分配在靜態(tài)數(shù)據(jù)區(qū),不會(huì)被收回,數(shù)據(jù)永遠(yuǎn)是1或者2,顯示也就不會(huì)錯(cuò)。 由于樓主沒(méi)有貼出完整的程序,所以我猜測(cè)一般來(lái)說(shuō),是你調(diào)用lcd顯示函數(shù)之前,n1變量的生命周期就結(jié)束了。 當(dāng)然還有另一種情況,由于單片機(jī)的內(nèi)存是很小的,IAR這種工具都是有編譯優(yōu)化的,也就是說(shuō)編譯器會(huì)自動(dòng)的省去一些它認(rèn)為不必要的代碼段和數(shù)據(jù)段。這種情況下,編譯器有可能認(rèn)為n1這個(gè)引用是沒(méi)有意義的,從而產(chǎn)生傳址錯(cuò)誤。這種情況我也見(jiàn)過(guò)。如果不是第一種情況,你就把編譯器里的代碼優(yōu)化選項(xiàng)給去掉。 如果還有問(wèn)題可以把完整的代碼貼出來(lái)看看 |
銀蟲(chóng) (初入文壇)
新蟲(chóng) (初入文壇)
|
這個(gè)是亂碼問(wèn)題。DS1320是獲取的BCD碼,你要把BCD轉(zhuǎn)成DEC碼 uchar bcdtodec(uchar bcd)//BCD碼(4位2進(jìn)制表示1個(gè)數(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; //用位移代替乘法運(yùn)算 return data1; } 之后的值應(yīng)該不會(huì)亂碼 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[論文投稿]
chinese chemical letters英文版投稿求助
120+4
|
Yishengeryi 2026-03-30 | 6/300 |
|
|---|---|---|---|---|
|
[考研] 301求調(diào)劑 +4 | 細(xì)胞相關(guān)蛋白 2026-04-02 | 8/400 |
|
|
[考研] 326求調(diào)劑 +3 | 崽崽仔 2026-04-02 | 3/150 |
|
|
[考研] 一志愿同濟(jì)大學(xué)323分(080500)求調(diào)劑 +6 | yikeniu 2026-04-01 | 6/300 |
|
|
[考研] 348求調(diào)劑 +6 | 吳彥祖24k 2026-04-02 | 6/300 |
|
|
[考研] 材料求調(diào)劑 一志愿哈工大總分298分,前三科223分 +12 | dongfang59 2026-03-27 | 12/600 |
|
|
[考研] 298求B區(qū)調(diào)劑 +4 | zzz,,r 2026-04-02 | 5/250 |
|
|
[考研] 材料工程322分 +8 | 哈哈哈吼吼吼哈 2026-04-01 | 8/400 |
|
|
[考研] 材料調(diào)劑 +11 | 一樣YWY 2026-03-31 | 11/550 |
|
|
[考研] 303分 0807學(xué)碩求調(diào)劑 +3 | TYC3632 2026-04-01 | 3/150 |
|
|
[考研] 求調(diào)劑 +4 | 圖鑒212 2026-03-30 | 5/250 |
|
|
[考研] 262求調(diào)劑 +9 | 勵(lì)志一定發(fā)文章 2026-03-31 | 10/500 |
|
|
[考研] 311(085601)求調(diào)劑 +12 | liziyeyeye 2026-03-28 | 13/650 |
|
|
[考研] 一志愿a區(qū)211,085601-307分求調(diào)劑 +10 | 黨嘉豪 2026-03-31 | 23/1150 |
|
|
[考研] 材料工程專(zhuān)碩求調(diào)劑 +10 | hyl3153942 2026-03-29 | 10/500 |
|
|
[考研] 282求調(diào)劑 +3 | 呼吸都是減肥 2026-03-31 | 3/150 |
|
|
[考研] 0703 化學(xué) 求調(diào)劑,一志愿山東大學(xué) 342 分 +7 | Shern—- 2026-03-28 | 7/350 |
|
|
[考研] 085602 化學(xué)工程專(zhuān)碩 340分求調(diào)劑 +4 | qianbai11 2026-03-29 | 4/200 |
|
|
[碩博家園] 招收生物學(xué)/細(xì)胞生物學(xué)調(diào)劑 +4 | IceGuo 2026-03-26 | 5/250 |
|
|
[考研] 081200-314 +3 | LILIQQ 2026-03-27 | 4/200 |
|