« debian アップグレード | トップページ | samba と netatalk »

2005年11月27日 (日)

Label not fond って、なに!?

あるプログラムを組んでコンパイルをしていた時、急に「Label not fond 」というエラーがでるようになった。

しかも、MAIN_pp.asm で出ている。

色々調べたところ、12F629,12F675で GPIO.B2 = 1; などと言う書き方をしたのがいけなかったらしい。(16F84などで PORTB.B2 = 1; と書いても同様のエラーになる)
user_pp.c までは展開されているが、user_pp.asmをみると、その行から先が展開されていない。

UserInitialise に書いた場合には、Label not found UserLoop と言われるからまだ良い方で、UserLoop 内に書いてしまうと、何のエラーメッセージも出ずに、平気な顔をして中途半端なコードを書き出すことになる。

GPIO |= (1<<2);
GPIO &= ~(1<<2);
と書くと、Label not found は出なくなった。
が、
movlw 4
iorwf H'05'
なんてコードを吐くので効率が悪い。

さらに調べると、16F系では
 PB.B2 = 1;
12F675では、
 PG.B2 = 1;
と書けば、
 bsf 5,2
というコードを吐いてくれるらしい。

でも、これって、バグではないのかな?

Wiz-Cのユーザーが少ない理由がわかってきたかも。

|

« debian アップグレード | トップページ | samba と netatalk »

コメント

そうですね。カッコの片落ちとか、エラーになってくれれば良いのに、コードが生成されてしまっていて、悩んだことが多いです。ステップ数が大きいファイルなども要注意です。

自分の場合はポート制御はAPPデザイナーで名前を付けて使っています。例えば、GPIO.1 -> PowerOut1 のように名前をつけると、Cのソースコードで 
PowerOut1 = 1;
といった感じで使えます。

投稿: ys | 2006年1月10日 (火) 18時21分

ys様、コメントありがとうございます。
ポートに名前を付けるのは、そういう使い方ができるんですね!! それなら便利だ!!
ありがとうございます。

投稿: hiro | 2006年7月24日 (月) 18時45分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/44005/7343212

この記事へのトラックバック一覧です: Label not fond って、なに!?:

« debian アップグレード | トップページ | samba と netatalk »