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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
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/
2デフォルトの名無しさん:03/08/07 00:18
2
PICとZ80ってえらく違うと思うのだが。
減算したときのフラグ動作が嫌い。
だいっきらいだ
5デフォルトの名無しさん:03/08/08 11:17
AVRの方が好きでつ。
値段もう少し安かったらなあ・・・仕事で使うのに
日本人ならH8やろ
●PIC・AVR 初心者のためのスレッド-2サイクル目●
http://science.2ch.net/test/read.cgi/kikai/1040610345/

関連で,こんなスレッドもありんすが。
スタック浅過ぎ
10山崎 渉:03/08/15 15:53
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
↑mailto:xxxli
12デフォルトの名無しさん:03/08/17 22:48
PICをコンピュータだと思えばイロイロ頭にもくるだろう。
そこんところが判らん奴がPICを語るな
13:03/08/18 00:16
コンピュータの意味もわからないやつ
14デフォルトの名無しさん:03/08/18 03:07
敷いていえば、6800がコンピューターの最低ラインだな。
8080は出来そこないのコントローラー
15デフォルトの名無しさん:03/08/18 03:22
Win32 Assemblerってなに?
16デフォルトの名無しさん:03/08/18 04:10
ウエスト32インチの♀が 汗かいてダイエットしようって話さ
>>14
ぼうや、RISCって知ってる?
18デフォルトの名無しさん:03/08/18 13:23
>>17
おまえ ROMP しってるか?
19デフォルトの名無しさん:03/08/18 13:40
虎偽とインタフェイスどっち読んでます?
20デフォルトの名無しさん:03/08/18 14:58
出座波だろ
21デフォルトの名無しさん:03/08/18 15:18
  tronwaveだろ
22デフォルトの名無しさん:03/08/18 16:42
マイコンの出来る範囲で仕事をするのがプロだ(アマでもいいんだが)。
ガタガタ言わずに、PICを極めろ。
23デフォルトの名無しさん:03/08/18 19:19
なんにせよPICのプログラムをCで書くような奴は邪道もいいところだ。
PICはアセンブラで使ってこそだ。
24デフォルトの名無しさん:03/08/18 19:20
>>18
みっともないな
26デフォルトの名無しさん:03/08/18 21:00
人気サイト
http://pocket.muvc.net/
27デフォルトの名無しさん:03/08/18 21:13
>25
しらないからって話をそらそうという先方か?
28デフォルトの名無しさん:03/08/18 21:13
この娘完全に騙されてますね。撮影者は業界人を装ってます。
そんな男に生理中にもかかわらずぶち込まれちゃいます。
カワイイ顔して大きなオッパイしてやるときはやります。
アップが多いので血のついたチンポの出し入れがモロ見えです。
素人援交女がいっぱい!!
無料ムービーを観てちょ。
http://www.geisyagirl.com/
29デフォルトの名無しさん:03/08/18 22:11
スタックのないマシンではC言語はどうやって使うんですか?
auto変数の実装方法とういか。
>>27
墓穴を掘ったな
話をそらしてるのはオマエ
31デフォルトの名無しさん:03/08/19 00:38
ROMPのどこが話しをそらしているんだ?
ROMPの話ししたい人は、スレ立てれば?
ここはPICマイコンのアセンブラスレだからさ
33デフォルトの名無しさん:03/08/19 02:50
17 出て来い!
32が非難しているぞ
>>33
非難してるんじゃなくて避難しろって言ってるのでは?
35デフォルトの名無しさん:03/08/19 13:11
そもそもPICをプログラミングの寒天から議論しようって趣旨に無理がある。
PICのライバルはCPLDであって他社ワンチップマイコンではないわけだよ。
36:03/08/19 22:53
議論の否定
PICなんていくらでも情報が転がってるのでAVRの話しましょう
38デフォルトの名無しさん:03/08/20 13:54
AVRなんて...なんでもっと売れないんだろと思うよ。
漏れはPICで十分だけどな。

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

これをアセンブラで書くとどうなりまつか?
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
>>51
あちこちのスレにコピペしてますな。他人の善意を食い物にして、楽しいかい?
>>51
煽り厨房は気にするな
>>51
他のスレにも、同じ質問を書いているのはなぜ?

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


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

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

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

設計くん を使えよ
64デフォルトの名無しさん:03/08/25 03:49
アセンブラじゃソフトウェアは作れない。
よっと、ム板はすれ違いだと思う。
65:03/08/25 12:00
じゃ、あげるんじゃねーよ
66デフォルトの名無しさん:03/08/25 22:15
>アセンブラじゃソフトウェアは作れない。

バカ発見!

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

