|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請教:HT_PICC傳遞指針問題 |
| 作者:黃果樹 欄目:單片機(jī) |
由于pic的RAM分bank,我初學(xué)hitech的picc,對picc指針的使用不是很清楚 各位大俠能否講解一下,謝謝! #define uCHAR unsigned CHAR static volatile uCHAR AAA[10]; static volatile bank1 uCHAR BBB[10]; static volatile bank2 uCHAR CCC[10]; static volatile bank3 uCHAR DDD[10]; void ppp(uCHAR *P) { ....... } void main(void) { uCHAR *p0; bank1 uCHAR *p1; //bank1 uCHAR * bank1 p1 ;如果這樣定義再傳遞呢? bank2 uCHAR *p2; //bank2 uCHAR * bank2 p1 ; bank3 uCHAR *p3; //bank3 uCHAR * bank3 p1 ; p0=&AAA[0]; p1=&BBB[0]; p2=&CCC[0]; p3=&DDD[0]; PPP(p0); //分別傳遞指向不同bank的指針可以嗎? PPP(p1); PPP(p2); PPP(p3); } |
| 2樓: | >>參與討論 |
| 作者: 張明峰 于 2003/12/22 9:09:00 發(fā)布:
PICC的指針 在PICC中一個指針可以覆蓋兩個bank的RAM空間,故在PICC中按bank分的話指針有兩類:一類是無需bank修飾符(可以用bank1修飾符)的指針定義,它管bank0和bank1;另一類是帶bank2修飾符的(或bank3修飾符),它管bank2和bank3。 在函數(shù)原型聲明中必須十分明確地把指針類型表達(dá)清楚,PICC在編譯時將作嚴(yán)格的指針匹配檢查。你的示范代碼中p0/p1實(shí)際是一回事,傳給函數(shù)PPP時沒有問題,因?yàn)镻PP函數(shù)在定義時已經(jīng)明確只接受指向bank0/bank1的指針;p2和p3將無法傳給函數(shù)PPP,因?yàn)閮煞N指針類型不匹配。 你必須再寫一個函數(shù),代碼可以和PPP一樣但名字不同,傳遞的參數(shù)指明為bank2/bank3類型的指針,例如: void PPP_23(bank2 uchar *ptr); 在main中才可以: PPP_23(p2); PPP_23(p3); |
|
| 3樓: | >>參與討論 |
| 作者: 黃果樹 于 2003/12/22 23:37:00 發(fā)布:
謝謝張教主! 這個問題我已經(jīng)弄清楚了,只是郁悶為什么picc不弄一個能傳遞irp位的指針 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |