- 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とは [初心者G] 2006/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とは [nyannnyannko] 2006/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とは [nyannnyannko] 2006/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とは [HHHH] 2006/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とは [eoeo] 2006/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とは [HHHH] 2006/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を開いてアセンブラをすると有効になります。
長い間お世話になりました。