以前寫了一個(gè)測試程序,昨晚上想把測試程序在改進(jìn)時(shí)候,發(fā)現(xiàn)我多增加一個(gè)全局變量 unsigned int flag; //定義一個(gè)全局變量 ,燒寫到單片機(jī)。。單片機(jī)運(yùn)行時(shí)候。LCD 顯示就正常了。測量到的數(shù)據(jù)也顯示不了, 反復(fù)測試好多次, 發(fā)現(xiàn)問題就在這句: unsigned int flag; //定義一個(gè)全局變量 多定義一個(gè)就出現(xiàn)錯(cuò)誤。 我百思不得其解。。 最后我只有請(qǐng)教了一些朋友,一些有經(jīng)驗(yàn)的朋友很快就知道問題出在哪里了。 是單片機(jī)的RAM 不夠了。 因?yàn)槲业倪@個(gè)程序比較大,涉及全局變量用到的比較多,超出范圍了。KEIL有三種存儲(chǔ)模式SMALL,COMPACT,LARGE. 默認(rèn)存儲(chǔ)模式是SMALL , 默認(rèn)就把所有的變量都放在RAM里面,這樣訪問速度是最快,但是適合小程序, 我的RAM 只有1280字節(jié) 。是不夠的。所以要選擇large模式,該模式空間大,可存變量多,但是訪問速度相對(duì)于比較慢。 所以。。只要把 KEIL Memory Model 設(shè)置為:large 即可。
OK ,人多力量大。。 問題就這樣解決了。 所以,做個(gè)記錄。 讓看過這篇文章的人,下次遇到這樣問題,也可以試試這個(gè)方法。