|
我是一個(gè)初學(xué)者,和很多人一樣,一直在m.zg4o1577.cn論壇里尋找著對自己來說有價(jià)值的東西。學(xué)習(xí)proteus也有一段時(shí)間了。我想我的收獲很大。在此,我想把我學(xué)習(xí)的一些心得,包括在學(xué)習(xí)的過程中遇到的問題和大家一起來分享,希望我們大家可以在這個(gè)很好的平臺上一起學(xué)習(xí)進(jìn)步。
1.有一點(diǎn)很不明白 為什么 asm文件名如果是兩個(gè)單詞組成,比如說 External Interrupt .asm ,那這個(gè)文件在編譯的就會發(fā)生錯(cuò)誤,而當(dāng)把文件名改成由一個(gè)單詞組成時(shí),如External.asm ,那這個(gè)文件就沒有錯(cuò)誤。 但是 這個(gè) External Interrupt .asm 在我原先時(shí)是可以用的,好象移到這里就不行了 ?
最新發(fā)現(xiàn):好象還有是路徑的問題。
請問老師:是不是一模一樣的程序放在不同的地方去構(gòu)建,效果是不一樣的?(比如說原來這個(gè)程序在D盤中是對的,但把它放到E盤就有錯(cuò)了)為什么一模一樣的程序,原來是可以運(yùn)行的,但是后來就不行了?而且出現(xiàn)了很多錯(cuò)誤。 就比如說老師給我們的程序計(jì)數(shù)器實(shí)驗(yàn)(其源程序是Timer Application 和 Timer ,編譯Timer Application 時(shí)說什么 older 什么的,不明白怎么回事。在編譯Timer 時(shí),出現(xiàn)了很多錯(cuò)誤。 有待解決。
2. 首先,cjne P0,#0FFH,LOOP1 這個(gè)語句是非法的。P0處應(yīng)該用寄存器 a ,應(yīng)該改為兩個(gè)語句:mov a,#0EFh ;cjne a,#FFH,LOOP;這樣才是正確的。其次,什么時(shí)候該用a, 而什么時(shí)候該用ACC 都是有講究的 ,還需要進(jìn)一步完善這部分的區(qū)別。
3. 1仿真軟件的管腳(這里指單片機(jī),其他的心片還不清楚)默認(rèn)時(shí)是低電平。而且,管腳處的顏色也可以判斷:藍(lán)色的表示低電平,紅色的表示高電平。
4. 1.如何比較快的把一個(gè)現(xiàn)成的程序畫出它的流程圖,存在一定的問題,問:這是否有技巧?
2.在中斷中,是否可以又一些對主程序跳轉(zhuǎn)的語句,若有,則它的執(zhí)行過程是怎么樣的?
就比如說以下這個(gè)中斷子程序:
INTERRUPT:
push psw
cpl a
cjne a,#0ffh,led
led:{
大括號內(nèi)表示
sjmp loop1 ; loop1是主程序中的
}
sjmp loop ;這個(gè)loop是在主程序中
pop psw
redi
end
換句話說就是在執(zhí)行中斷的過程中是否可以跳到外面去執(zhí)行一個(gè)子程序,然后又跳回來?
5. 在myself3 這個(gè)實(shí)驗(yàn)的過程,可以發(fā)現(xiàn),我們可以在中斷中去執(zhí)行一些比較復(fù)雜的語句,比如各種循環(huán)語句等(能否在中斷中調(diào)用子程序本人還未試,需要用一個(gè)實(shí)驗(yàn)去驗(yàn)證才知道)。
6.在myself4這個(gè)實(shí)驗(yàn)中有一點(diǎn)小疑問????(已經(jīng)在程序中標(biāo)明),這個(gè)問題的存在,說明這個(gè)知識點(diǎn)還未搞透。
7.今天在上機(jī)時(shí)候發(fā)現(xiàn)一個(gè)很奇怪的問題 ,就是在 在“系統(tǒng)文件與源程序”這個(gè)文件夾中,好象對文件名的設(shè)定有一定的要求,比如 把文件名 “源程序2” 改成 “源程序(。。)”
在仿真軟件中去加載這個(gè)文件名下的源程序就會發(fā)生錯(cuò)誤。 而把帶括號的那部分去掉,例如改成“源程序2”或“源程序3”等等只要不帶括號的就沒有了錯(cuò)誤。
從而得出的結(jié)論就是:建立新的文件夾時(shí)文件名不可以帶有括號。 (但是不知道其產(chǎn)生這個(gè)問題的真正的原因,需要請教有關(guān)人士???????)
8. 今天上機(jī)后發(fā)現(xiàn)一個(gè)現(xiàn)象,就是 加載設(shè)計(jì)時(shí),系統(tǒng)默認(rèn)的路徑總是和 單片機(jī)仿真軟件bin里面的內(nèi)容的的存放的位置有關(guān),比如說當(dāng)你把那文件里的所有子文件放到一個(gè)新建的文件夾里時(shí),那你加載設(shè)計(jì)后它的默認(rèn)文件就是你剛剛建立的新文件夾的內(nèi)容。所以為了在加載時(shí)可以默認(rèn)的顯示你所要的文件夾,你就應(yīng)該把那些子文件放在你所要顯示的文件夾的外面。比如在我的這臺機(jī)子中,我想要它顯示的默認(rèn)的文件是 源程序1 源程序2 和 電路原理圖 ,那我就把那些子文件都放在了這三個(gè)文件夾的外面,又為了美觀,我把這些子文件隱 藏了。
9.昨天一直在搞那個(gè) keil 軟件 和 proteus 軟件 ,想把他們完美的結(jié)合起來(據(jù)說是在keil 里可以單步操作,而在proteus 里可以看到硬件的運(yùn)行情況)但是搞了很久,還是沒有搞定。
現(xiàn)在也不太清楚這樣的結(jié)合有多少大的意義(希望各位高手或者老師可以給我答案???)
同時(shí)也發(fā)現(xiàn),keil 軟件 在識別錯(cuò)誤的能力上好象不強(qiáng)(可能是我沒有發(fā)現(xiàn),需要請教他人),也就是當(dāng)載入的程序有錯(cuò)誤時(shí),發(fā)現(xiàn)不了是第幾行錯(cuò),修改起來比較的不方便。所以我現(xiàn)在的做法是還是到 proteus 這個(gè)軟件上先運(yùn)行程序,看哪幾行錯(cuò)誤(僅僅是語法錯(cuò)誤),再去修改好。然后再載到 keil 軟件中。
現(xiàn)在我的總結(jié)就是:好象 keil這個(gè)軟件也沒有多少大的實(shí)際意義(因?yàn)橛X的單步操作沒有多大用了,因?yàn)橐浅绦虮旧碛绣e(cuò)就不能在keil里運(yùn)行,換句話說,它根本就不能幫你發(fā)現(xiàn)錯(cuò)誤),好象除了 與proteus 來聯(lián)機(jī)單步操作看硬件的執(zhí)行比較有用外,沒有多少其他的用途了。
我想這個(gè)認(rèn)識一定我對這個(gè)軟件的認(rèn)識還不夠(對它的認(rèn)識,可能我根本遠(yuǎn)遠(yuǎn)不夠??)需要老師的開導(dǎo)。
10.今天搞定了聯(lián)調(diào),但是遠(yuǎn)程聯(lián)機(jī)還不會
11.(6月6號晚1點(diǎn)) 今天發(fā)現(xiàn)了一個(gè)經(jīng)驗(yàn):就是說 在建源程序的文件名的時(shí)候,如果是用中文,則不能超過4個(gè)字。否則會出現(xiàn)錯(cuò)誤。這個(gè)錯(cuò)誤找了很久都沒有發(fā)現(xiàn),也是無意中發(fā)現(xiàn)的。出現(xiàn)這個(gè)問題的原因目前也不清楚。例如:你建的文件名是“課程設(shè)計(jì)溫度控制”,則編譯時(shí)就會出錯(cuò)。而改為“溫度控制”或者少于4個(gè)字就不會錯(cuò)。
12.TLC549 搞定.原來是用串行口發(fā)送來做的,發(fā)現(xiàn)不行。后來網(wǎng)上找了一個(gè),它是嚴(yán)格的按照時(shí)序來做的,經(jīng)過驗(yàn)證,是可行的。
13. 今天發(fā)現(xiàn)一個(gè)問題,就是在PROTUES 里面,其所有的元器件必需用不同的名字命名。否則會出錯(cuò)。我就是把一個(gè)電路圖直接復(fù)制到另一個(gè)圖中,而且同樣的電路復(fù)制了多個(gè),結(jié)果運(yùn)行的時(shí)候?qū)е洛e(cuò)誤。開始沒有發(fā)現(xiàn)問題處在哪里,后來通過自己的改動發(fā)現(xiàn)問題出在了對相同元器件的命名上。這又是本人發(fā)現(xiàn)的一個(gè)細(xì)節(jié)的地方。
|
|