沒有仿真器開發(fā)單片機(jī)程序
我大大小小斷斷續(xù)續(xù)也算開發(fā)了幾年P(guān)IC了.除了一開始用了ICD開發(fā)了一個(gè)之外,后來再也沒有用過硬件仿真.說來有些慚愧,到現(xiàn)在我自己掏腰包買的ICD2還沒啟用,硬件仿真器更是連見都沒見到過.這都是因?yàn)長(zhǎng)B酸的緣故,這就不說了.
先說到現(xiàn)在的單位開發(fā)的第一個(gè)東東.用的是12C508A,OTP的.先用MPLAB軟仿真,軟仿真的基本通過了,再"硬仿真",其實(shí)就是拿芯片燒了試.誰讓LB不肯買N千的仿真器呢?好在當(dāng)時(shí)倉(cāng)庫(kù)里有N萬片,燒!不過后來我自己有些肉痛,想想一個(gè)程序才100多句,燒一次還有300多字空的,怪可惜的,又想了一個(gè)一片燒幾次的辦法,先在這里簡(jiǎn)單介紹一下.
關(guān)鍵是寫程序的時(shí)候要當(dāng)心一點(diǎn).比如一個(gè)芯片打算寫3次就這樣寫:
1.第一次編程的時(shí)候在第一句寫上ORG0x03,然后寫GOTOSTART1
2.在后面的程序中緊跟著寫程序,每個(gè)子程的標(biāo)號(hào)為L(zhǎng)ABLE1_X
3.燒寫....
4.測(cè)試...
5.第二次編程,在第一次的GOTOSTART1前面一句寫ORG0x02,然后寫GOTOSTART2
6.緊跟在第一次的程序后面去掉END寫第二次程序,每個(gè)子程序的標(biāo)號(hào)為L(zhǎng)ABLE2_X.
7.燒第二次...校驗(yàn)OK...
8.測(cè)試...
大家明白了嗎?還可以舉一反三,想想有中斷時(shí)怎么多次燒寫...
余容后述......
后來漸漸開發(fā)的程序大了,光靠看波形看不出什么名堂,要看內(nèi)存,怎么辦?只有把那些數(shù)值讀出來,可又沒其它的硬件...好在現(xiàn)在都有FLASH芯片,程序大一點(diǎn),多燒幾次沒關(guān)系...有什么用?!先別急,電腦肯定有,再到網(wǎng)上當(dāng)一個(gè)串口調(diào)試軟件,再編一個(gè)串口通訊程序,使單片機(jī)可以和電腦通訊...明白了嗎?
隔一段時(shí)間把關(guān)鍵的寄存器值送到電腦上...16進(jìn)制看不懂?有BIN2BCD的子程序,還看不明白?有BCD2ASCII的子程序...
我就這樣收啊收,什么地方有問題,就調(diào)用一下串口通訊的發(fā)哪個(gè)寄存器的值...只要你高興,增加一個(gè)CALL而已...
端口不夠?指示燈總有一個(gè)吧?數(shù)字輸入腳總有一個(gè)吧?暫時(shí)借來復(fù)用一下...
況且,ICD也要占用兩個(gè)口,幾個(gè)寄存器,一段程序空間,總比買一個(gè)ICD簡(jiǎn)單吧?況且實(shí)時(shí)/實(shí)地仿真,再好也沒有了?
評(píng)論