PIC初心者用掲示板

★★ 質問する前に下記をチェック ★★
(PICに関する疑問は必ず解決するはず)
←←←「電子工作の実験室」へ
←←←← 

■最新ツリー一覧

□このツリー付近のツリー一覧

★新規ツリー作成

◆ 9896. R=HEXとは [本当の初心者2006/03/13 18:27
    ┗ 9897. Re: R=HEXとは [初心者G2006/03/13 20:25
        ┗ 9903. Re: R=HEXとは [本当の初心者2006/03/14 09:05
        ┗ 9906. Re: R=HEXとは [本当の初心者2006/03/14 11:17
            ┗ 9907. Re: R=HEXとは [nyannnyannko2006/03/14 11:30
                ┗ 9932. Re: R=HEXとは [本当の初心者2006/03/15 17:16
                    ┗ 9933. Re: R=HEXとは [初心者2006/03/15 18:00
            ┗ 9934. 投稿者削除 [ ] 2006/03/16 09:32
            ┗ 9935. Re: R=HEXとは [2006/03/16 09:34


9896. R=HEXとは [本当の初心者2006/03/13 18:27
プログラムの最初の
LIST=16F873,R=HEX
という表記の R=HEX というのは指定のない数値は16進数であるという意味だと思っていたのです。
ところが、TRISB EQU H'86' と TRISB EQU 86 で
検証したところ、後者は作動しませんでした。
R=HEX とはどんな意味があるのでしょうか?

9897. Re: R=HEXとは [初心者G2006/03/13 20:25
http://www.picfun.com/asmframe.html
>プログラムの最初の
>LIST=16F873,R=HEX
>という表記の R=HEX というのは指定のない数値は16進数であるという意味だと思っていたのです。
>ところが、TRISB EQU H'86' と TRISB EQU 86 で
>検証したところ、後者は作動しませんでした。
>R=HEX とはどんな意味があるのでしょうか?

それはLISTオプションなのでリスト出力ファイル(.LST)の数値形式に反映します。

お望みの意味、PICソースプログラム(.ASM)の標準数値形式の指定なら、
独立して RADIX hexと記述すれば良いでしょう。
http://www.picfun.com/asm06.html

9903. Re: R=HEXとは [本当の初心者2006/03/14 09:05
回答ありがとうございます。
理解しました。

9906. Re: R=HEXとは [本当の初心者2006/03/14 11:17
>>プログラムの最初の
>>LIST=16F873,R=HEX
>>という表記の R=HEX というのは指定のない数値は16進数であるという意味だと思っていたのです。
>>ところが、TRISB EQU H'86' と TRISB EQU 86 で
>>検証したところ、後者は作動しませんでした。
>>R=HEX とはどんな意味があるのでしょうか?
>
>それはLISTオプションなのでリスト出力ファイル(.LST)の数値形式に反映します。
>
>お望みの意味、PICソースプログラム(.ASM)の標準数値形式の指定なら、
>独立して RADIX hexと記述すれば良いでしょう。
>http://www.picfun.com/asm06.html

LIST P=16F873
RADIX HEX
でやってみましたがだめでした。
RADIX R=HEX
でもだめです。
表記の仕方がまちがっているのでしょうか?

9907. Re: R=HEXとは [nyannnyannko2006/03/14 11:30

下記の DS33014J-page 107 を ご覧下さい。
http://ww1.microchip.com/downloads/en/devicedoc/33014j.pdf

9932. Re: R=HEXとは [本当の初心者2006/03/15 17:16
小文字でやったりもしましたが、ダメでした。

9933. Re: R=HEXとは [初心者2006/03/15 18:00
>小文字でやったりもしましたが、ダメでした。

単純な事のようだけど、何がどうダメなの?

9934. 投稿者削除 [ ] 2006/03/16 09:32

9935. Re: R=HEXとは [2006/03/16 09:34

>LIST P=16F873
>RADIX HEX
>でやってみましたがだめでした。

  radix  hex
でいいはずですが、そもそもMPLABのデフォルトはhexだと思います。
メニューのProject、Build Options...で、MPASM Assemblerタブ内のDefault Radixを確認してみてください。

9937. Re: R=HEXとは [nyannnyannko2006/03/16 11:38
DS33014J-page 107 を 実際にアセンブルした結果です。

使用環境
Windows XP HOME SP2
MPLAB IDE Ver 7.31
以上での実行結果は下記のようになります。
本当の初心者さん、あなたの環境ではどうなるんですか?

MPASM 5.02 RADIX_TEST.ASM 3-16-2006 11:12:04 PAGE 1
LOC OBJECT CODE  LINE SOURCE TEXT
VALUE

      00001  list  r=dec ;Set the radix as decimal.
      00002 #include    p16f877a.inc ;Include standard header file
      00001  LIST
      00002 ; P16F877A.INC Standard Header File, Version 1.00 Microchip Technology, Inc.
      00400  LIST
      00003           ;for the selected device.
0000 3050 00004  movlw 50H   ;50 is in hex
0001 3050 00005  movlw 0x50  ;Another way of declaring 50 hex
0002 3028 00006  movlw 50O   ;50 is in octal
0003 3032 00007  movlw 50   ;50 is not declared as hex or
      00008           ;octal or decimal. So by default
      00009           ;it is in decimal as default radix
      00010           ;is declared as decimal.
      00011  radix  oct  ;Use ‘radix’ to declare default
      00012           ;radix as octal.
0004 3050 00013  movlw  50H  ;50 is in hex.
0005 3050 00014  movlw  0x50 ;Another way of declaring 50 hex.
0006 3032 00015  movlw  .50  ;50 is in decimal.
0007 3028 00016  movlw  50   ;50 is not declared as hex or
      00017           ;octal or decimal. So by default
      00018           ;it is in octal as default radix
      00019           ;is declared as octal.
      00020  radix  hex  ;Now default radix is in hex.
0008 3032 00021  movlw  .50  ;50 is declared in decimal.
0009 3028 00022  movlw  50O  ;50 is declared in octal
000A 3050 00023  movlw  50   ;50 is not declared as hex or
      00024           ;octal or decimal. So by default
      00025           ;it is in hex as default radix
      00026           ;is declared as hex.
      00027  end

9938. Re: R=HEXとは [HHHH2006/03/16 16:59
>小文字でやったりもしましたが、ダメでした。

行頭から書いている、なんて事はないですよね?
タブ または スペース radix hex です。

9939. Re: R=HEXとは [本当の初心者2006/03/16 18:55
再確認のため検証プログラムをつくりました。
MPLABではなくMPASMを使用。(V.03.20.07)
MPASM Assemblerタブ内の RadixがDefaultであることを確認。
PORTBのビットをインクレメントしLEDで確認。
私のハードは教材なのでステップ動作が可能です。

LISTP=16F873
RADIX  HEX

STATUSEQU3
PGEQU5
PORTBEQU6
TRISBEQUH'86'

CLRFPORTB
BSFSTATUS,PG;BANK1
CLRFTRISB;ALL OUTPUT
BCFSTATUS,PG;BANK0

LOOPINCFPORTB,F
GOTOLOOP

END

これで動作することを確認した後
TRISBEQUH'86'

TRISBEQU86
に変更すると、動作しません。







































9940. Re: R=HEXとは [本当の初心者2006/03/16 19:03
コピペしたらタブスペースが詰まってしまいました。
どうやればよいのでしょうか?

9941. Re: R=HEXとは [eoeo2006/03/16 19:33
ご苦労様です。
無料のツールなのですからそこそこで妥協すべきなのでは・・・。
大方のユーザは、アセンブラが目的ではなく、あくまで手段なので、代替手段が見つかればそれで済ませてしまいます。

このトピで一番気になるのが「動作しない」との表現です。
リストを見てマシンコードの部分はどうなっていますか?
それを見ればアセンブラの結果は一目瞭然でしょう。
その為のリストなんですから・・・。
単に「動作しない」と言われると原因はいろいろ考えられるのでイライラしてするのです。
もうちょっとトラブルシューティングとしての切り分けを考えた書き方を望みます。

9943. Re: R=HEXとは [2006/03/16 20:21
>コピペしたらタブスペースが詰まってしまいました。
>どうやればよいのでしょうか?

タブやスペースは全角スペースに変換しないとだめみたいです。

9947. Re: R=HEXとは [  2006/03/17 09:07

>MPLABではなくMPASMを使用。(V.03.20.07)

5.01じゃなくって??

9948. Re: R=HEXとは [HHHH2006/03/17 09:07
>再確認のため検証プログラムをつくりました。
>MPLABではなくMPASMを使用。(V.03.20.07)

バージョンの違いが原因でしょうか?
ちなみに 現在の MPLAB IDE v7.31 に含まれる MPASM のバージョンは v5.02 です。

最新のバージョンをダウンロードして試される事をおすすめします。

9949. Re: R=HEXとは [  2006/03/17 10:47
>バージョンの違いが原因でしょうか?
>ちなみに 現在の MPLAB IDE v7.31 に含まれる MPASM のバージョンは v5.02 です。
>
>最新のバージョンをダウンロードして試される事をおすすめします。

v7.31は Interim Release(暫定版)では??

9951. Re: R=HEXとは [本当の初心者2006/03/17 16:17
LISTのオブジェクトコードを見たら10進数として認識されていました。
今年買ったばかりなのに、ずいぶん古いMPLABとMPASMがCDに入っていたようです。
バージョンアップしてトライしてみます。

9952. Re: R=HEXとは [本当の初心者2006/03/17 17:04
原因がわかりました。
MA社のコントロールパネルを通してアセンブルすると
RADIX HEX は無効になり、エクスプローラで直接MPASMを開いてアセンブラをすると有効になります。
長い間お世話になりました。