找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 6001|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

義隆單片機(jī)編譯小結(jié)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:3721 發(fā)表于 2015-1-5 16:42 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
c語(yǔ)言編譯單片機(jī)程序。比如編譯MCS-51或者AVR有時(shí)會(huì)說(shuō)開發(fā)效率比匯編高,而開發(fā)PIC和ELAN卻發(fā)現(xiàn),c語(yǔ)言許多經(jīng)典的格式都無(wú)法使用。MCS-51在RAM空間開辟堆棧時(shí)會(huì)考慮堆棧時(shí)會(huì)考慮,因?yàn)樯疃榷馛語(yǔ)言里面的函數(shù)嵌套,計(jì)算階乘時(shí)不可以想c語(yǔ)言那樣使用函數(shù)嵌套。ELAN的c編譯器在使用過程發(fā)現(xiàn),不宜使用局部變量,最好有和書寫匯編是同樣的數(shù)據(jù)空間分配思想。對(duì)定義的變量進(jìn)行地址定位,uchar data1 @20 :bank 0;bit buzzer @0x20 @0:bank 0;。
今天寫程序時(shí)編譯總會(huì)進(jìn)入死循環(huán),uchar i;for(i=0;i<5;i++);這樣的語(yǔ)句會(huì)進(jìn)入死循環(huán)。在反匯編窗口觀察反匯編代碼發(fā)現(xiàn)i被定位在數(shù)據(jù)空間0x39,儀隴單片機(jī)78P153S的用戶數(shù)據(jù)空間從0x20-0x2f超出空間,應(yīng)該是編譯器的問題。修改局部變量為全局變量并定位,uchar i @0x20:bank 0;就不會(huì)出現(xiàn)上面的問題。
MCS-51有128字節(jié)的數(shù)據(jù)存儲(chǔ)空間r0-r7寄存器有七組,可以定義很大的數(shù)組,ELAN的數(shù)據(jù)存儲(chǔ)空間,定義一個(gè)15的數(shù)組編譯就會(huì)出現(xiàn)數(shù)據(jù)存儲(chǔ)空間不足的編譯警告。stc單片機(jī)4k的,16k很常見,所以從來(lái)用c語(yǔ)言不太考慮程序空間的開銷。曾經(jīng)用11F02做LED大屏幕顯示,32幅32*48圖像的字模存儲(chǔ)超出了2k空間,后來(lái)考慮11f03,后來(lái)就壓縮成16*24的了。儀隴的153只有1k,156也只有1k,468,447有2k,經(jīng)常編程序就超出空間,不得不苦苦思索程序壓縮。
STC的單片機(jī)都是串口編程,燒寫次數(shù)多達(dá)100000次,所以開發(fā)調(diào)試就是不停的下載調(diào)試。
早上燒儀隴單片機(jī),燒程序調(diào)試,一個(gè)小時(shí)內(nèi)我扔了7個(gè)單片機(jī)到垃圾桶,就不扔了,OTP編程牛的一踏,每每開發(fā)一個(gè)產(chǎn)品會(huì)有多少單片機(jī)犧牲。
下午就用仿真器調(diào)試了,發(fā)現(xiàn)了好多問題,當(dāng)正確按說(shuō)明進(jìn)入系統(tǒng),蜂鳴器鳴叫一聲,黃燈閃爍一次,進(jìn)入編碼,輸入密碼,一項(xiàng)的實(shí)現(xiàn)時(shí),對(duì)自己說(shuō),小翔翔,快覺悟了,加油。所有的都是一個(gè)人苦心去悟出來(lái)的。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:127421 發(fā)表于 2016-6-20 16:13 | 只看該作者
嘿嘿,你用C語(yǔ)言搞的?
回復(fù)

使用道具 舉報(bào)

板凳
ID:252566 發(fā)表于 2017-11-23 10:12 | 只看該作者
請(qǐng)問樓主,你是用的義隆哪個(gè)型號(hào)的MCU,一般OTP的話少有用C語(yǔ)言的。
我之前是用匯編做的。如果你要什么幫助的話,可以找我。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表