トップページ⇒tech
309コメント94KB

PICアセンブラ統一スレッド

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
PowerPCでもなく、Win32 Assemblerでもない。
むろんCASLでもありません。
世界で最も普及している制御用マイコン、PIC
あるいはZ80のアセンブラについて語りましょう。

関連スレ
電子工作を語るスレ2
http://hobby.2ch.net/test/read.cgi/hobby/1053518868/l50

関連URL
電子工作の実験室
http://www.picfun.com/
PICアセンブラ
http://www6.ocn.ne.jp/~sunnydog/
0002デフォルトの名無しさんNGNG
2
0003デフォルトの名無しさんNGNG
PICとZ80ってえらく違うと思うのだが。
0004デフォルトの名無しさんNGNG
減算したときのフラグ動作が嫌い。
だいっきらいだ
0005デフォルトの名無しさんNGNG
AVRの方が好きでつ。
0006デフォルトの名無しさんNGNG
値段もう少し安かったらなあ・・・仕事で使うのに
0007デフォルトの名無しさんNGNG
日本人ならH8やろ
0008デフォルトの名無しさんNGNG
●PIC・AVR 初心者のためのスレッド-2サイクル目●
http://science.2ch.net/test/read.cgi/kikai/1040610345/

関連で,こんなスレッドもありんすが。
0009デフォルトの名無しさんNGNG
スタック浅過ぎ
0010山崎 渉NGNG
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0011デフォルトの名無しさんNGNG
↑mailto:xxxli
0012デフォルトの名無しさんNGNG
PICをコンピュータだと思えばイロイロ頭にもくるだろう。
そこんところが判らん奴がPICを語るな
0013↑NGNG
コンピュータの意味もわからないやつ
0014デフォルトの名無しさんNGNG
敷いていえば、6800がコンピューターの最低ラインだな。
8080は出来そこないのコントローラー
0015デフォルトの名無しさんNGNG
Win32 Assemblerってなに?
0016デフォルトの名無しさんNGNG
ウエスト32インチの♀が 汗かいてダイエットしようって話さ
0017デフォルトの名無しさんNGNG
>>14
ぼうや、RISCって知ってる?
0018デフォルトの名無しさんNGNG
>>17
おまえ ROMP しってるか?
0019デフォルトの名無しさんNGNG
虎偽とインタフェイスどっち読んでます?
0020デフォルトの名無しさんNGNG
出座波だろ
0021デフォルトの名無しさんNGNG
  tronwaveだろ
0022デフォルトの名無しさんNGNG
マイコンの出来る範囲で仕事をするのがプロだ(アマでもいいんだが)。
ガタガタ言わずに、PICを極めろ。
0023デフォルトの名無しさんNGNG
なんにせよPICのプログラムをCで書くような奴は邪道もいいところだ。
PICはアセンブラで使ってこそだ。
0024デフォルトの名無しさんNGNG
■独身貴族■
http://www.rantyan.net/akira/linkvp.html
0025デフォルトの名無しさんNGNG
>>18
みっともないな
0026デフォルトの名無しさんNGNG
人気サイト
http://pocket.muvc.net/
0027デフォルトの名無しさんNGNG
>25
しらないからって話をそらそうという先方か?
0028デフォルトの名無しさんNGNG
この娘完全に騙されてますね。撮影者は業界人を装ってます。
そんな男に生理中にもかかわらずぶち込まれちゃいます。
カワイイ顔して大きなオッパイしてやるときはやります。
アップが多いので血のついたチンポの出し入れがモロ見えです。
素人援交女がいっぱい!!
無料ムービーを観てちょ。
http://www.geisyagirl.com/
0029デフォルトの名無しさんNGNG
スタックのないマシンではC言語はどうやって使うんですか?
auto変数の実装方法とういか。
0030デフォルトの名無しさんNGNG
>>27
墓穴を掘ったな
話をそらしてるのはオマエ
0031デフォルトの名無しさんNGNG
ROMPのどこが話しをそらしているんだ?
0032デフォルトの名無しさんNGNG
ROMPの話ししたい人は、スレ立てれば?
ここはPICマイコンのアセンブラスレだからさ
0033デフォルトの名無しさんNGNG
17 出て来い!
32が非難しているぞ
0034デフォルトの名無しさんNGNG
>>33
非難してるんじゃなくて避難しろって言ってるのでは?
0035デフォルトの名無しさんNGNG
そもそもPICをプログラミングの寒天から議論しようって趣旨に無理がある。
PICのライバルはCPLDであって他社ワンチップマイコンではないわけだよ。
0036↑NGNG
議論の否定
0037デフォルトの名無しさんNGNG
PICなんていくらでも情報が転がってるのでAVRの話しましょう
0038デフォルトの名無しさんNGNG
AVRなんて...なんでもっと売れないんだろと思うよ。
漏れはPICで十分だけどな。

0039_NGNG
http://homepage.mac.com/yamazaki8
0040デフォルトの名無しさんNGNG
AVRは良いね
リニアなアドレス
+5V単一電源で書きこめる
長い目で見れば、PICを追い越すだろう、アマチュアレベルでは
0041デフォルトの名無しさんNGNG
いや、だから PICはコンピューターではないから AVRとはもともと喧嘩にならないんだってば
0042↑NGNG
コンピューターって、なあに?
0043デフォルトの名無しさんNGNG
>>41は、エロゲが出来ないとコンピュータではないデブヲタ
0044デフォルトの名無しさんNGNG
PICをコンピューターと思って使っている奴はPICを活かしているとはいえない。
PICをC言語で使うような奴はAVRやH8を使うべきだ。
0045デフォルトの名無しさんNGNG
44>>41>>
同意 「PIC」のCはComputerじゃない。Controllerだ。
0046デフォルトの名無しさんNGNG
まずコンピュータの定義を述べろ
その上でPICがコンピュータでないことを示せ
0047デフォルトの名無しさんNGNG
衝撃の4P作品。しかも3人とも処女喪失の瞬間なのだ。
あっけらかんとした彼女達にはビックリ。かなりマニアックな作品だ。
出血こそ確認できませんでしたが痛い、
と言っていた女が次第に感じていくプロセスがかなり興奮しました。
この作品には続編があります。またのお楽しみということにしておきましょう。
素人の援交のみ!無料ムービーをどうぞ。
http://members.j-girlmovie.com/main.html
0048デフォルトの名無しさんNGNG
>>46
だから、エロゲ出来るのがコンピュータ
出来ないのはコントローラだって
0049デフォルトの名無しさんNGNG
>>44
活かそうが活かすまいが、仕様を満たしてよりコストの低い物が
出来れば問題ないはずだが
0050デフォルトの名無しさんNGNG
秋月PAとMPLABのアセンブルソースのコンバータって在りませんか?
0051デフォルトの名無しさんNGNG
for(i=0; i<100; i++)
 gikoneko[X] = gikoneko[X] | gikoneko[i];

これをアセンブラで書くとどうなりまつか?
0052デフォルトの名無しさんNGNG
FED-C 7.000
;~ Line : 00010 gikoneko[x] = gikoneko[x] | gikoneko[i];
MOVF (LocOpt+1),w
movwf ACC
clrf ACC+1
movlw 1
call GetSPO2
call AddD
call LoadPACCA
call PushA
MOVF (LocOpt+2),w
movwf ACC
clrf ACC+1
movlw 2
call GetSPO2
call AddD
call LoadPACCA
call Pop2A
iorwf ACC,w
call Pushn
MOVF (LocOpt+2),w
movwf ACC
clrf ACC+1
movlw 2
call GetSPO2
call AddD
call Pop2A
MOVF ACC,w
movwf FSR
MOVF ACC2,w
movwf 0
0053デフォルトの名無しさんNGNG
>>51
あちこちのスレにコピペしてますな。他人の善意を食い物にして、楽しいかい?
0054デフォルトの名無しさんNGNG
>>51
煽り厨房は気にするな
0055デフォルトの名無しさんNGNG
>>51
他のスレにも、同じ質問を書いているのはなぜ?

C言語なら俺に聞け! Part 63
http://pc2.2ch.net/test/read.cgi/tech/1060085935/891
0056デフォルトの名無しさんNGNG
先に、C言語のスレッドに書き込んでいて、コンパイラやCPUに関する記述は
一切なかったということは、PICに関する固有の質問ではない。と、いうこと
なんだろうなぁ・・・ 向こうのスレでも書き逃げみたいだし。


早く夏休みは終わって欲しい。
0057デフォルトの名無しさんNGNG
マ板でも見たぞ。
0058デフォルトの名無しさんNGNG
>活かそうが活かすまいが、仕様を満たしてよりコストの低い物が
出来れば問題ないはずだが

この考えが今の駄目社会の初潮だな。

