• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::


Browsing this Thread:   1 Anonymous Users




« 1 (2) 3 »


Re: C18關於for迴圈的使用
#11
版主
版主


查看用戶資訊
PIC18F 系列的組語有 Standard Assembly ( 像 PIC18F452 早期的版本) Extand Instruction Assembly ( PIC18Fxxxx, xxJxx,xxKxx 等 4 個號碼者)。
具有Extand 指令集的元件在 C18 下編譯能大大的有效提升其編譯效率較傳統指令約可將低 30% 的 Code Size。但是 C18 並不全然支援此新指令集架構,因為:
C18 如果是 Student Edition , Lite Version 等免費的版本過了期限後就會退回使用標準的指令集,程式碼變大了,最佳化功能也只剩下Level 1 了,但是程式執行起來是正常的。
如果是正式版就全程使用 Extanded Instruction Sets 來做最佳的程式編譯。

發表於: 2009/12/15 9:23
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18關於for迴圈的使用
#10
資深會員
資深會員


查看用戶資訊
我也不是真的知道原因是什麼

只是知道 事出必有因 , 再加上碰到一隻死老鼠 ....

真正原因只待那些高手大大有空再來解說了 ......

發表於: 2009/12/15 1:11
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18關於for迴圈的使用
#9
高級會員
高級會員


查看用戶資訊
謝謝你的幫忙,因為不太懂他提示這個的用意,所以每次跳這個訊息方塊我都直接關掉,原來問題會反應在這個地方,下次我會注意的。

發表於: 2009/12/14 19:34
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18關於for迴圈的使用
#8
資深會員
資深會員


查看用戶資訊
參照:

wei0510 寫道:
居然出現更神奇的現象,i數超過8了居然沒跳出來,我越來越搞不懂要怎麼找出問題了。


注意一下 訊息方塊 ......
將 XINST DISABLE .....

Attach file:


Link only for registered users

jpg  (0.00 KB)


jpg  (0.00 KB)


發表於: 2009/12/14 19:18
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18關於for迴圈的使用
#7
高級會員
高級會員


查看用戶資訊
我又做了一些測試,首先先簡化程式內容,用Watch視窗來監測變數i跟Step Into的綠色小箭頭:

#include<p18f65j50.h>

void main(void)
{
//變數宣告.
unsigned int i;

//用for迴圈做8次.
for(i=0 ; i<8 ; i++)
{
Nop();
}

//做完讓程式停在這裡.
while(1);
}

i不會增加,而且綠色小箭頭完全沒指到Nop()這行就直接跳到while(1)了。

接著我改變了i的資料型態(unsigned char):

#include<p18f65j50.h>

void main(void)
{
//變數宣告.
unsigned char i;

//用for迴圈做8次.
for(i=0 ; i<8 ; i++)
{
Nop();
}

//做完讓程式停在這裡.
while(1);
}

很順利的跑完8次NOP才進入while(1)。

問題至此看起來似乎是解決了,可是我還是很想知道原因,不然擔心自己把錯誤的觀念永遠錯下去,請問有人看的出我的問題出在哪裡嗎?因為我看別人的code使用for迴圈都是直接使用int型態。

發表於: 2009/12/14 19:06
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18關於for迴圈的使用
#6
高級會員
高級會員


查看用戶資訊
附上檔案及剛剛所提到i超過8的圖片。

Attach file:


Link only for registered users

jpg  (0.00 KB)


發表於: 2009/12/14 17:29
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18關於for迴圈的使用
#5
版主
版主


查看用戶資訊
建議你將程式壓成 ZIP 後送出來,這樣很難猜你的迴圈出了什麼問題。

發表於: 2009/12/14 16:51
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18關於for迴圈的使用
#4
高級會員
高級會員


查看用戶資訊
我也是怎麼想都會執行到裡面所以才很疑惑,我的確認方式是開啟Debugger使用"MPLAB SIM",然後打開"Watch"與"Simulator
Logic Analyzer",觀察i與RB0~RB6,接著採用Step Into依步一步觀察程式的執行,結果在

for(i=0 ; i<8 ; i++)

停留幾次後就直接跳到

while(1){}

了,另外我依照版主所說的改成

while(1);

居然出現更神奇的現象,i數超過8了居然沒跳出來,我越來越搞不懂要怎麼找出問題了。

發表於: 2009/12/14 16:44
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18關於for迴圈的使用
#3
資深會員
資深會員


查看用戶資訊
>>大家好,下面是我用for迴圈想做一個簡單的測試,但是程式並不會執行到
>>PORTB = 0xff;
>>PORTB = 0x00;
>>這兩行就跳出了,我實在想不出原因,想請大家指點一下。

請問你怎麼確認....."程式並不會執到"for裏面的code....
怎麼看都會執行啊!!!

>> //用for迴圈做8次.
>> for(i=0 ; i<8 ; i++)

怎麼看都會做八次也!!!

發表於: 2009/12/14 16:33
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: C18關於for迴圈的使用
#2
版主
版主


查看用戶資訊
參照:
//做完讓程式停在這裡.
while(1){}
}


程式要停再這裡一般不是用 :

while(1);

for ( ; ; ) ;

發表於: 2009/12/14 16:02
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------