問題タブ [pic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - データ型が完全な数値を保持できない場合は、16進数を10進数に変換します
私はCでPICマイクロプロセッサを使用しています。これは16Fであるため、32ビットを超える整数を保持できません(符号なしint32
は使用可能な最大のデータサイズです)
リーダーから、5バイトのIDコードを受け取ります。それを送信するには、BCDに1桁ずつエンコードする必要があります。データサイズよりも大きいため、文字列にスプリントできず、処理できません。操作が定義されていないため、分割できません。
私は可能な解決策を見つけることができません、誰かが以前にこれに対処したことがありますか?
編集:
一連の5バイトで番号を受け取ります。
FF-FF-FF-FF-FF
10進数に変換する必要があります
0123456789012
(13桁、10進数で256 ^ 5の長さ)RS232を介して送信します。2番目の関数(ASCIIを取得して送信します)私はすでにそれを機能させていますが、それを使って何かをする前に、完全な数値の文字列表現が必要です。
bit-manipulation - データ型が完全な数値を保持できない場合は、10進数を16進数に変換します
これは、数週間前の私自身の質問とほぼ同じです。
データ型が完全な数値を保持できない場合は、16進数を10進数に変換します
今回はその逆です。私は(便利なヌル文字で終了した文字列の)番号を持っており、この番号を構成するバイトが必要です。ただし、私はマイクロコントローラーの32ビットアーキテクチャで作業しているため、32ビットを超える数であるため、atoiを使用する可能性はありません。
元の結果を取り戻すために、最初のリンクで提供されているアルゴリズムを逆にする方法について誰かが考えていますか?私の合同算術スキルは私を失敗させています。
簡単な例:155.207.231.135から0x [24] [23] [12] [66] [9F](角かっこでバイトを区切ります)
c++ - このアセンブリを c に変換するのを手伝ってください
私のコンパイラは、私が持っているアセンブリ ファイルでは動作しません。また、私の他のコンパイラは、私が持っている c ファイルでは動作しません。組み立てがわかりません。これを移動する必要がありますが、どこにもすぐには行きません。助けてくれる人はいますか?翻訳者がいないなんて信じられない。ファイルの冒頭は次のとおりです。
とにかく、デバイス定義が私のmain.cにあるので、最初の2行をほとんど除外できることがわかりました。2 つの #defines はまさにそれですが、最も簡単な方法 (私が思うに) は、_Z と _C のインスタンスを STATUS,2 と STATUS,0 に適宜置き換えることです。次の行 (GLOBAL) は、私が収集している単なる変数宣言です。LSB と MSB も値を割り当てることを除いて同じです。次のチャンクは、それらの名前 (AARGB0 など) を持つ整数の束を宣言するだけで、その後のチャンクは関数です。
私のコンパイラには #asm/#end asm ディレクティブがあるので、その関数を変換することさえ気にしません。
私はそれをすべて持っていると思います...ビルドして、コンパイラが STATUS が定義されていないことを叫ぶまで。そしてもちろんそうではありません。しかし、それは何ですか?ネットで STATUS レジスタが何か特別なものだと読んだのですが、実際にどのように機能するのかわかりません。
あなたが気づいていないなら、私はそれが本当に何を求めているのかさえわかりません. 私は血まみれのことを機能させたいだけです。
c - Cプログラムされた写真で変数を連結する方法は?
hitechCで16f84apicをプログラミングして、hd44780lcdを駆動します。これまでのところ、lcdを初期化して、個々の文字と文字列をlcdに書き込むことができます。今、私はこのようなことをする必要があります:
var = 250;
lcd_write_string
("MyVarには値があります:" + var);
したがって、液晶ディスプレイには「MyVarの値:250」と表示されます。
まず、変数と文字列をどのように連結する必要がありますか?次に、変数varには8ビットの2進数(10進数で0〜255)が含まれています。var=23の場合; 8ビットの数値を2に分割して、ASCIIで2と3を表し、lcdで表示する必要があります。これどうやってするの?2桁の数値をすべて分割して液晶ディスプレイに表示するには、基数10の変換またはifツリーを実行する必要があるようです。これを回避する簡単な方法はありますか?
ありがとう!
communication - 割り込み通信について
私たちはシンプルなアーキテクチャを持っています:
- メインチップ (arm9 ベース)
- PICコントローラー
PIC は、割り込みベースの I2C 通信プロトコルを介して ARM と通信し、データを転送します。割り込み内で、I2C 層 (バス) からデータを読み取るタスクに信号を送ります。
データが限られている場合、通常、データを読み取って上位層に送信するのにそれほど問題はありません。このデータが非常に大きい場合、割り込みは長時間拘束されます。
最初の質問は次のとおりです。
私は正しいですか?
私が正しい場合、どうすれば同じことを避けることができますか? ...または、別の解決策はありますか?
linker - PIC コードのアドレス範囲を指定する方法は?
PIC16 用に Claudiu Chiculitas の小さなブートローダーを使用したい (チップに合わせて変更しました) が、そのブートローダーはブートローダーの上書きを防ぐためにコードを移動しないため、ブートローダーが上書きされないように手動で確認する必要があります。--rom オプションを次のように使用しようとしました。
私が欲しいのは、コード メモリの最初の 4 ワードにはコードがありません。これは、ブートローダーへのジャンプがある場所であり、メモリの最後の 128 ワードにコードがないためです。実際のブートローダーがある場所だからです。--rom 私が使っているように、何もしません。HI-TECH PICC STD COMPILER (Microchip PICmicro) V9.60PL3 を使用しており、チップは pic16f876A です。
assembly - PIC マイクロコントローラのアセンブリ言語を学ぶのに最適なリソースは何ですか?
PIC マイクロコントローラーのアセンブリ言語を十分に理解する必要があるプロジェクトに取り掛かります。私は C/C++ に精通しているので、ほとんどのコーディング方法を知っています。すでに PIC の多くのプロジェクトを行っているので、アーキテクチャは理解していますが、プログラミングはすべて「C」で行っています。
すべてのアセンブリ コマンドの意味と、PIC マイクロコントローラーのかなり単純なタスク (LED の点滅、基本的な数学など) の実行方法を説明している良い本または Web サイトはありますか?
編集: この投稿の主な目的は、アセンブリを学習するためのリソースを要求することであり、PIC での C とアセンブリのメリットや、PIC が使用するのに「良い」マイクロコントローラーであるかどうかについて議論することではありません。違いがある場合は、PIC18 マイクロコントローラーを使用しています。
ide - MPLAB にコメント付きの HEX ファイルをインポートさせたり、コマンドラインで指定した HEX ファイルをインポートさせるにはどうすればよいですか?
私は、オブジェクト ファイルを Intel 32 ビット HEX 形式、別名 INHX32 で生成する CCS c コンパイラを使用しています。このコンパイラには、これらのファイルにコメントを入れるディレクティブがあります。コメント行はファイルの先頭にあり、次のようにセミコロンで始まります。
このディレクティブを使用したいと思います。コメントは、後で hex ファイルを MPLAB にインポートする人にとって非常に役立つからです。ただし、MPLAB はコメント付きのファイルをインポートしません。しようとすると、「ファイル形式が無効です。情報がありません」というエラーが表示されます。
これらのコメント行は元の Intel 仕様の一部ではありませんが、他の一部のコンパイラや開発ツールはそれらを受け入れます。MPLAB にそうさせる方法はありますか?
これらの行を取り除き、結果のファイルを MPLAB に渡すスクリプトを書くこともできますが、私が知る限り、MPLAB はコマンドライン経由でファイルをインポートすることはできません。
c - PIC18 で C を使用したマルチスレッド
OS がないため、PIC18のプログラミング中に並列で実行されるスレッドをどのように作成しますか?