私設保育園のガキの輸送をするのに、アメ車が安かったかたといって採用するような事が実現してしまう考え方だよ。
0059デフォルトの名無しさんNGNG
要求仕様さえ満たせばOKというのなら、人間が設計やる必要ないんだよな。
要求仕様を書いてる奴が、現実をロクにしらない思考停止者である事でもある死な。
要求仕様から、元の需要、想定市場を見極め、要求仕様のバグを対処したシステムとすることが肝要だ。(当然、最初の納品にはバグ対処は入れない)
0060デフォルトの名無しさんNGNG
開発環境およびテスト環境がWIN2000サーバで
市販のAPIを呼び出してるのですがそのAPIのごく一部のメソッドがうまく呼び出せないため
VBならそのAPI対応しているとマニュアルに書いてあったため、VB6のあくてぃぶXDLLでDLLを作成したところ開発環境でうまく動いてテスト環境では上手くうごきません
DLLって作成したコンパイル環境とかによって動く動かないあるんですか?
0061デフォルトの名無しさんNGNG
ちがうすれにかきこんでしまいますた
すいませんさくじょしてくらさい
0062デフォルトの名無しさんNGNG
>>59
そうは逝っても機械は勝手に設計してくんねんだもん。
0063デフォルトの名無しさんNGNG
設計してくんねん
ではないだろ

設計くん を使えよ
0064デフォルトの名無しさんNGNG
アセンブラじゃソフトウェアは作れない。
よっと、ム板はすれ違いだと思う。
0065↑NGNG
じゃ、あげるんじゃねーよ
0066デフォルトの名無しさんNGNG
>アセンブラじゃソフトウェアは作れない。

バカ発見!

ソフトウエアを作るのに言語は関係ない。プログラミング言語は手段に過ぎない。
スイッチバチバチだってソフトは作れる。
0067デフォルトの名無しさんNGNG
スイッチバチバチはハードだろ
0068デフォルトの名無しさんNGNG
>>58
58がオナニーするのは勝手だけどね
「手段」と「目的」の区別がついてない人は困るなあ
0069デフォルトの名無しさんNGNG
>>66は老人
>>67は若者

ちうかスイッチばちばちって懐かしいな(´Д`;)
0070デフォルトの名無しさんNGNG

    荒 ら し は 放 置 

      の 方 向 で
0071デフォルトの名無しさんNGNG
キーボードだってスイッチ並べてるだけじゃねーか。
などと屁理屈を言ってみる。
0072デフォルトの名無しさんNGNG
IPLのカード打ちやってた香具師っているか?
0073デフォルトの名無しさんNGNG
>>69
IMSAI8080か?
0074デフォルトの名無しさんNGNG
結局のところ、Z80のアセンブラについてはどこのスレ及び
どこのサイトに行けばいいのですか?
0075デフォルトの名無しさんNGNG
>>74
アセンブラスレがあったんだけどね。
この板でスレたててみたらどう?
0076デフォルトの名無しさんNGNG
>>74 スレ立てるなよ。
http://pc2.2ch.net/test/read.cgi/tech/1060928704/l50
007774NGNG
レスサンクスです。

でも俺はまだ基本的なこともできないヘタレなので
さすがにスレを立ててまでは、といった具合です。

とりあえず気合で頑張ってきます
0078デフォルトの名無しさんNGNG
気合でスレ立てろ!
0079デフォルトの名無しさんNGNG
数秒以内に入力ポートに任意の入力がないと(タイムオーバー)
メインルーチンに戻ってしまうのはどうするの

0080デフォルトの名無しさんNGNG
>>79
A)プログラミングテクニックを聞いてるの? 
B)それともそういう現象が起きて困ってる?

A) メインでメモリに書き込み
  タイマー割り込み内で メモリを0でなければDEC
  サブルーチンでは0になっていればreturn
   スタックポインタを書き換えられるなら、割り込み内でDecして0になったら
   スタックポインタを巻き戻してしまうテクニックが使えるんだけどね

B) たいぶんバグか、でなければWDTが働いてるんじゃないの?
008179 フォルトの名無しさんNGNG
>>80
A)です
DTMFの遠隔操作スイッチをやろうと思って
いたずら防止にコマンド入力に時間制限を
したかったのです
例 D→2→1 (これを2秒以内に打たないとタイムオーバーでMainに
D=スタートコマンド
2=スイッチ番号1〜8
1=ON=1 or off=0 コマンド

なるほど
割り込みして飛んだルーチンは判定だけでいいのか 
84FのPICはスタックポインタ変えられないので
前者で挑戦してみます

ありがとう

008279 フォルトの名無しさん NGNG
割り込みルーチンは必ず
returnで抜け出さないといけないのかな?
goto mainなんかで抜け出すのは
NGなんでしょうか

008379 フォルトの名無しさんNGNG
間違い
jp mainで割り込みルーチンから抜け出すのはOK?
0084デフォルトの名無しさんNGNG
>>79
ステートマシンというものをお前はなんだと考えているのだ?

PICでネスティングはするなつうか、できないつうかやってはいかというか。
リカー渋とか、歳入とか言い出すような算符が必要なテーマにPICは全く不向きだぞ
0085デフォルトの名無しさんNGNG
>>82
抜けるのはOKだけど、スタックポインタをリセットする方法がないCPUでは
どんどんスタックポインタが進んでしまう。
サーキュラバッファになっているので問題はないが、
スタックアベリラブルビットを使ってスタックが溢れたかどうかを
チェックする事が出来なくなってしまう。

デバッグが困難になるバグを入れ易くなるから止めた方がいいよ。
008679 フォルトの名無しさん NGNG
>>84
>>85

ありがと
このままだとゴミ箱行きなような感じがするので
タイマー割り込みはあきらめます
遅延プログラムにキー入力監視を入れて
やってみます

ていうか 勉強やり直し(´・ω・`)ショボーン
0087デフォルトの名無しさんNGNG
>>86
タイマ割り込みの回数数えて、入力待ちで割り込み回数をチェックして規定値を越えたらアウト。
でいいんでないかい?

割り込みで色々こなそうとするから破綻するでよ。
0088初心者NGNG
始めまして。PIC16F877-P5で初めてアセンブラの開発に携わっている者です。
大変初歩的な質問で申し訳ないのですが、アセンブラで、変数のワード定義するには、
どのように記述すればよいのでしょうか?参考になるサイトなどございましたら、
教えていただきたいと思います。
宜しくお願い致します。
0089デフォルトの名無しさんNGNG
>>88 アセンブラを作ってるの?
それともアセンブラで作ってるの?
0090初心者NGNG
すみません。アセンブラでリモコンを作成しています。
宜しくお願い致します。
0091デフォルトの名無しさんNGNG
PIC
Programable Interrupt Controller
ピックと呼んでたよ。
0092デフォルトの名無しさんNGNG
>87
だから、カウンタ廻しといて、その値を読めばいいだろが。
割り込みなんか使うなよ。PICで。
PICで割り込みとか使うシーンはスタンバイから起きるときだけだよ。
0093↑NGNG
んなわけねーだろ
0094デフォルトの名無しさんNGNG
>88
 変数って言っても、PICだとファイルレジスタを使う訳だから、
ファイルレジスタ上に 上位バイト、下位バイト、
それぞれを定義して 扱うしかないと思うけど。。。
0095デフォルトの名無しさんNGNG
まさかと思うが、その定義の方法が判らないかもしれない。 

   orgで先頭アドレス定義して
 ラベル res 1 で変数を定義って・・・・サンプルコードの一つでも見ればわかる筈だから違うか
0096初心者NGNG
どうもありがとうございました。
やはり、そうやって使用するしかないんですね。

実は、上司がDWとかで定義可能みたいなことを
教えてくれたので、できるものなのかと・・・。
読む時の命令も違うとか・・・。
まあ、解決しましたので、いいです。
ありがとうございました。
0097デフォルトの名無しさんNGNG
>>96
マクロアセンブラなら、そういう機能を自分で追加すればいいんですよ。
0098デフォルトの名無しさんNGNG
MPASM Directive Language Summary 見なおしたよ。

DW:Declare Data of One Word
RES:Reserve Memory

できるんだね…知らなかったYo
0099デフォルトの名無しさんNGNG
DW は 変数を定義するものじゃないだろと思うが?
0100デフォルトの名無しさんNGNG
ごめん、質問者はもうイイと言う話だが、調べてて俺がわからんくなったので
誰か教えてくだされ。

 ご存知の通り、PICはハーバードアーキテクチャで、
命令領域とメモリ領域が独立した空間に存在して、
バスも独立している訳ですが、くだんのDWってのは、
命令領域に定数宣言する命令らしいですねぇ…

 で、何に使うの>これ(DW)
