- 締切済み
PICアセンブラで10進数を2進数に変換するプログラムを教えて欲しい
DT200の回答
- DT200
- ベストアンサー率38% (63/164)
> すみません。最後の「テーブルの先頭アドレス」というのがどれを示すのか理解出来ません。 具体的に今あるコードを示してもらえばアドバイスは可能かと... > 現在6桁の数字を7セグ表示しようとしていて、各桁のデータは「KETA1」から「KETA6」という名前で管理しています。 と言う事は、7Segはダイナミック・ドライブで6桁を制御する。で良いですか? 以下に、ちょうど良い回路図があるのでそれで説明します。 http://www37.tok2.com/home/aoijf2/ipsum336.html BTの使い方がこれで良いのか不安ですが、こんな感じで表示パタンを定義します。 DOTPTN BT B'11111100' ; 0 BT B'01100000' ; 1 BT B'11011010' ; 2 BT B'11110010' ; 3 BT B'01100110' ; 4 BT B'10110110' ; 5 BT B'10111110' ; 6 BT B'11100100' ; 7 BT B'11111110' ; 8 BT B'11110110' ; 9 digit100 equ 20h digit10 equ 21h digit1 equ 22h で、それぞれに6,3,9は入っていたとして、 RA4がHiだとTR1がonになりcom1(百の位)に電流が流れ、同様にRA3はcom2(十の位)、 RA2はcom3(一の位)に電流が流れる。 まず百の位を表示するには、RA4=1,RA3=0,RA2=0として、'6'を表示するには DOTPTN + 6 のデータ(B'10111110')をPB0~7に出力する。すると、7segの a,c,d,e,f,gの6つのセグメントが点灯します。 なお、参考の回路図を上のテーブルのピンアサインは違うので注意。 7seg PIC ---- --- a RB7 b RB6 c RB5 d RB4 e RB3 f RB2 g RB1 Dp RB0 同等に十の位はRA4=0,RA3=1,RA2=1として、DOTPTN+十の位のデータをPB0~7に出力する。 これを百→十→一→百→十と連続で行えば、目にはすべての桁が表示されているように 見えます。
関連するQ&A
- PICで温度計をつくりたいのですが。アセンブラを教えてください。
初歩的な質問でもうしわけないのですが、 PIC16F819のPICを買いまして、CMOS温度センサーにオペアンプをかけ PA1につなぎ、A/D変換 PB0~7まで7セグを並列に3つつなぎ。 PA4,6,7から各ポートにトランジスタのBにいれ、Cに+5、Eに7セグのCOMをいれ 3桁の数字を表示させたいのです。 たしか、ダイナミックスキャンというものだと思います。 とりあえず、センサーから入ってきた数値をそのまま表示させたいのですが。 ダイナミックスキャンのアセンブラのプログラムがうまくいきません。 簡単に教えていただきたいのですが。 わかる方お願いします。 ハードは問題はないと思います。
- ベストアンサー
- その他(プログラミング・開発)
- PICプログラム C言語とアセンブラ言語
PIC18シリーズを使用して、プログラミングをしています。コンパイラはCCS-Cです。今まではすべてC言語で書いてきたのですが、アセンブラでしか設定ができない部分があり、今までのC言語のソースに加えてアセンブラを組み合わせようと思っているのですが、C言語とアセンブラを組み合わせることは可能なのでしょうか?
- ベストアンサー
- 物理学
- PICのプログラミングについて
現在、PICのプログラミングについてアセンブラがいいかC言語がいいか迷っています。 基本的にLEDを使った物をつくりたいと思っており PWM制御でのLEDの調光、LEDの点滅の周期の変化などをつけた 物を作ろうと考えております。 アセンブラとC言語のPICにおいての違いを教えてください。 加えて、上のPWM制御についてはどちらでもできるのでしょうか? 2つのプログラム言語についての良い点、悪い点など教えてください よろしくお願いいたします。
- 締切済み
- その他(プログラミング・開発)
- PICのアセンブラによるLEDの制御
PICのアセンブラによるLEDの制御 をやっているんですが。 LEDを点滅させる速度を時間に応じて変化させたいのですが、いまいちわかりません。 ●○●○●○●○ から ○●○●○●○● です。 使用ICは16F84Aです おそらく、 COUNT1 EQU 1CH を変化させるか、DELAYサブルーチンをかえるのであろうと思うのですが、わかりません。 教えてください。
- 締切済み
- その他(プログラミング・開発)
- C言語でPICのプログラムをしたいんですが。
PICをC言語でプログラミングしたいと思っているんですがよくわかりません。 PCの画面に「Hello」とか出すことはできるんですが、PICで動作するCがわかりません。 LEDの点灯(点滅でも)やモーターを動作させたりするプログラムを書きたいんですが イマイチ良く分からず最初の定義文の構成とかもPICだとやっぱり違うのかなって 思っているんです。普通のCですら定義文や構成の意味が微妙な感じ何です。 でもCでかけたらカッコいいなって思ってます。 PICのCに関する入門みたいなサイトや文章があったら教えて下さい。 アセンブラやJAVAについても教えていただくとありがたいです。 まぁでもC言語メインでお願いします。
- ベストアンサー
- その他(ソフトウェア)
- PICのプログラムカウンタについて
プログラムカウンタでポートAに4bitの2進数を入力して、変換された2進数のデータをポートBに出力させることはできたのですが、 ポートCにも違うデータを同時に出力させたいのですが、どういった命令文を作ったらいいでしょうか? 例えば、ポートAが「HLHL」の入力の時にポートBでは「HLLH」、ポートCでは「LLHL」を出力させる方法です。 言語はアセンブラ、マイコンはPIC16F886です。 よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- PICでの三角関数演算(アセンブラ)
現在、PIC18F4580を使用してある計算をさせたいと思っています。 その計算の中で、アセンブラ言語でSin30°等の計算をさせたいと思うのですが、参考となる文献やHPはありませんでしょうか? よろしくお願いします。
- 締切済み
- SE・インフラ・Webエンジニア
- PIC16のアセンブラ、あなたならどう書く?
PIC16のアセンブラ、あなたならどう書く? こんにちは、PIC16シリーズのアセンブラについての質問です。MPASMのプログラム書き始めて3日ぐらい目です。すこしずつ、インストラクション・セットやアーキテクチャを把握してきた感じです。 C言語調で書きました下記の様なIF-ELSEをMPASMで書きたい時、皆さんならどの様に記述されますか?人に見られる可能性のあるコードですので、ちびっとぐらいは格好つけないといけない状態です(汗)。 //===== Increase var0/1 ===== if( sel == 0x00 ) { var0 ++; var1 = 0; } else { var1++; var0 = 0; } 下記は、自分なりのコードとそのコメントに当たります。 ;===== Increase var 0/1 ===== MOVF sel, W ; Switch by sel BTFSS STATUS, Z ; .. GOTO $+4 ; .. INCF var0 ; Case sel==0, var0++ CLRF var1 ; var1=0 GOTO $+3 ; INCF var1 ; Case sel!=0, val1=++ CLRF var0 ; val0++ NOP ; Switch-close もちろん、記述方法は記述者の好みがありますから、良し悪しではなく参考的な回答だと嬉しいです。こういう方が常識的だとか、こう記述すると後で見やすいとか、好き嫌いでもかまいません。よかったらご意見ください。よろしくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- PIC 文字 を 数値に 変換
アセンブラ言語(PIC)で、シリアルで受信した文字列数値を数値に変換したいのですが、どなたかプログラムを教えてくださいませんか?
- ベストアンサー
- その他(プログラミング・開発)
- PICでのA/D変換
現在PICについて勉強しています。 そこで基本的な質問なんですが、USARTを用いて非同期でデータを送る場合、スタートビットとストップビットは自動的につくのでしょうか?? またデータを送信する際、送信できるかどうかを判断するプログラムはどのようにしたらいいのでしょうか??TSRレジスタやTXREGレジスタのところがよくわかりません。 めちゃくちゃな質問かもしれませんが、もしよかったら回答のほうよろしくおねがいします。PICの言語はアセンブラでやってます。
- 締切済み
- 物理学
お礼
ちょっと苦労しましたが表示が出来る様になりました。有難う御座います。