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のユーザーが少ない理由がわかってきたかも。
| 固定リンク


コメント
そうですね。カッコの片落ちとか、エラーになってくれれば良いのに、コードが生成されてしまっていて、悩んだことが多いです。ステップ数が大きいファイルなども要注意です。
自分の場合はポート制御はAPPデザイナーで名前を付けて使っています。例えば、GPIO.1 -> PowerOut1 のように名前をつけると、Cのソースコードで
PowerOut1 = 1;
といった感じで使えます。
投稿: ys | 2006年1月10日 (火) 18時21分
ys様、コメントありがとうございます。
ポートに名前を付けるのは、そういう使い方ができるんですね!! それなら便利だ!!
ありがとうございます。
投稿: hiro | 2006年7月24日 (月) 18時45分