ROMを覗くときのコメントって事でええの?
それともウマイ使い方が他にあるのですか?
0101デフォルトの名無しさんNGNG
TLRD /TABLRD とかで使えるでしょ?
0102100NGNG
≫101 どうもです。
そーか、上位機種には16bit命令体系と言うのもあるんですね…
14bitまでのしか使った事なかったので読み飛ばしてました(w

ありがとうございました。
0103デフォルトの名無しさんNGNG
茨城に出荷の肉牛、BSE感染を確認
http://headlines.yahoo.co.jp/hl?a=20031006-00000012-yom-soci
茨城県内の食肉処理場に持ち込まれた牛1頭(1歳11か月、ホルスタイン種)がBSEに感染していたことが確認されたと発表した。
外国のBSE検査は、生後24ヶ月以上・・・ってことは、輸入牛肉は・・・
0104あいNGNG
出会い系って怖かったんだけど・・・
使ったらはまっちゃった(笑)
一緒にはまってみない?(笑)
http://navi-on.jp/0.php?p=20
0105デフォルトの名無しさんNGNG
PICぐらいはアセンブラで書いてくれや・・
H8以上は許してやらぁ
0106デフォルトの名無しさんNGNG
>>105
AVRも時と場合によっては許してホスィ
0107デフォルトの名無しさんNGNG
PIC使ってさ、投げ返されたら爆発しない手榴弾とかで大儲けできないかな。
0108デフォルトの名無しさんNGNG
>>105
 別にいいと思うけどね。 ただ わざわざC使う人は、仕事が速いのかと思ったら遅い人が多いね。

>>107
よく知らないで言うんだけど、手榴弾って原価廉そうじゃない。 売れるかな?
それに、もし電波か磁気信号かで投げ手を識別する方法だと、相手に利用されちゃうでしょう

というのをふまえて頑張ってみたら? 自分なら兵器に関わるくらいなら会社辞めるけどね。
0109フォルトの名無しさんNGNG
ところで
PIC12F629の日本語データ―シートって無いのですか??
0110↑NGNG
12CE67Xの日本語データシートがほとんど一緒
0111フォルトの名無しさんNGNG
ありがと
0112デフォルトの名無しさんNGNG
>>108
会社じゃなくて趣味で作るんじゃないの?
0113デフォルトの名無しさんNGNG
むしろ、会社をクビになったから作ろうとしているに一票
0114デフォルトの名無しさんNGNG
秋月で16F819売るようになったんだね
350円
0115デフォルトの名無しさんNGNG
保守
0116デフォルトの名無しさんNGNG
ワンチップマイクロコンピュータでないの。
AVRはサイクルが一定じゃないからヤダ。

GOTO $+1
が個人的には好きですが
0117デフォルトの名無しさんNGNG
>>86
WDTを設定して、入力毎に再設定。
こうしとけば、一定時間内に入力がない=再設定もされない
から勝手にリセットされる。

いや、単なる思いつきなんだけど・・・・・・
011879 フォルトの名無しさんNGNG
なるほど WDTを使う
単純にリセットされると
スイッチの情報もCLRされるから
スイッチのデーターはEEPROMに書き込んで
org 0 すぐにそのEEPROMを読みportに出力
すれば見た目上 リセットしていると見えませんね
ちょっと試してみます
0119デフォルトの名無しさんNGNG
秋月以外でも買えるんだね。ttp://www.ipishop.com/
0120デフォルトの名無しさんNGNG
すんません、質問させてください。

 BSF F,b ってありますが、Fは0<=F<=127ですよね?
書き換え対象ファイルは、STATUSの RP0 RP1 で指定しますよね?

FSRは8bitある訳ですが、BSF INDR,b で 書いた時は、
RP0と FSRの最上位ビットは、どちらが使われるんでしょうか?
0121デフォルトの名無しさんNGNG
もうひとつ、質問させてください。

皆さんは、割り込み部と 通常部、スタックの振り分けはどの程度の配分になさっていますか?
割り込み内部では3、通常部では4ぐらいですか? それとも割り込み内部ではサブルーチンは使いませんか?
0122デフォルトの名無しさんNGNG
>>120
素人の俺様が答えてやる。間違えてても知らんぞ
>>BSF F,b ってありますが、Fは0<=F<=127ですよね?
よくわからんが、8ビットじゃないのか、でも、オペコードどだと7ビット
君の使用するのはそんなにメモリが多いのかね?
>>書き換え対象ファイルは、STATUSの RP0 RP1 で指定しますよね?
メモリのことだな。つーかバンク0にすべて配置されているのしか使ったこと無い。
たぶんバンク1の状態でもバンク0も両方かわる気がする。
>>FSRは8bitある訳ですが、BSF INDR,b で 書いた時は、
>>RP0と FSRの最上位ビットは、どちらが使われるんでしょうか?
これもバンク関係なく指しているメモリの内容が変わる。
つーか2行目の意味がわからん。FSRはポインタでINDRは今指している
メモリのことだからBSF INDR,bはFSR番目のメモリのb番目をセットすという
いみだろ。

>>121
それはプログラムによりけりだろ。小規模しか使ってない俺に言わせると
手続き型のプログラムっぽいから増えるだろ。深い所では割り込みかけなきゃ良いじゃん
割込み部では1、割込み自体で1だから計算間違えるなよ。

チップごとに微妙に違うのでデータシート嫁!



0123あれ?NGNG
Error[108] : Illegal character (,)
 ADDWF  PCL,F ;←どこがおかしい??
 RETLW  05H
 RETLW  0AH
0124デフォルトの名無しさんNGNG
>>123
ADDWF PCL,F
RETLW05H
RETLW0AH

普通に通りますが
一度入れなおしてみたら
0125123NGNG
>>124
一から書き写しましたらOKです
HTMLからのパクリソースずぼらはダメですね
ありがとうさんです。
0126120NGNG
>121 レスども。

>よくわからんが、8ビットじゃないのか
BSF Bit Set f
-------------
Syntax [label]BSF f,b
Operands:
         0≦f≦127
         0≦b≦7
Operation:
         1→(f<b>)
Status Affected:
         None
Description:
         Bit 'b' in register'f' is set.

>君の使用するのはそんなにメモリが多いのかね?
→PIC16F877とかも使う事もあるずら。 シャドウの効かない部分も出てくるっす。
>たぶんバンク1の状態でもバンク0も両方かわる気がする。
コンパクトな石だと、シャドウが活きているのもありますね。

>割込み部では1、割込み自体で1だから計算間違えるなよ。
そうですた。忘れてたYo どもども。
0127120NGNG
ご助言に従ってもう一度マニュアルを読みますた。
FSRを使った間接アドレス指定時は、バンク切り替えはIRPを使うんですね。
RP1とRP0を使うのは直接アドレス指定時だけなんですね、失礼しますた…

ではでは。
0128デフォルトの名無しさんNGNG
だからCコンパイラ使えって
0129デフォルトの名無しさんNGNG
ぜひアセンブラでお願いします。
アーキテクチャを学んだらC。
わすれてアセンブラ。
0130あらNGNG
12C509Aでコンフィグの中のプロテクトCPをONにして
アセンブルしたのをライターで書き込むとエラー
ほんでもって動作確認すると不動です。

で、コンフィグでCPについて何も記述しないで
アセンブルしそれをライターで書き込むときに
ライターの画面でCPを有効にして書き込むと
エラー見たいなのが出るのですが動作は一応OKです

509でプロテクトしたい場合、後者のやり方が正解なのかな?
0131OKNGNG
ライターのバージョンUPしましたらOKになりました
0132デフォルトの名無しさんNGNG
めでたい

つーか、おめでたいヤツだ
0133デフォルトの名無しさんNGNG
PIC12F629/675はRAMが64byteしかありませんが、
この場合、bank0/bank1の同じアドレスなら(たとえば20H とA0Hは) どちらでも同じRAMですか?

そうでないと、割込みを使う時 Wの保存先のメモリに困ると思うので、たぶんそうだろうと思うのですが
0134デフォルトの名無しさんNGNG
>>133
まずwww.microchip.com/1010/index.htmいってデータシートを見つける!

そうすると
英語だけどメモリマップをみると同じと書いてあるね。
バンク1でもアクセス20h−5Fhって書いてあるから。
特殊レジスタの周りにある空白のRAMって使えないんだね初めて知ったよ。

さて俺は本当のことを言ってるでしょうか?自分で確かめてね。
0135デフォルトの名無しさんNGNG
MPASM PIC16F 系で テーブルを読むためにテーブルが256ワード境界を
またいでないかチェックさせようと
tblRead
   addwf PCL,1 ;
   RETLW xx
...
tblRead_end
   if (tblRead ^ tblRead_end) & (-256)
   error "table page "
   endif

こんな感じのチェックを入れてるのですが、
こういうのは良く使うと思うので、もっと便利機能があってよいように思います。

どうなんでしょ?
0136デフォルトの名無しさんNGNG
イイヨイイヨ
0137デフォルトの名無しさんNGNG
海外掲示板用オフラインリーダーを作るスレ
http://pc2.2ch.net/test/read.cgi/tech/1072883528/

海外でよく使われていうる掲示板スクリプト
専用のオフラインリーダー作って下さい。

必要な条件はID、PASSを管理できること、
OpenJaneみたいな三面型の見た目。
簡単にローカライズできるように言語ファイルを採用
0138デフォルトの名無しさんNGNG
MAX232とRS232Cってどういう風につなげばいいんですか?
後閑氏の本(PIC活用ガイドブック P196)だと
MAX-RS:14-2 , 7-8 , 13-7 , 8-3
てなっているんですが
(自分は9ピンー9ピンのストレートケーブルを使っているためこんな感じ)
アクノリッチというソフトで通信を確かめてみても
CTSという左下のランプしかつかないのです。
秋月のプログラマキットだと電源を入れないでもCTSとDSRが点灯します
つなぎ方これであっているんでしょうか?
それかPIC16F877用のプログラムでPIC16f873を動かしているのがげいいんなんでしょうか?
いろんなページ見てもT2inやR1outをつないでいたりいなかったりと
どこのつなぎかたをすればいいのかわかりません。
0139デフォルトの名無しさんNGNG
シリアルはRXD/TXDさえつながっていれば、後は目的に応じてじゃないのかな

CTS/DSRが必要ならつなぐし、でも、自作ソフト同士ならあんまり必要ないよね
0140デフォルトの名無しさんNGNG
プレイステーションのMODチップの話はここでしていいですか?
0141デフォルトの名無しさんNGNG
MPASM

   banksel  OSCCAL
   movwf  OSCCAL

みたいにバンク指定しても、このメッセージ
Message[302] xx.ASM xx : Register in operand not in bank 0. Ensure that bank bits are correct.
が出るって事は、bank を指定出来る疑似命令もあるという事ですかね?

0142141NGNG
結局 こんな感じの自作マクロで対応する事にしました。 でも、リストが x=OFFでもx=OFFでも辛い

NowBank set  0
SetBank  macro    lab
    if ((lab ^ NowBank) & 0x80) !=0
NowBank set   NowBank   ^ 0x80
     if (NowBank    & 0x80)==0
      bcf   STATUS,RP0   ;bank 0/2
     else
      bsf   STATUS,RP0   ;bank 1/3
     endif
    endif
    if ((lab ^ NowBank) & 0x100) !=0
NowBank set   NowBank ^   0x100
     if (NowBank    & 0x100)==0
      bcf   STATUS,RP1   ;bank 0/1
     else
      bsf   STATUS,RP1   ;bank 2/3
     endif
    endif
    endm
I1   macro  inst,lab
    SetBank lab
    inst  (lab &0x7F)
    endm
I2   macro  inst,lab,ext
    SetBank lab
    inst  (lab &0x7F),ext
    endm
0143デフォルトの名無しさんNGNG
PIC は素のアセンブラで書くと、ほんとバグが入りやすい
w/fのミス
bankのミス

といって、マクロ使いまくると、
他人が読めなくなるのはまあ仕方ないとして、
リストが読み辛いのも困りもの

結局アセンブラ自作するしかないかも
0144デフォルトの名無しさんNGNG
>>143
机上コーディングをちゃんとすれば問題ない。
「バグが入りやすい」んじゃなくて、オマエがヘボ(ry
0145143NGNG
たしかに、自分がヘボなのはその通りだけどさ。
机上で自分でやるより、自動化するほうが何倍も効率はあがるでしょ?

4bitマイコンを主に使ってきたけど、それと比べても

 1、w/f方式は w用とf用に命令を別ければ大分緩和するのに
 2、bank(128byte)はアセンブラでアドレスを解釈して自動的に挿入するべき
 3、テーブル境界(256word)の警告は自動に

程度の事は大抵4bitのアセンブラでも標準だしね。

まあ、もう少し使う頻度が増えたらアセンブラ作るつもりさ。

0146デフォルトの名無しさんNGNG
>>145
必死だな がんばれよ
0147143NGNG
おう。 あと30分ほど頑張ってから寝るわ
0148デフォルトの名無しさんNGNG
>>145
それはアセンブラと言うよりコンパイラでは?
0149デフォルトの名無しさんNGNG
↑ ご明察
0150デフォルトの名無しさんNGNG
命令を1対1に解釈するんだからアセンブラだろう。
条件分岐がshortしかない命令セットで long条件分岐を出来るアセンブラとか
条件分岐がskipしかない命令セットで 条件分岐を再現するアセンブラとか
普通に目にすると思うが?
0151デフォルトの名無しさんNGNG
>>150
命令が1対1なら>>145の言い方はおかしくないか?(同一人物が言ってるかはわからんが。
1対1の言語って(今時あんまり聞かないが)いわゆるマシン語(機械語)じゃないかな。

もしPIC用語でアセンブラって言い方がまかり通ってるんだったら謝る。
0152デフォルトの名無しさんNGNG
?

ようするにバンク切り替えを >>142のようなマクロで書かなくても自動でやってくれるアセンブラを作ろうって事でしょ?

returnや分岐先ラベルが無ければ前回配置した命令に応じてバンク切り替えするだけだから
コンパイラというには恥ずかしい機能だと思うが?
0153デフォルトの名無しさんNGNG
構造化命令が使えるアセンブラなんてのもあるからねえ。
組込みマクロ命令のあるアセンブラでいいと思う。
0154デフォルトの名無しさんNGNG
MPASM でもアセンブル出来ないと、デバッグが不便だろう。
自動挿入より警告に留める方が良いかもね。

まあ、展開ソースを出力すればいい事か。
0155デフォルトの名無しさんNGNG
あー
そのアセンブラって言うのはあくまで「言語」での意味で、書式(からマシン後レベルに
変換する前)だけの問題でコンパイルはまた別問題って事か。
今までの書式のままコンパイル時にエラーorワーニングを出してくれる賢いコンパイルを
作り直すのかと思ってた。
0156デフォルトの名無しさんNGNG
某MLよりもこっちの方がためになるな・・・
0157デフォルトの名無しさんNGNG
回路図
ttp://kawanishi.fc2web.com/elechbby/720timer.html
のD1だけを点灯させようとして、以下のプログラム
LIST P=PIC16F84A
INCLUDE "P16F84A.INC"
MAIN
ORG H'00000'
BSF STATUS,5
CLRF TRISB
BCF STATUS,5
MAINLP
CLRF PORTB
CALL MAINLP
END
を走らせたのですが、まったく点滅しません。
ハード的には問題ないようなので、ソフトの
問題だと考えているのですが、どの点がおかしいでしょうか。
0158デフォルトの名無しさんNGNG
MAINLPってなにするんだ?
0159デフォルトの名無しさんNGNG
点滅じゃなくて点灯はしているのですか?
点滅は1と0を交互にしなければいけないよね。
それにある程度時間を間にいれてやらないと人間の目には
付きっぱなし見える。

このプログラムは付きっぱなしだよね
プログラムはあってるように見える。
ちゃんとポートbを出力にしてるし。

あとはコンフィグのクリスタルはあってますか?HSかな。
WDTはちゃんとオフになってますか?

ぐらいしか思いつかん。
0160デフォルトの名無しさんNGNG
CALL MAINLP
~~~~~~
0161デフォルトの名無しさんNGNG
>>157
わかってて質問してるでしょ
0162デフォルトの名無しさんNGNG
GOTO MAINLPだね
スタックあふれか
ぱっとみわからんかった
0163デフォルトの名無しさんNGNG
街時間ループの計算どうやってる?
0164デフォルトの名無しさんNGNG
シミュレータで適当に
0165デフォルトの名無しさんNGNG
157
だましたな
0166デフォルトの名無しさんNGNG
>>163
ttp://www.geocities.co.jp/Technopolis/7015/
0167デフォルトの名無しさんNGNG
btfssなんかの ビット処理命令で
指定ビットに変数を使用することはできるんでしょうか?

0168デフォルトの名無しさんNGNG
出来ません
0169デフォルトの名無しさんNGNG
ありがとう がまんして分枝考えます
0170デフォルトの名無しさんNGNG
なんかMPLABの次ぎのバージョンに12F509とかあるけど
12C509を12ビットコアのまんまフラッシュにしたのかな??
それとも14ビットなのだろうか・・
0171デフォルトの名無しさんNGNG
すいません なんだこりゃ?
Message[305]: Using default destination of 1 (file).

すいません
0172デフォルトの名無しさんNGNG
エラーメッセージの 302と 305は基本的に無視してかまわないと思います
意味は。。よくわかんないけど・・・・・・
0173デフォルトの名無しさんNGNG
(メッセージ[305]:1(ファイル)のデフォルト目的地の使用。)

確かに意味わかんない
0174デフォルトの名無しさんNGNG
>>171
単なる書き忘れだろ。だからデフォルトの物を使うぞって出てくる。
命令リファレンス見たら何が抜けてるかわかるはずだ。
0175デフォルトの名無しさんNGNG
DECF COUNT

上みたいにF(ファイルレジスタ)なのか
W(ワーキングレジスタ)なのか指定しなかった場合に出るみたいですね

DECF COUNT,F または COUNT,W

とちゃんと指定してやれば305は出ないです

指定しなかった場合はデフォルトでFになるっつーことです
0176171NGNG
無視&調整してみます
みなさんありがとです
0177デフォルトの名無しさんNGNG
久々にF873で長文を書いたんだけど ずいぶん下の方のサブルーチンを
上の方で呼び出したら動かなかった。そのサブルーチンを上のほうにもって
きたら動いた。このミス・解決に結構時間かかった。 
やはりページの管理は面倒ですね
0178デフォルトの名無しさんNGNG
他のページのサブルーチンをややこしいページ切り替えにて呼んだ場合
returnで戻ってくるのはそのままでなにもしなくていいんですか?

自分は1024ワード以下のチップしか扱ったことないので
0179デフォルトの名無しさんNGNG
たしかGOTOの場合は、ページ切り替えとかしないで良いんだよな?
CALLの場合は、飛んでくときのページ切り替えとか必要だけど
RETURNで戻る時はそのままなにもしなくていいんぢゃないかな?
漏れも16F84しかつかったことないので詳細不明・・・
0180デフォルトの名無しさんNGNG
みんな、3バイトの多倍長計算ってどうやってるんだ?
2バイトなら
 BTFSC  STATUS,0
 INCF
でいいんだけど、

具体的にはADRESL ADRESH を平均の為に加算したいのです。

ADDCが無いから一度に出来ないから

movf   ADRESL , W
ADDWF  AD_BUF , F
movf   STATUS , W
andlw  #1
ADDWF  AD_BUF+1, F

movf   STATUS , W
andlw  #1
ADDWF  AD_BUF+2, F

movf   ADRESH , W
ADDWF  AD_BUF+1, F

movf   STATUS , W
andlw  #1                ;後でCが必要なので
ADDWF  AD_BUF+2, F


みたいに格好悪い
0181デフォルトの名無しさんNGNG
あまり複雑な計算には向いてないですね、PICは

>178
飛ぶときのみページを切り替えてみたいで 
戻るときは何にもしてないですね。
0182デフォルトの名無しさんNGNG
movf   STATUS , W
の意味がよくわからん
0183これでいいんぢゃないの???NGNG
MOVFADRESL,W
ADDWFAD_BUF,F
MOVLWH'01'
BTFSCSTATUS,C
ADDWFAD_BUF+1,F
BTFSCSTATUS,C
ADDWFAD_BUF+2,F

MOVFADRESH,W
ADDWFAD_BUF+1,F
BTFSCSTATUS,C
INCFAD_BUF+2,F
0184これでいいんぢゃないの???NGNG
MOVF ADRESL,W
ADDWF AD_BUF,F
MOVLW H'01'
BTFSC STATUS,C
ADDWF AD_BUF+1,F
BTFSC STATUS,C
ADDWF AD_BUF+2,F

MOVF ADRESH,W
ADDWF AD_BUF+1,F
BTFSC STATUS,C
INCF AD_BUF+2,F
0185これでいいんぢゃないの???NGNG
MOVF ADRESL,W
ADDWF AD_BUF,F
MOVLW H'01'
BTFSC STATUS,C
ADDWF AD_BUF+1,F
BTFSC STATUS,C
ADDWF AD_BUF+2,F

MOVF ADRESH,W
ADDWF AD_BUF+1,F
BTFSC STATUS,C
INCF AD_BUF+2,F
0186180NGNG
>>182
 単に、STATUS のLSBのCを 加算の為にAccに読み出してるだけです

>>183
 2ステップ小さくなってますね。 勉強になります。
 最初のCが1でなければ加算しないからそのままスキップされる訳ですね

ADDC つまりキャリーを含めての加算命令って、やっぱり欲しいです。
0187これでいいんぢゃないの???NGNG
多重投稿すまそ
PIC18シリーズには、ADDC命令みたいのがあるらしいですね??
確か全部で77命令だったよな??
0188デフォルトの名無しさんNGNG
18シリーズには ADDWFC って命令がありました^^
0189180NGNG
そうですか・・・他シリーズにあると聞くと余計に悔しいですね。

でも、24bitまで使う事は滅多にないだろという割り切りと思ってなんとか自分を納得させないと。
16bit迄なら必要ないですしね。
0190デフォルトの名無しさんNGNG
加減乗除すべて24bitだろうが64bitだろうが割り切らなくったってそんなに難しくないよ
便利な命令が無いということは逆に考えればそれでけユーザーが自分の思いどうりに
いじくれるっつーことで 吉
0191180NGNG
え〜だって キャリー付加算があったら、多倍長加算が
   movf     ADRESL , W 
   ADDWF  AD_BUF , F 
   movf     ADRESH , W 
   ADDWFC  AD_BUF+1, F 
   movlW  #1
   ADDWFC  AD_BUF+2, F 
で済むんですよ。

64bit加算でも 16stepですむのに、
  >>182さんの方法でも 2*(8+7+6+5+4+3+2+1)
 ってなって単なる加算が2乗倍かかっちゃう。
0192デフォルトの名無しさんNGNG
ぢゃあPIC18にのりかえれば??
0193これでいいんぢゃないの???NGNG
ポインタをうまく使った方法で 64BIT+64BITは 32ステップ
0194180NGNG
え! そうなんだ。 考えてみるから答え書かないで >>193
0195これでいいんぢゃないの???NGNG
まちがいた31で出来ます
0196これでいいんぢゃないの???NGNG
ポンイタ−使わずに183と同じ手法だと 79 STEPね
0197180NGNG
ダメだ。 O(N^2)->O(N)にアルゴリズムは改善されたけど
    MOVF    EXT_CF .W
    CLRF     EXT_CF
    ADDWF   A+n   ,W
    BTFSC   STATUS,C
    INCF     EXT_CF ,F
    ADDWF   B+n   ,F
    BTFSC   STATUS,C
    INCF     EXT_CF ,F
1加算で8サイクルだから 8x8=64サイクルだ。

これは1週間から1ヶ月くらい温めないとたぶん出来ないな。
0198これでいいんぢゃないの???NGNG
ごめんねーー漏れがいってたのは ステップ数じゃなくて
31行ってことね
0199180NGNG
なるほど。 INCFSZ 使うのかとか、色々考えちゃいました。
ようするに、ループで書くという事ですね?
0200これでいいんぢゃないの???NGNG
間接アドレッシングですよ fsrとか使います
0201ソースNGNG
DelphiとウインドウズAPIでサウンドレコーダを作って見ました。
現在、MP3エンコーダを作成中(lame_enc.dllを基にPasscalに)
http://www.sesco.ne.jp/langdel/
0202180NGNG
ちょっと自分のメモ代わりに、 今回の多倍長をどう使うか。
目的は温度計です。

秋月で手に入る温度センサ S8100B を使います。  ADCと温度の関係は K0 -8mV/5V *2^10/度
ADCの値から 度にするには (T0-ADC)*625/1024 という事で
ADCの値を 625回 足してゆき1/1024 つまり10bitシフトすれば オフセット付きで温度が求まります。
で、この方法だとHEX-BCD変換が必要になるので、

(T0-ADC)*625/1024 から (W0-ADC*2^6)*625/2^16 とします
ADCの結果はADFM=0にすると左置きになるので 6bitシフトしたのと等価なので6bitシフトは不要

結局:
(W0-ADC)を加算しながら、3byte目の桁上がりから 10進加算 するのを625回すると

温度が度単位で10進数で求まる事になります。 しかも平均されているので安定する筈という目論見です。
625回加算するので時間はかかりますが、表示が目的なので、速度は不要だし、安定していた方が良いので
0203デフォルトの名無しさんNGNG
かってに予想シリーズ

PIG20シリーズ
● 内蔵PLLで高精度クロック発生ユーザーがプログラムで任意の周波数に設定可能 
 (DC〜1GHz 0.1Hz刻み)
● 全てのI/Oに端子毎にプルアップ・プルダウンが設定可能
  外付けのプルアップダウン抵抗が不要に!
● 高精度ボルテージレギュレータ内蔵 (昇圧も可能)
  入力 MIN 1.2V MAX 30V 1.5V電池一本駆動が可能
  外付け レギュレータ不用
● 最大シンク・ソース電流 100mA 
● スタックレベル 256
● 全てのメモリ・プログラム空間において直接アドレッシングが可能に!
  (バンク・ページの概念が無くなる)
● 全ての命令において1CLOCK動作
● 非接触(RF)によるプログラミング 
  ユーザーターゲットボードになんら手を加えることなく
  挿し込んだままの状態でプログラム変更・書き換え可能


0204デフォルトの名無しさんNGNG
>>203
じゃ、命令セットを考えてOpenにしてプレゼントしたら?
02058806NGNG
結局チップがどうの、命令体系がどうのじゃないんだよね
何を作るのか??その方が大事だったりするわけよね
0206180NGNG
初めてPIC触るのだけど、 今まで使った一番使い難い4ビットマイコンよりも使い難いと今は感じています。

今までの自分のプログラムスタイルだと、ライブラリベースでの再利用がとても難しい。
でも、マクロベースでの再利用も、バンクが邪魔する。

慣れればそれなりに使えるのでしょうけど。
0207デフォルトの名無しさんNGNG
そうですかあ???? すっげー使いやすいですけどね ピック
僕の場合はマイコンとかIC事態いままでまったく触ったことなかったから
むしろ既製概念とかがないからそういう意味での邪魔な知識が
まったくないから逆に良いんでしょうね

よくわかんないけど嫌ならAVRとか他の使いやすい?マイコンにすれば
いいでわないんでしょうか?
 (AVRがどんなのかはまったくしりませんが・・)
0208180NGNG
そうですね。 既成概念のせいで苦しんでいます。
命令セットを見て、比較命令が無いなとかで悩んでしまいます
で10進多桁 INC は
    INCF   BCDsum , F 
    BTFSS   BCDsum ,3 
    return
    BTFSS   BCDsum ,1 
    return
    DECF   BCDsum , F 
    INCF   BCDsum+1, F 

てな調子で書いて、可読性の悪さに自分で唖然としてみたり。


でも値段が全てです。
0209Z80命NGNG
なんか180さんがひそかに自慢したがってるように見えるのは俺だけ? 前から見てるとあえてすげーーわかりずらい方向に考えてるような気がします
0210180NGNG
たとえば、判り易い方向というと?
0211180NGNG
わかずらい方向の意味を考えてみました。 確かに、温度しか測定しないんだから、一ステップを短くしてもしょうがない。
だからステップ数が増えても、再利用出来るようにした方がいい。
再利用が楽にするには、マクロで書くより、やっぱりライブラリ化出来る方がいい。
という事は、馴れから逃げてた奇妙なインデックス形式に挑戦しろって事だ。
という事で、

BCD_ADD:;input w = -9〜+10 ; INDF = (INDF+w mod 10),inc(FSR) ;output=carry
    ADDWF   INDF , F     ; (INDF)+=w
    MOVLW   #256-10
    ADDWF   INDF , W    ; W=(INDF)-10
    BC    BCDcy       ; Branch on Carry
    INCF   FSR  , F     ;
    MOVLW   #0
    return
BCDcy: ;--- (+ or -)
    BTFSC   INDF ,7     ; if (INDF).MSB=1 then
    goto   BCDneg
    MOVWF   INDF       ; INDF=(INDF+w)-10
    INCF   FSR  , F     ;
    MOVLW   #1
    return
BCDneg:;--- 負数 ;
    ADDLW   #20        ;wは -n-10なので+20して10-nとする
    MOVWF   INDF       ; INDF=(INDF+w)-10
    INCF   FSR  , F     ;
    MOVLW   #-1
    return
0212これでいいんぢゃないの???NGNG
例えば3桁の10進なら・・・・・

      INCF      BCD_1,F
      MOVLW      D'9'
      SUBWF   BCD_1,W
 BTFSC   STATUS,C
      RETURN

      CLRF      BCD_1
      INCF      BCD_2,F
      MOVLW      D'9'
      SUBWF   BCD_2,W
      BTFSC   STATUS,C
      RETURN

      CLRF      BCD_2
      INCF      BCD_3,F
      MOVLW      D'9'
      SUBWF   BCD_3,W
BTFSC      STATUS,C
      RETURN

      (ここにオーバーフロー処理)
      RETURN

何桁でも増やせます
0213これでいいんぢゃないの???NGNG
ちなみに >>208の    DECF   BCDsum , F  は
CLRE BCDsum ですよね??
0214これでいいんぢゃないの???NGNG
ちなみに >>208の    DECF   BCDsum , F  は
CLRF BCDsum ですよね??
0215180NGNG
>>213
ホントですね。間違えてました。

>>212
最初は、こういうコードだったんです。
1桁分の処理
      INCF      BCD_2,F
      MOVLW     #256-10
      ADDWF   BCD_2,W
      BTFSC   STATUS,C
      RETURN
      MOVWF   BCD_2,F
でも、>>208方式なら8/10の確率で 2サイクル短くreturn出来るなとか考えて

でも、これからは INDF を使ったライブラリ化に挑戦します。
0216デフォルトの名無しさんNGNG
なるほどね。。。picが糞だとか使いづらいといって人がいるけど
180のような融通の聞かないプログラムしてるような人達だたんでつね
なっとくでつ
これでわpicが可哀相でつ
0217デフォルトの名無しさんNGNG
>>216
おまえの煽り一つでお客さん居なくなったじゃねえか。
責任とってなんかネタ出せ!
0218デフォルトの名無しさんNGNG
>>217
>>216が融通聞くプログラムを書いてくれるから、生暖かく見守りましょう。
0219デフォルトの名無しさんNGNG
まったくもう。自分がネタ出せないなら、コード吐いてくれるお客さんは特に大事にしろよな。
0220180NGNG
>>202の、なんとか動きました。
結構冗長に書いて、625回加算しても1/30秒で更新。
速すぎてチラツクので、不感帯処理を入れた上に、1秒は変更しないような処理を入れたり。

案外、冗長に書くのがPICを使いこなすコツなのかもと。


割り込み許可bit位置を間違えてて、信号を出すと無限割り込みになって止まってた原因がわからなくて日曜を潰したとかは秘密です
0221デフォルトの名無しさんNGNG
216マダー?チンチン(AA略
0222デフォルトの名無しさんNGNG
 GOTO $+1 ってどういう意味なんですか?
0223デフォルトの名無しさんNGNG
NOPの代わりかな?
0224デフォルトの名無しさんNGNG
GOTO 一行先

ってことでつ 次の行に飛べってことでつ
意味ないように思えるが、一行で2行分のウエイトを稼げるのでつ

ちなみに GOTO $+2なら   2行先に飛べ


0225デフォルトの名無しさんNGNG
きょう久しぶりに本屋で寅技立ち読みしたけどh8のボードが付録でついてた!
買って勉強しようかとおもったけどpicより難しそうなのでやめた
0226デフォルトの名無しさんNGNG
>>224
> 一行で2行分のウエイトを稼げるのでつ

ここがよくわかりません。
0227デフォルトの名無しさんNGNG
全部の命令が1サイクルだといいんだけど分岐系の命令は?
0228デフォルトの名無しさんNGNG
>>226

>>227が暗に答えを言ってまつ
0229デフォルトの名無しさんNGNG
各チップに1Kワードって容量があるでしょう
GOTO $+1って分岐だから2サイクルかかります
NOPを2回でも時間てきにはおなじですが
2ワードかかって損です。
GOTOは1ワードですみます。

これを知ってるとプチ玄人にレベルUPです。小手先の業ですが
そもそも容量の面でそこまでしなければいけない人ってここにいます?
0230デフォルトの名無しさんNGNG
(゚◇゚)ノ
0231デフォルトの名無しさんNGNG
低消費化するんでSLEEP機能使うのだが
WDTでWakeUPしてしまうのて何とかならないのかな?

それともWDT自体使わない方が良いのかな?
教えてエロイ人。

0232デフォルトの名無しさんNGNG
スリープ状態でwdt使ってる場合とそうでない場合では
消費電流数倍以上らしいですぜ セニョール
0233教えてくださいNGNG
16F873の使用方法で分からない点があります。
ページ1にデータテーブルを置いてページの先頭でPCLレジスタに
データ番号を足しデータを取得する方法を試しているのですが、
 (よく参考文献等に記載されている方法です。)
900番地以降に置いたテーブル内でPCLレジスタに値を足して
ジャンプすると800H番地台に飛んでしまいます。
PCLレジスタに値を足したときにPCHレジスタのbit8〜bit10が
クリアされてしまうように思うのですが、仕様なのでしょうか?
それともMPLAB IDEのバグ? 勘違い?ご存じの方宜しくお願いします。
 (PCLレジスタに加算した場合、結果がオーバーフローしたとしても
  PCHレジスタに影響しない記述は、みつけましたが。
(MPLB IDE v5.70.40使用 MPLB IDEアセンブラに設計中)
0234233NGNG
自己解決しました。
仕様を十分に理解しておらず勘違いだったようです。
スレを汚してすみませんでした。

0235デフォルトの名無しさんNGNG
いえいえ、どんどん汚してって下さいな
0236デフォルトの名無しさんNGNG
どっかのMLだとものすごくつっこまれるよな・・・ 過去レスをよくみてから投稿
しろだの、マナーーがうんたらかんたらだの・・・ 
あれだと発言するのがいやになっちゃうyo
0237デフォルトの名無しさんNGNG
うちは絶対そんな事言わないので投稿してほしいですよ。
0238デフォルトの名無しさんNGNG
なんかお説教ずきな方が何人かいますからねえあそこは
0239ιNGNG
質問です(;´Д`)
かれこれ7〜8年前に書いたプログラムのソースが
最近出てきたので、アセンブルしなおして焼いてみたのですが
うまく動きません。使ったPICは当時のまま、 PIC16C84-10です。
アセンブラを通した当時の .LSTファイルが残っていたので
調べてみると、今使ってるアセンブラと違うオペコードを吐いて
いるようなのです。

具体的には、 ニーモニック CLRW に対し、 昔のアセンブラは
0x0100というオペコードを吐いています。今使ってるアセンブラは
CLRWは0x0103だと言っています。データシートの命令セットサマリを
見ると確かに CLRWは 0x0103になっていますし、0x0100に相当する
命令が見当たりません。

いかんせん古いコードですので、当時どういう意図で
CLRWを使ったのか自分でもわからず困っています。
この 0x0100というオペコードは一体何なのか、0x0103と
動作がどう違うのか、0x0100の動作に相当するニーモニックはあるのか、
どなたか教えていただけないでしょうか。

板違い・スレ違いなら誘導お願いします。
0240`NGNG
CLRWのコードって 00 0001 0XXX XXXX だから
てことは 0x0100でも 0x0103でもどっちでも良いってこと?!??!ですよね
おいらも試しにCLRWアセンブルしたら確かに 0x0103 はきますた
0241239NGNG
>>240
今最新のデータシートを見たら確かに 00 0001 0xxx xxxx
になってますね。僕の手元にダウンロードしてある pdfでは
00 0001 0000 0011 って書いてあるんです。実際本当に
xが Don't Careならいいのですが、CLRWのところ以外は全く
同じコードで当時作ったハードでやっぱり動かないので、
何か違いがあるような気がします。。

試しに INHX16ファイルを 0100に書き換えようと思ったけど、
チェックサムとかの INHX16フォーマットを調べるのが面倒で
まだやってません(^-^;)
0242通りすがりNGNG
なんか気になったので16C84で漏れも試してみました。
最初movlw ffhとやった後にclrwとやってそのwがクリアされたかどうか調べてクリアされてればledが点滅というだけのものですが
hexファイルをメモ帳で書き換えて0x0103と0x0100と験しに0x10Fなんかでも試しましたけどどれでもオッケーでしたよ。
推測ですが、同じコードで当時作ったハード・・ということですからチップもしくは基盤周辺の部品が壊れてるとかはないんですか?


0243デフォルトの名無しさんNGNG
秋月のpaアセンブラでclr wをアセンブルしてみたけどhexみたら0100吐いてますよ
242氏の言ってるとおり部品が壊れてるとかが正解じゃないでしょうか
他のc84に焼いてみても同じなんですか?
0244239NGNG
アドバイスありがとうございます。
16C84はまだどっか探せば出てくると思うけど、
ちょっとすぐには見つからないので後日報告しますね。
CLRWの含まれてない部分だけなら、たぶん正常動作
してるっぽいけど CLRW使ってるサブルーチンに飛ぶと
動作がおかしいので、ハードの故障は無いと思うけど、
PICが一部壊れてる可能性もあるかもしれないですね。
0245デフォルトの名無しさんNGNG
トランジスタ型の3ピンのpicでないかなあ・・・・
0246デフォルトの名無しさんNGNG
あてくしロボットを作る部活に入ってるのですが、
プログラミングを教えてもらっても、パコでゲームばっかり作ってました。
で、あんまり役立たずなので、役に立ちたいと思って、PICのアセンブラ勉強し始めたのですよ。
はんだごても触ったことないけど、なんとか頑張ります(゜∀゜)

ちゅーことで、ここで質問は可?
0247デフォルトの名無しさんNGNG
ええ、質問スレですからPICプログラミング関係はここでOKですよ。
0248デフォルトの名無しさんNGNG
わーい!ありがとう!
じゃあ早速質問させてもらいます。初心者過ぎて恥ずかしいけど笑わないでね。

入出力の話がサパーリ分からないのです。
PICのアセンブラが出来る人がまわりに全くいないので、ちんぷんかんぷん。
PORTxってPICのどのピンをいじれるんでしょうか?
0249デフォルトの名無しさんNGNG
>>246->>247は不自然なぐらいに流れが速いな。
質問連発で貼りつかれても目障りだから推薦図書&サイト

http://www.amazon.co.jp/exec/obidos/ASIN/4416101082/
↑これはロボットつくろうとか考えてる中学生とかには最適かも。
 モータードライブとかの説明も結構丁寧だった気がする。(まぁそれぐらいは企業のpdf見て学んだほうがいいような気がしなくも無いが)

サイトは>>1のが詳しいからそこ見るべし。一通りの事はできるはず
これからいろいろとカベがあるだろうが自分で調べるのも大事、がんばれ
0250デフォルトの名無しさんNGNG
あてくしが自演したとでもー!w
ほんとに自演だったらこんなに流れ早くないです。

>1のサイト行ってみます。よく見てなかったぜ…!
推薦図書も…お金の余裕があったら買ってみます。
ありがとでした。
0251デフォルトの名無しさんNGNG
>>248

PORTA PORTB は PIC のそれぞれ RAn RBn と書かれたピン(最高8本)に対応する

ちなみに足が8本のPICでは GPIO って名前になる
0252デフォルトの名無しさんNGNG
12F675に12C509のPろグラムそのまま焼いたんだけど動きません
0253デフォルトの名無しさんNGNG
>>252 あほですか?
0254デフォルトの名無しさんNGNG
12c509jwに 16F877Aのプログラムそのまま焼いたんだけど動きません
0255デフォルトの名無しさんNGNG
不動作報告ご苦労(ぉ
0256デフォルトの名無しさんNGNG
始めたばっかりなんですが、PIC用のマクロ集なんてないんでしょうか?
個人個人で作ると内容はいっしょなのに、記述がばらばらだろうし
せっかくの統一スレッドですからマクロも統一できればいいなぁと
k→f,if〜gotoとか皆が共通で使えるのが欲しい
0257256NGNG
誰もいない(TT
0258デフォルトの名無しさんNGNG
どうしてもわからないんですが、誰か教えてくださいm(__)m
五秒間ループの中である数を数え終わったら、五秒間ループが終わる
前にループから抜け出したいのですが、どのようにプログラムを組んだ
らいいかわかりません(><)教えていただけませんか?
0259デフォルトの名無しさんNGNG
>>258
わかりません(><)
0260256NGNG
>258
"ある数を数え終わったら"がよくわからないのだが?
0261デフォルトの名無しさんNGNG
>>258やりたい事をその通りにアセンブラで表現すればいいと思うのだが・・・・どこがわからんか判らんのだよ。
0262デフォルトの名無しさんNGNG
ポートの読み書きで
ReadとWriteがあると思うのですが
Read,Write共にどういった役割でしょうか?
ハードにこうしてといった処理をする時はどちらに書き込むのでしょうか?
0263デフォルトの名無しさんNGNG
>>262
ごめん。俺の修行が足りないようでスマン。
どれを使って、何がやりたくて、どこがわからないと書いてくれれば、もしかして理解出来るかもしれんので、お願い。
0264デフォルトの名無しさんNGNG
ReadとWriteでどういった役割なのですか?
ハードの制御0,1を読み取るのがRead?
ハードの制御0,1をかえるのがWrite?
0265デフォルトの名無しさんNGNG
ReadとWriteの単語の意味知らないの?
何を見て質問してるの?
君、小学生?
0266デフォルトの名無しさんNGNG
メモリ(数値を記録しておける所)へ値を書き込むのがライト
メモリから読み出すのがリード。
決まったアドレスにあるメモリに数値を書き込むとその出力が
出力ピンに出てくるし、読み込めばピンのH/Lが読み出せる
通常はピン毎に入力か出力か決めて使う。
0267デフォルトの名無しさんNGNG
質問です。
Z80を使用しているのですが「アセンブラで0EEHに0FFHを掛け結果をレジスタに入れる
ただし、プログラムは8500H番地以降に作成すること」という問題が出てきたのですが
分かりません。なにかヒントやアドバイスお願いします。

0268デフォルトの名無しさんNGNG
ヒント
 スレ違い

アドバイス
 イッテヨシ
0269デフォルトの名無しさんNGNG
>>267
符号無しですか?

とりあえず簡単なのは0EE回 0FFHを足す事ですね。
0270デフォルトの名無しさんNGNG
かける数もかけられる数も定数なら、答えも定数だと思いまーす。
0271デフォルトの名無しさんNGNG
>267
org 8500h
LD HL,0EEH*0FFH
これでいいかな
0272sageNGNG
org 8500h

  0eeh
×0ffh
-----------
HL

goto END
0273273NGNG
先週ぐらいからアセンブラを勉強しはじめたものです。
違うところで質問したのですが、こちらを進められたのでこちらで質問します。
マイクロチップ社純正のアセンブラ「MPASM」を使用しています。
アセンブラで正確なストップウォッチみたいなものを作ろうとしているところで、
ひとつお聞きしたいのですが、
16F84(A)の動作クロックが8MHzの場合、1命令サイクルは0.5μsですが、
COUNT=3 として、以下の命令文では
LOOP NOP          (1)   (6)   (11)
    NOP          (2)   (7)   (12)
    DECFSZ COUNT,1  (3)   (8)   (13)(14)
    GOTO  LOOP    (4)(5)  (9)(10)
    RETURN                 (15)(16)
と、この場合、16命令サイクルになりますが、ここから本題、
割り込みを使用した場合、
START NOP (1)
     NOP (2)
     NOP (3)                    ORG   0
     NOP (4)                    START
     NOP (5)                    ORG   4
           ←ここで割り込みが発生 →  NOP (?)
     NOP (6)                    NOP (?+1)
     NOP (7)                    NOP (?+2)
? はいくらになるのでしょうか。
初めてプログラムしたり、回路を組むので、
どれだけの誤差が出るかわかりませんが、
できるだけ正確に組んでいきたいですので、
ご教授お願いします。
0274デフォルトの名無しさんNGNG
(9)

Interrupts - PICmicro Mid-Range MCU Family
ttp://ww1.microchip.com/downloads/en/DeviceDoc/31008a.pdf
10ページのFigure8-2を見るとわかるが、割込みはダミーサイクルが2つ入る
また、割込み要因が発生した瞬間に実行されている命令の次の命令
(割込み要因が発生した瞬間にFetchしている命令)が実行されてから
割込みに入るので

START NOP (1)
     NOP (2)
     NOP (3)                    ORG   0
     NOP (4)                    START
     NOP (5) ←ここで割り込みが発生 → ORG   4
     NOP (6)                    NOP (9)
     NOP (X)                    NOP (10)
     NOP (X)                    NOP (11)

という形で割込みが発生した次のインストラクションNOP(6)が実行された後
ダミーサイクル2つ入ってORG 4のNOP(9)へ移る
0275デフォルトの名無しさんNGNG
最近アセンブラに凝ってる者です。
Z80でCRC-16を求めようとしているんだが
どんな風に書けばいいか教えてくれ
0276デフォルトの名無しさんNGNG
好きなように書けば? 1bit単位にゆっくり計算してもいいしテーブルをつかって8bit単位に求めてもいいし
0277デフォルトの名無しさんNGNG
ほしゅ
0278huo ◆7zQ910Q9s6 NGNG
ほしゅ
0279デフォルトの名無しさんNGNG
hosyu
0280デフォルトの名無しさんNGNG
たとえば○秒周期でモーター出力(周期内で5〜15任意で決められ周期ポイント前3連続強信号)
たとえば プ プ プ プ プ プ プ プ ブ ブ ブ のくりかえし
外部スイッチによりリセット
外部信号により周期調整
のようなプログラム作るのにどれくらい勉強すればいいでしょうか?
0281デフォルトの名無しさんNGNG
>>280
人によって違うが3時間〜300年ぐらいじゃないかな?
0282デフォルトの名無しさんNGNG
>>280
テンプレにあるサイトを一通りよめばすぐ作れると思うよ
0283デフォルトの名無しさん05/01/18 01:06:10
>>280
エッチなのはいけな(ry

あるいは体感器かもしれないが、それはそれで違法ですから。
0284デフォルトの名無しさん05/01/25 12:40:35
>>283
そういえば、何年も前の話だけど、ニフティの電子工作フォーラムで始めてPICの
話題が出たときに、「おとなのおもちゃ」の開発者が発言して、モーターの制御に
PICを使っていると言っていたぞ。真偽のほどは確認できなかったけど。
0285emulator 808605/01/31 13:27:20
整数の切り上げと切り下げをemulator 8086でやる答えをもらったのですが、
ちょっと理解できないところがあります。コードは以下の通りです。

#make_COM#
ORG 100H
start:
mov [200H],al
mov al, data
and al, 0Fh
mov bl, data
shr bl,4
cmp al, 8h
jl end
add bl,1
end:
mov al,bl
mov [201H],al
ret
data db 68h
この問題では68Hをテストして答えが7になるのですが、
最初にdataをalに移した後、なんで0fHでandするのか分かりません。次に、
なんで、dataを右に4ディジットシフトするのか分かりません。最後に、8hと
比較するのも分かりません。どなたかよければ、ヒントください。
0286デフォルトの名無しさん05/01/31 13:57:32
てか自分で2進に直してノートにでもトレース書いてみればすぐ分かると思うんだけど
0287デフォルトの名無しさん05/02/07 17:52:34
ret
どこへ帰るんだろう・・・
0288デフォルトの名無しさん05/02/08 21:08:56
そりゃモニターに帰るように作ってるんじゃない?
0289デフォルトの名無しさん05/03/16 07:49:07
>>285
PAアセンブラに見えた(w
and al,#0fh    ;これって下位4ビットだけ使うって事でFA?!

わたしはビットマスクの時には
and al,#00001111b
と書く事を広めたい
0290デフォルトの名無しさん05/03/17 07:07:02
アセンブラ使う職人さんは 2進で書かなくとも 1,3,7,F くらいは見ればそのままイメージするものじゃないかな


と、いいながらビットマスクは #(16-1)と書くけどね。
0291デフォルトの名無しさん2005/04/09(土) 20:21:38
こんばんは!
PICのプログラムを始めたいのですが
WINXP、USB接続で可能な開発セットを
教えていただけないでしょうか?
宜しくお願いいたします。
0292デフォルトの名無しさん2005/04/15(金) 19:57:15
>>291
釣れますか?
0293デフォルトの名無しさん2005/05/13(金) 09:47:16
釣られてみよう。
何でもおk

USB→RS-232のコンバータ買えばいいじゃないか。
0294デフォルトの名無しさん2005/05/13(金) 22:03:41
もっと釣られてみよう。

http://www.olimex.com/dev/pic-mcp-usb.html
秋月のプログラマよりおすすめ。
0295デフォルトの名無しさん 2005/07/11(月) 12:55:57
ヘキサファィルの逆アセンブラでお勧めソフトない?
0296依頼人2005/07/12(火) 15:51:17
16F84Aに書き込まれているデーターのコピーを頼みたいのですが。
宿泊費、食費負担します。
場所は大阪です。
詳しいことはメールにて
0297デフォルトの名無しさん2005/07/12(火) 16:37:41
>>296
『書き込まれている』?

それって、他社製品のパクリ?
0298デフォルトの名無しさん2005/07/21(木) 21:02:03
>>296
ちょっとだけ詳しく。
0299デフォルトの名無しさん2005/07/21(木) 22:32:05
ttp://www.geocities.co.jp/Playtown-Spade/8132/robocon/p-breakout.html
を作ってみた。ソフトウェアでNTSC信号を出す心意気に乾杯。
0300デフォルトの名無しさん2005/07/22(金) 01:56:41

(;´∀`)うわぁ
0301デフォルトの名無しさん2005/08/01(月) 18:47:58
>>299
ワロスwなんか偉い(笑)
0302デフォルトの名無しさん2005/09/04(日) 02:44:18
超初心者です。
「PIC16F877Aで動くサブルーチンまたはプログラムを作成しなさい。」
という課題なんですが、先生がへタレで授業がワケわかりません。
というよりプログラムの授業やってません。
賢者の皆さんにはこれらのプログラミングを御教授いただきたく・・・

A0 EQU 20H
A1 EQU 21H
B0 EQU 30H
B1 EQU 31H
R0 EQU 40H
R1 EQU 41H
�@16ビット同士の加算、減算 (A1,A0)+(B1,B0)>>(R1,R0)
�A16ビットデータを8ビットで割る(B1,B0)/(A0)>>(R0:商),(R1:余り)

他にも課題はあるのですが、この2つの応用でなんとかなりそうなんで、
この二つだけ教えてください。
ちなみに8ビット同士の加減算はできます。
0303デフォルトの名無しさん2005/09/04(日) 02:51:32
302ですが、開発環境はMPLAB IDEです。MPLAB SIMで動作確認をします。
よろしくお願いします。
0304デフォルトの名無しさん2005/09/04(日) 18:14:54
>>302
あのな、世間に出たら『上が馬鹿だからできません』ってのは通用しねえんだ。
そんなこといった瞬間に『そういう藻前も使えない奴だな(w』って言われちゃうんだよ。
だから、課題ぐらい自分でやれ。
先生がヘタレだというなら自分で参考書買って勉強シル。
03053022005/09/05(月) 04:58:17
>>304
確かに。
テンプレにあるサイト見たらすぐに出来ました。
ありがとうございました。
0306デフォルトの名無しさん2005/10/14(金) 00:13:25
hosilyu
0307デフォルトの名無しさん2005/10/14(金) 00:28:35
USBコントローラ付きのPICは無いのか?
0308デフォルトの名無しさん2005/10/14(金) 00:39:41
つ【PIC18FXXXX】

0309デフォルトの名無しさん2005/10/14(金) 00:41:04
書き方が悪かったね。訂正。
つ【PIC18Fnnnn】
■ このスレッドは過去ログ倉庫に格納されています