ちうかスイッチばちばちって懐かしいな(´Д`;)

    荒 ら し は 放 置 

      の 方 向 で
キーボードだってスイッチ並べてるだけじゃねーか。
などと屁理屈を言ってみる。
72デフォルトの名無しさん:03/08/26 14:29
IPLのカード打ちやってた香具師っているか?
>>69
IMSAI8080か?
結局のところ、Z80のアセンブラについてはどこのスレ及び
どこのサイトに行けばいいのですか?
>>74
アセンブラスレがあったんだけどね。
この板でスレたててみたらどう?
7774:03/08/27 18:32
レスサンクスです。

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

とりあえず気合で頑張ってきます
78デフォルトの名無しさん:03/08/30 15:54
気合でスレ立てろ!
79デフォルトの名無しさん:03/09/20 23:52
数秒以内に入力ポートに任意の入力がないと(タイムオーバー)
メインルーチンに戻ってしまうのはどうするの

>>79
A)プログラミングテクニックを聞いてるの? 
B)それともそういう現象が起きて困ってる?

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

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

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

ありがとう

8279 フォルトの名無しさん :03/09/24 02:47
割り込みルーチンは必ず
returnで抜け出さないといけないのかな?
goto mainなんかで抜け出すのは
NGなんでしょうか

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

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

デバッグが困難になるバグを入れ易くなるから止めた方がいいよ。
8679 フォルトの名無しさん :03/09/24 22:01
>>84
>>85

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

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

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

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

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

DW:Declare Data of One Word
RES:Reserve Memory

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

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

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

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

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

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

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

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

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

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

皆さんは、割り込み部と 通常部、スタックの振り分けはどの程度の配分になさっていますか?
割り込み内部では3、通常部では4ぐらいですか? それとも割り込み内部ではサブルーチンは使いませんか?
>>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だから計算間違えるなよ。

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



123あれ?:03/12/16 00:54
Error[108] : Illegal character (,)
 ADDWF  PCL,F ;←どこがおかしい??
 RETLW  05H
 RETLW  0AH
>>123
ADDWF PCL,F
RETLW05H
RETLW0AH

普通に通りますが
一度入れなおしてみたら
125123:03/12/16 22:18
>>124
一から書き写しましたらOKです
HTMLからのパクリソースずぼらはダメですね
ありがとうさんです。
126120:03/12/18 10:25
>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 どもども。
127120:03/12/18 10:31
ご助言に従ってもう一度マニュアルを読みますた。
FSRを使った間接アドレス指定時は、バンク切り替えはIRPを使うんですね。
RP1とRP0を使うのは直接アドレス指定時だけなんですね、失礼しますた…

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

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

509でプロテクトしたい場合、後者のやり方が正解なのかな?
131OK:03/12/23 10:50
ライターのバージョンUPしましたらOKになりました
めでたい

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

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

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

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

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

どうなんでしょ?
イイヨイイヨ
海外掲示板用オフラインリーダーを作るスレ
http://pc2.2ch.net/test/read.cgi/tech/1072883528/

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

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

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

   banksel  OSCCAL
   movwf  OSCCAL

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

142141:04/01/07 12:29
結局 こんな感じの自作マクロで対応する事にしました。 でも、リストが 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
PIC は素のアセンブラで書くと、ほんとバグが入りやすい
w/fのミス
bankのミス

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

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

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

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

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

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

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

もしPIC用語でアセンブラって言い方がまかり通ってるんだったら謝る。


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

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

まあ、展開ソースを出力すればいい事か。
あー
そのアセンブラって言うのはあくまで「言語」での意味で、書式(からマシン後レベルに
変換する前)だけの問題でコンパイルはまた別問題って事か。
今までの書式のままコンパイル時にエラーorワーニングを出してくれる賢いコンパイルを
作り直すのかと思ってた。
某MLよりもこっちの方がためになるな・・・
回路図
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
を走らせたのですが、まったく点滅しません。
ハード的には問題ないようなので、ソフトの
問題だと考えているのですが、どの点がおかしいでしょうか。
MAINLPってなにするんだ?
点滅じゃなくて点灯はしているのですか?
点滅は1と0を交互にしなければいけないよね。
それにある程度時間を間にいれてやらないと人間の目には
付きっぱなし見える。

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

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

ぐらいしか思いつかん。
CALL MAINLP
~~~~~~
161デフォルトの名無しさん:04/02/10 15:33
>>157
わかってて質問してるでしょ
GOTO MAINLPだね
スタックあふれか
ぱっとみわからんかった
163デフォルトの名無しさん:04/02/11 19:01
街時間ループの計算どうやってる?
シミュレータで適当に
157
だましたな
btfssなんかの ビット処理命令で
指定ビットに変数を使用することはできるんでしょうか?

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

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

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

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

DECF COUNT,F または COUNT,W

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

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

自分は1024ワード以下のチップしか扱ったことないので
たしかGOTOの場合は、ページ切り替えとかしないで良いんだよな?
CALLの場合は、飛んでくときのページ切り替えとか必要だけど
RETURNで戻る時はそのままなにもしなくていいんぢゃないかな?
漏れも16F84しかつかったことないので詳細不明・・・
180デフォルトの名無しさん:04/02/25 17:16
みんな、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


みたいに格好悪い
あまり複雑な計算には向いてないですね、PICは

>178
飛ぶときのみページを切り替えてみたいで 
戻るときは何にもしてないですね。
182デフォルトの名無しさん:04/02/25 18:05
movf   STATUS , W
の意味がよくわからん
183これでいいんぢゃないの???:04/02/25 18:13
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
184これでいいんぢゃないの???:04/02/25 18:15
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
185これでいいんぢゃないの???:04/02/25 18:16
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
186180:04/02/25 18:21
>>182
 単に、STATUS のLSBのCを 加算の為にAccに読み出してるだけです

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

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

でも、24bitまで使う事は滅多にないだろという割り切りと思ってなんとか自分を納得させないと。
16bit迄なら必要ないですしね。
190デフォルトの名無しさん:04/02/26 09:43
加減乗除すべて24bitだろうが64bitだろうが割り切らなくったってそんなに難しくないよ
便利な命令が無いということは逆に考えればそれでけユーザーが自分の思いどうりに
いじくれるっつーことで 吉
191180:04/02/26 09:52
え〜だって キャリー付加算があったら、多倍長加算が
   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乗倍かかっちゃう。
192デフォルトの名無しさん:04/02/26 09:58
ぢゃあPIC18にのりかえれば??
ポインタをうまく使った方法で 64BIT+64BITは 32ステップ
194180:04/02/26 10:05
え! そうなんだ。 考えてみるから答え書かないで >>193
まちがいた31で出来ます
ポンイタ−使わずに183と同じ手法だと 79 STEPね
197180:04/02/26 10:26
ダメだ。 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ヶ月くらい温めないとたぶん出来ないな。
ごめんねーー漏れがいってたのは ステップ数じゃなくて
31行ってことね
199180:04/02/26 11:36
なるほど。 INCFSZ 使うのかとか、色々考えちゃいました。
ようするに、ループで書くという事ですね?
間接アドレッシングですよ fsrとか使います
201ソース:04/02/26 13:24
DelphiとウインドウズAPIでサウンドレコーダを作って見ました。
現在、MP3エンコーダを作成中(lame_enc.dllを基にPasscalに)
http://www.sesco.ne.jp/langdel/
202180:04/02/26 14:23
ちょっと自分のメモ代わりに、 今回の多倍長をどう使うか。
目的は温度計です。

秋月で手に入る温度センサ 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回加算するので時間はかかりますが、表示が目的なので、速度は不要だし、安定していた方が良いので
かってに予想シリーズ

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


>>203
じゃ、命令セットを考えてOpenにしてプレゼントしたら?
2058806:04/02/26 21:37
結局チップがどうの、命令体系がどうのじゃないんだよね
何を作るのか??その方が大事だったりするわけよね
206180:04/02/27 10:12
初めてPIC触るのだけど、 今まで使った一番使い難い4ビットマイコンよりも使い難いと今は感じています。

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

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

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

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


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

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
例えば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

何桁でも増やせます
ちなみに >>208の    DECF   BCDsum , F  は
CLRE BCDsum ですよね??
ちなみに >>208の    DECF   BCDsum , F  は
CLRF BCDsum ですよね??
215180:04/02/28 08:22
>>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 を使ったライブラリ化に挑戦します。
なるほどね。。。picが糞だとか使いづらいといって人がいるけど
180のような融通の聞かないプログラムしてるような人達だたんでつね
なっとくでつ
これでわpicが可哀相でつ
>>216
おまえの煽り一つでお客さん居なくなったじゃねえか。
責任とってなんかネタ出せ!
>>217
>>216が融通聞くプログラムを書いてくれるから、生暖かく見守りましょう。
まったくもう。自分がネタ出せないなら、コード吐いてくれるお客さんは特に大事にしろよな。
220180:04/03/11 17:48
>>202の、なんとか動きました。
結構冗長に書いて、625回加算しても1/30秒で更新。
速すぎてチラツクので、不感帯処理を入れた上に、1秒は変更しないような処理を入れたり。

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


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

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

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


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

ここがよくわかりません。
全部の命令が1サイクルだといいんだけど分岐系の命令は?
228デフォルトの名無しさん:04/03/18 19:42
>>226

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

ヒント
 スレ違い

アドバイス
 イッテヨシ
>>267
符号無しですか?

とりあえず簡単なのは0EE回 0FFHを足す事ですね。
かける数もかけられる数も定数なら、答えも定数だと思いまーす。
>267
org 8500h
LD HL,0EEH*0FFH
これでいいかな
272sage:04/06/27 01:23
org 8500h

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

goto END
273273:04/08/18 21:17
先週ぐらいからアセンブラを勉強しはじめたものです。
違うところで質問したのですが、こちらを進められたのでこちらで質問します。
マイクロチップ社純正のアセンブラ「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)
? はいくらになるのでしょうか。
初めてプログラムしたり、回路を組むので、
どれだけの誤差が出るかわかりませんが、
できるだけ正確に組んでいきたいですので、
ご教授お願いします。
(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)へ移る
275デフォルトの名無しさん:04/10/13 22:07:01
最近アセンブラに凝ってる者です。
Z80でCRC-16を求めようとしているんだが
どんな風に書けばいいか教えてくれ
276デフォルトの名無しさん:04/10/14 07:09:19
好きなように書けば? 1bit単位にゆっくり計算してもいいしテーブルをつかって8bit単位に求めてもいいし
277デフォルトの名無しさん:04/11/22 20:55:21
ほしゅ
278huo ◆7zQ910Q9s6 :04/12/06 17:59:02
ほしゅ
279デフォルトの名無しさん:04/12/29 10:53:47
hosyu
280デフォルトの名無しさん:05/01/15 20:10:16
たとえば○秒周期でモーター出力(周期内で5〜15任意で決められ周期ポイント前3連続強信号)
たとえば プ プ プ プ プ プ プ プ ブ ブ ブ のくりかえし
外部スイッチによりリセット
外部信号により周期調整
のようなプログラム作るのにどれくらい勉強すればいいでしょうか?
281デフォルトの名無しさん:05/01/16 04:32:03
>>280
人によって違うが3時間〜300年ぐらいじゃないかな?
282デフォルトの名無しさん:05/01/16 17:28:25
>>280
テンプレにあるサイトを一通りよめばすぐ作れると思うよ
283デフォルトの名無しさん:05/01/18 01:06:10
>>280
エッチなのはいけな(ry

あるいは体感器かもしれないが、それはそれで違法ですから。
284デフォルトの名無しさん:05/01/25 12:40:35
>>283
そういえば、何年も前の話だけど、ニフティの電子工作フォーラムで始めてPICの
話題が出たときに、「おとなのおもちゃ」の開発者が発言して、モーターの制御に
PICを使っていると言っていたぞ。真偽のほどは確認できなかったけど。
285emulator 8086:05/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と
比較するのも分かりません。どなたかよければ、ヒントください。
286デフォルトの名無しさん:05/01/31 13:57:32
てか自分で2進に直してノートにでもトレース書いてみればすぐ分かると思うんだけど
287デフォルトの名無しさん:05/02/07 17:52:34
ret
どこへ帰るんだろう・・・
288デフォルトの名無しさん:05/02/08 21:08:56
そりゃモニターに帰るように作ってるんじゃない?
289デフォルトの名無しさん:05/03/16 07:49:07
>>285
PAアセンブラに見えた(w
and al,#0fh    ;これって下位4ビットだけ使うって事でFA?!

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


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

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

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

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

(;´∀`)うわぁ
301デフォルトの名無しさん:2005/08/01(月) 18:47:58
>>299
ワロスwなんか偉い(笑)
302デフォルトの名無しさん: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ビット同士の加減算はできます。
303デフォルトの名無しさん:2005/09/04(日) 02:51:32
302ですが、開発環境はMPLAB IDEです。MPLAB SIMで動作確認をします。
よろしくお願いします。
304デフォルトの名無しさん:2005/09/04(日) 18:14:54
>>302
あのな、世間に出たら『上が馬鹿だからできません』ってのは通用しねえんだ。
そんなこといった瞬間に『そういう藻前も使えない奴だな(w』って言われちゃうんだよ。
だから、課題ぐらい自分でやれ。
先生がヘタレだというなら自分で参考書買って勉強シル。
305302:2005/09/05(月) 04:58:17
>>304
確かに。
テンプレにあるサイト見たらすぐに出来ました。
ありがとうございました。
306デフォルトの名無しさん:2005/10/14(金) 00:13:25
hosilyu
307デフォルトの名無しさん:2005/10/14(金) 00:28:35
USBコントローラ付きのPICは無いのか?
308デフォルトの名無しさん:2005/10/14(金) 00:39:41
つ【PIC18FXXXX】

309デフォルトの名無しさん
書き方が悪かったね。訂正。
つ【PIC18Fnnnn】