• ベストアンサー

PICアセンブラで悩んでます・・・。

PIC16F84を使ってアセンブラでプログラムしているのですが、どうしてもアセンブルが成功しません。 エラーを中心にプログラムを削りまくったところ、ADDWF命令とRETLW命令でコケているようです。(テーブル処理) 以下のプログラムで、ADDWFの位置で「ラベル(ADDWF)の位置が変です」というエラーが出てしまいます・・・。  LIST P=PIC16F84;  INCLUDE "P16f84.inc"  ORG 0 START  ADDWF PC,W  END どういうことなんでしょうか?(T-T (タブはスペースに置換済みです)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

PICは使ったことがないですが、これまでのアセンブリ言語の経験では、 たいていラベル名の後に : (コロン)が必要だったと思います。 START: のように付加する必要があるというのでもありませんか?

pythian
質問者

お礼

ありがとうございます。原因がわかりました。Webからコピーした部分だったので、 全角スペースが入っていました・・・。(\(T-T)/どかーん) なぜ違うエラーが出たのかわかりませんが、とにかくお騒がせして申し訳ありませんでした。

関連するQ&A

  • PICのPCL

    PICの機能でPCLの使い方で7セグの表示などに使われる (アセンブラ) ADDWF PCL,F RETLW B'1111000' RETLW B'0110101' RETLW B'1010010' ..... ... というのがありますがこれを ADDWF PCL,F GOTO AAA GOTO BBB GOTO CCC ....... .... という風な使い方はできるのでしょうか?またできても使わないほうがいいのでしょうか?   

  • PICのアセンブラ命令コード一覧

    PIC24FまたはdsPICのアセンブラ命令コード一覧を探しているのですが、 マイクロチップのHPからも探し方が悪いのか、当方は見つけることができませんでした。 何方か、PIC24FまたはdsPICのアセンブラ命令コード一覧が記載されているHPや情報をご存知ないでしょうか? アセンブラ記述で、コーディングしたいのですが、命令コードの意味が良く分かりません。 命令コードとその意味が記載されたものがほしいのです。 宜しくお願いします。

  • アセンブラで「0でないならスキップ」したい

    アセンブラで「0でないならスキップ」したい PIC18Fベースの開発で、アセンブラでプログラムをしています。 いま、遅延タイマーとして作った変数DELAY(初期値:0x0f)をタイマ割込みで減算しています。 DELAYが0x00になったとき、実行したい命令がありますが、どのようにプログラムすれば簡潔に記述できるでしょうか。 命令一覧表を眺めながら考えているのですが、できそうでできず困っています。

  • PIC 16F54 でTMR0割り込みを使いたい。

    最近PICによる電子工作を学び始めた初心者です。 値段が安いことにひかれて 16F54 を使っていろいろ学んでいこうと思ったのですが、TMR0割り込みを使ったプログラムを組もうとしたところ、行き詰まってしまいました。 他の 16F84A やその他のネットで紹介されている PIC の場合、INTCONレジスタのT0IEをセットしたり、T0IFをクリアにしたり、RETFIEで元の位置に戻ったりすると思うのですが、16F54にはINTCONレジスタも RETFIE命令もありません。 試しに、MPLABでINTCONレジスタの設定は無しにして、RETFIE命令は書き込んでアッセンブルしてみたらRETFIE命令に警告が出たものの、どうにか成功しました。 そこで試しにデバックしてみると、T0IEをセットしていないので当然なのですが、TMR0はカウントされるものの、割り込みは発生しませんでした。16F84Aや16F88等のPICも数百円で買えるので素直にこれらをチョイスすれば良いのでしょうが、百円を切る低コストの16F54に魅力を感じるし、何より疑問を解決しないまま、財力に任せて解決とすることに抵抗があります。 どなたかこんな私を助けてください。

  • PICのデバックに関して

    PICのデバックモードで悩んでいます。 デバック環境 ●MPLAB Ver.8.53 ●ICD2 及び PicKit3 で評価 ●CPU PIC18F452、PIC18F45k20、PIC16F688、PIC16F690 のそれぞれのCPUで評価 回路仕様 ●1個のLEDをCPUのポートに接続し、ON/OFFさせるテスト基板を用いて、  それそれのCPUで、テストしました(CPUだけ変えてその他の回路は変更無し)。 ●PIC16F、PIC18Fとも内部クロックを使用しています。 ●CPUの電源は、ICD2 または PicKit3から供給しています。 PIC18Fシリーズでは、C言語やアセンブラで書いたプログラムは、MPLABを用いて、実機デバッグテストが可能なのですが、 同じ内容のプログラム(CONFIG記述のみ変更)で、PIC16F688 またはPIC16F690 を実機デバッグテストすると、 (1)ICD2の場合:ICD0083: Debug: Unable to enter debug mode. Please double click this message for more information. (2)PicKit3の場合:pk3err0040: the target device is not ready for debugging. といったエラーが表示され、デバックモードに入ることが出来ません。 本エラーは、コンフィグの設定、配線の間違い、クロックが入っていない場合等に起こるエラーとありましたが、これではないと考えています。 <確かめたこと> (1)Programモードで、コンパイル、リンクは問題なく実行でき、CPUにプログラムを書き込むことも出来ます。  シュミレーションモードに入ることも出来ます。この点では16Fも18Fも問題がありません。  しかし、実機デバッグモードに入ろうとすると、16F(PIC16F688、PIC16F690)では、入ることができません。  実機デバッグモードでは、コンパイル、リンクはエラー無く実行可能です。「RUN」でスタートを掛けると上記(1)、(2)のエラーメッセージが表示されます。 (2)MPLABのCPUの選択は、各々間違ってはいません。 (3)配線も間違っていませんでした。回路自体にも問題があるとは思えません。 (4)PIC16Fでは、CコンパイラはCCS または Hi-TECHを使用しましたが、結果は同じでした。  CCSでは、 #INCLUDE <16F690.h> #DEVICE ICD=TRUE ;ICD2を使用する場合に、NOP命令を入れる様に記載がありましたが、だめです。  また、  アセンブラで、 #INCLUDE <p16F690.inc> __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF   ORG 0   nop      と入れましたが、だめでした。 コンパイラには無関係(Cやアセンプラの言語に関係がない)で起きているようです。 MPLABの設定で、デバイスの選択以外に、16Fと18Fで設定が異なる部分があるのでしょうか?

  • PICのアセンブラー言語の擬似命令

    後閑哲也先生の「電子工作のためのPIC18F本格活用ガイド」という本で、PICのアセンブラーの勉強をしている初心者です。 今、セグメントLEDを使ったダイナミック点灯の所をやっていますが、その中にある テーブル定義用の擬似命令 DT とか、それと一緒に使われるという RETLW の関係がよくわかりません。 DT の後にセグメントLEDのどのセグメントを点灯させるのかというパターンが、0から16進のFまで並んでいるのですが、ある瞬間に点灯したいパターンがどのようにして選択されるのでしょうか? またDTは「プログラムメモリー内にRETLW命令として1バイトごとの定数テーブルを作成する。」とあるのですが、この意味がよくわかりません。 どなたか、DTとRETLWの関係を詳しく解説していただけないでしょうか。 よろしくお願いいたします。

  • PICで温度計をつくりたいのですが。アセンブラを教えてください。

    初歩的な質問でもうしわけないのですが、 PIC16F819のPICを買いまして、CMOS温度センサーにオペアンプをかけ PA1につなぎ、A/D変換 PB0~7まで7セグを並列に3つつなぎ。 PA4,6,7から各ポートにトランジスタのBにいれ、Cに+5、Eに7セグのCOMをいれ 3桁の数字を表示させたいのです。 たしか、ダイナミックスキャンというものだと思います。 とりあえず、センサーから入ってきた数値をそのまま表示させたいのですが。 ダイナミックスキャンのアセンブラのプログラムがうまくいきません。 簡単に教えていただきたいのですが。 わかる方お願いします。 ハードは問題はないと思います。

  • アセンブラ naskのcall 文法

    アセンブラを最近はじめました。 naskで、call printというのをアセンブルするとエラーになります。ラベルは先に見せておかないといけないのでしょうか? call print fin: hlt jmp fin print: ... ret アセンブラの文法で良書が知りたいです。 アセンブラでも構文がそれぞれ違う。ということでしょうか?

  • PIC16F88の使い方?に関する質問(アセンブラ)

    現在PICの16F88に書きこむプログラムをアセンブラで書いてます。4番ピンのMCLRをRA5として使いたいのですが、MPLABのWATCHの機能を使って、ポートAの動きを見てみると、ポートAが出力になっているはずなのに、何をしてもポートAの0~4がHにならず、ポートAのRA5はBSF,BCFの命令が利きません。コンフィグの設定が怪しいと思うのですが、自分には理由が分からないので、誰か教えてください。お願いします。(下に書いたプログラムはテスト用に書いたプログラムなので特に目的はありません) ;外部発振,セラロック20MHz使用 LIST P=PIC16F88 INCLUDE P16F88.INC __CONFIG _CONFIG1, _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF BSF STATUS,RP0 MOVLW B'000000' MOVWF TRISA MOVLW B'00000000' MOVWF TRISB BCF STATUS,RP0 MAIN CLRF PORTA MOVLW B'11111111' MOVWF PORTA MOVWF PORTB BSF PORTA,0 BCF PORTA,0 BSF PORTA,1 BCF PORTA,1 BSF PORTA,2 BCF PORTA,2 BSF PORTA,3 BCF PORTA,3 BSF PORTA,4 BCF PORTA,4 BSF PORTA,5 BCF PORTA,5 GOTO MAIN END

  • PIC16F84と16F84Aの違い

    PICプログラムを勉強中の初歩者です。 ちょっと古い参考プログラムなどはPIC16F84を使ったものがあります、 所が現在市販のPICは16F84Aとなりますが完全な互換性があるのでしょうか。PIC16F873なども"A"が付いてます。プログラムを変更せずにそのままアッセンブルして書き込んで問題が起きないのでしょうか。 アッセンブルはMicrocip社のMPLAB IDE を使いAKIプログラムライターVer 4を使用してます。ご指導よろしくお願いします。

専門家に質問してみよう