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


Browsing this Thread:   1 Anonymous Users






Re: HI-TECH PICC 陣列操作疑問
#5
新會員
新會員


查看用戶資訊
問題已解決,是COMPILER的問題。

後來把PICC 9.6改為PICC 8.05後,編出來的碼就正確了。

沒親眼見到,還真是難以相信呀。

特地上來分享一下這個經驗。

也特別感謝taiwanuser大大的幫忙嚕。

發表於: 2007/10/3 12:03
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: HI-TECH PICC 陣列操作疑問
#4
高級會員
高級會員


查看用戶資訊
" i " 宣告一下看看行不行..看起來是沒啥問題說..

小弟不才..請其他高手看看嘍

發表於: 2007/10/1 11:58
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: HI-TECH PICC 陣列操作疑問
#3
新會員
新會員


查看用戶資訊
Array[]宣告為unsigned char

完整code如下:

thanks.
-----------------------------------------------------------------------
#include <pic.h>

__CONFIG (INTRCRB4 & PROTECT & WDTDIS & MCLRDIS);

unsigned char i;
unsigned char j;
unsigned char Array[6];

//----------------------------------------
void InitMCU(void)
{
OSCCAL=0b0000000;
TRISB=0b011011;
PORTB=0;
TRISC=0b000000;
PORTC=0;
OPTION=0b10000111;
return;
}
//----------------------------------------
void main(void)
{
InitMCU();

for(i=0;i<=5;i++){
Array[i]=i;
}

while(1){
continue;
}
}

發表於: 2007/10/1 11:31
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: HI-TECH PICC 陣列操作疑問
#2
高級會員
高級會員


查看用戶資訊
array[] 宣告的型態?

發表於: 2007/10/1 10:55
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


HI-TECH PICC 陣列操作疑問
#1
新會員
新會員


查看用戶資訊
Dear All :
目前在使用PICC做陣列操作時,發現一個有疑問的現象如下:
compiler:HI-TECH PICC 9.60 Lite
Device:PIC16F505

先宣告一個Array[6]。

當後面我如此做時
for(i=0;i<=5;i++){
Array[i]=i;
}
結果Array[0]~Array[5]=0。(錯誤)
於是我把Array[i]=i;改為一個定值Array[i]=0xab;
結果Array[0]~Array[5]=0xab。(正確)

分析Disassembly Listing的結果發現。
只要我把Array[i]=i 等號後面為變數時(不管是i,j,k)則編出來的碼會多了一行CLRF FSR的動作,導致i要丟入INDF時,FSR所指位置已經被清除了。

---------------------------------------------------------------------
有疑問的部份:
C code:
for(i=0;i<=5;i++){
Array[i]=i;
}

Disassembly:
79: for(i=0;i<=5;i++){
1EF 064 CLRF 0x4
1F0 071 CLRF 0x11
1F1 C06 MOVLW 0x6
1F2 091 SUBWF 0x11, W
1F3 603 BTFSC 0x3, 0
1F4 BFF GOTO 0x1ff
1FD 2B1 INCF 0x11, F
1FE BF1 GOTO 0x1f1
80: Array[i]=i;
1F5 211 MOVF 0x11, W
1F6 038 MOVWF 0x18
1F7 C12 MOVLW 0x12
1F8 1D1 ADDWF 0x11, W
1F9 024 MOVWF 0x4
1FA 064 CLRF 0x4 <--- 就是這一行。
1FB 218 MOVF 0x18, W <--- FSR已被清除,故此兩行所寫入位置為錯的。
1FC 020 MOVWF 0
81: }

---------------------------------------------------------------------
改為常數則無此問題:
for(i=0;i<=5;i++){
Array[i]=0xab;
}

79: for(i=0;i<=5;i++){
1F1 064 CLRF 0x4
1F2 071 CLRF 0x11
1F3 C06 MOVLW 0x6
1F4 091 SUBWF 0x11, W
1F5 603 BTFSC 0x3, 0
1F6 BFF GOTO 0x1ff
1FC 064 CLRF 0x4
1FD 2B1 INCF 0x11, F
1FE BF3 GOTO 0x1f3
80: Array[i]=0xab;
1F7 C12 MOVLW 0x12
1F8 1D1 ADDWF 0x11, W
1F9 024 MOVWF 0x4 <--- 設定好FSR後
1FA CAB MOVLW 0xab <---緊接著0xab寫入INDF
1FB 020 MOVWF 0
81: }
---------------------------------------------------------------------
我在想Array[i]=i; 似乎只是基本的C語法。
這算是compiler的問題嗎?
或著有其他語法可以達成類似的動作?
想請教各位是否有遇過這種現象呢?
感謝各位撥時間看完落落長這篇。
Thanks.

發表於: 2007/10/1 10:48
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... ]

教育訓練中心

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