メニュー English Ukrainian ロシア語 ホーム

愛好家や専門家向けの無料テクニカル ライブラリ 無料のテクニカルライブラリ


無線電子工学および電気工学の百科事典
無料のライブラリ / 無線電子および電気機器のスキーム

MCS48 上の制御システムのモジュール式プログラミング。 無線エレクトロニクスと電気工学の百科事典

無料のテクニカルライブラリ

無線電子工学と電気工学の百科事典 / マイクロコントローラー

記事へのコメント 記事へのコメント

同じマイクロコントローラーで、複雑な技術機器と家庭用コーヒーグラインダーや電子時計の両方を制御できることが知られています。 特定のオブジェクトへの適応はマイコンのプログラムを変更することで行われ、ハードウェアにはほとんど影響を与えません。 提案された記事は、さまざまな目的の制御システムで広く使用されている MCS48 シリーズ マイクロコントローラーのプログラミング技術に特化しています。 その主な規定は、より最新のデバイスにも有効です。

制御プログラムがモジュール原理に従って構築されていれば、制御プログラムの開発と最新化が大幅に容易になります。 この場合、ある程度の経験を積んだ後、そして最も重要なことは、デバッグされたモジュールの独自のライブラリを獲得した後、新しい制御システム (CS) をプログラミングすることは、既存のデバッグされたプログラムの一部のモジュールを置き換えることになり、場合によっては、それをフラグメントで補完することになります。特定のシステムの詳細を考慮してください。

この原則は多くの高級言語 (PASCAL、C++) の構造に組み込まれており、プログラマは文字通りそれに従うことを強いられています。 残念ながら、アセンブラ (MSS48 を含む) は、プログラマに問題解決のための手段や方法の選択の自由を与えていますが、原則として、プログラミング規律の遵守をまったく監視しません。 これにより、他のプログラムでデバッグされたフラグメントが使用されることは言うまでもなく、作成者ですら時間が経つと何が行われたのか理解できなくなるほど非常に混乱したプログラムが作成されることがよくあります。 一般的なモジュラー概念を意識的に遵守すると、マイクロコントローラーのプログラミングが大幅に容易になり、速度が向上します。 CS の典型的なモジュール型プログラムの例を表に示します。 その構文は、8048 マイクロプロセッサの TASM 表形式 ASSEMBLY に対応します。

ご覧のとおり、プログラム テキストの先頭で、EQU ディレクティブによって定数に名前が付けられ、値が割り当てられます。 実行可能なプロセッサ命令で直接数値を指定するよりも、名前付き定数を使用することをお勧めします。 たとえば、以下で説明するサブルーチンの 1 つによって実装される時間遅延は、2 つの数値によって定義されます。 それらは定数 N3、NXNUMX、NXNUMX によって与えられます。 シャッタースピードを変更する必要がある場合は、EQU 演算子で新しい値を指定するだけで十分です。 それ以外の場合は、プログラム全体でこれらの数値に等しいオペランドを持つ命令を探し、それぞれが時間遅延を参照しているかどうかを判断し、必要な場合に新しい値を示す必要があります。

明らかに、そのような作業には多くの時間がかかり、エラーなしで完了することはよくありません。 コマンドによっては整数ではなく、上位バイトや下位バイトなどを使用する場合があるため、特に複雑になります。 ASSEMBER はすでにプログラムの翻訳段階にあり、他の定数の値に基づいていくつかの定数を計算できます。 この可能性は、数値 N3 の上位 (N3N) バイトと下位 (NXNUMXL) バイトの計算によって示されます。

次に、プログラムは変数にメモリを割り当てます。 これは同じ EQU ディレクティブで実行されますが、定数の記述とは異なり、変数の数値ではなく、変数が占有するメモリ セルのアドレスを指定します。

MCS48での制御システムのモジュラープログラミング
(クリックして拡大)

ASSEMBLER が許可する場合は、マクロを使用する可能性を無視してはなりません。 それらのそれぞれは、いわば、プロセッサの命令システムによって直接提供されていない操作を実行する新しい命令です。 マクロ命令を記述する際、プログラマはそれに名前を付け(もちろん、「実際の」命令の名前とは一致しません)、一連の機械命令の形式で必要なアクションを指定します。 プログラム内でマクロ命令が見つかるたびに、ASSEMBLER はそれを指定されたシーケンスに置き換えます。 この例では、XNUMX つのマクロが使用されています。 そのうちの XNUMX つはアキュムレータの内容をマクロ パラメータで指定されたデータ メモリ セルに転送し、もう XNUMX つは逆に転送します。

マイコンは電源投入後(またはリセット信号が与えられると)、3番地からプログラムの実行を開始します。 このアドレスは通常、実際のプログラムの開始点 (この場合は START ラベル) に無条件ジャンプ コマンドを書き込むために使用されます。 ハードウェア割り込みは常に固定アドレス 7 と XNUMX に制御を転送するため、これが必要です (他のタイプのマイクロコントローラーの場合、アドレスは異なる場合がありますが、それでもプログラム メモリの先頭に位置します)。 これらのアドレスにある対応する割り込みのサービス ルーチンへの無条件移行コマンドは、メイン プログラムによって「バイパス」されます。

次のステップでは、コントローラーの動作モードを設定し (メモリーバンクとレジスターを選択するなど)、変数と外部デバイスを初期化します。 初心者プログラマの典型的な間違いは、プログラムの開始直後に、変数にすでに一定の値が設定されていると想定することです。 この誤解は、一部の高級言語 (BASIC など) がすべての変数を自動的に初期値 1 に設定するという事実によってさらに強化されます。 アセンブリ言語 (および他の多くの言語) のプログラムでは、プログラマ自身が、変数の値を最初に読み取る前に、変数に割り当てられたメモリ セルにすでに何かが書き込まれていることに注意する必要があります。 優れたプログラミング スタイルでは、プログラムの最初で初期値を変数に割り当てる必要があります。 この場合、これは XNUMXINIT サブルーチンによって行われます。

外部デバイスの初期化セクションは通常、サブルーチンへの代替呼び出しのように見えます。各サブルーチンはそれらの XNUMX つ (アナログ - デジタル コンバーター、LED インジケーター、キーパッドなど) をリセットし、システムを完成させ改善するときに簡単に置き換えることができます。 多くの場合、これらの同じルーチンでデバイスの状態がチェックされます。

次に、ほとんどの制御プログラムは無限に繰り返されるメイン ループに入り、その実行は割り込みを処理するためだけに一時停止されます。 このサイクルは、キーボードやその他のセンサーをポーリングし、割り込み処理サブルーチンによって設定されたフラグ (たとえば、指定された時間間隔の満了またはアナログ - デジタル コンバーターの終了を示すフラグ) を確認し、処理を行うためのサブルーチンで構成されます。指定された制御アルゴリズムに従って受信した情報、アクチュエータへの制御動作の出力、液晶ディスプレイまたはその他のインジケータ上での技術プロセスの状態に関する情報の表示。 メインループからの出口は、通常、緊急事態の場合にのみ提供されます。たとえば、障害の影響を排除する場合、すべての変数と外部デバイスの初期化を繰り返す必要がある場合、および割り込みを処理する場合です。

したがって、モジュールベースで構築されたプログラムはサブルーチンのセットです。 たとえば、新しい制御システムで別のキーボードが使用されている場合は、BUTT サブルーチンを置き換えるだけで十分です。 このような置き換えを簡単かつ苦痛なく行うためには、特定のルールを作成し、常に遵守する必要があります。 サブルーチンは、可能であれば、すべてのコントローラ レジスタの内容を保存し、初期データを受信して​​同じレジスタとメモリ セルで結果を発行し、同じ文字エンコーディングを使用する必要があります。

厳格なルールから離れ、非標準的なテクニックを使用してプログラムを簡素化したいという自然な欲求と戦う必要があります (特に、最初の困難を克服し、プロになったと感じ始めているプログラマーにとって)。 一見すると、不当に複雑化しても、デバッグが容易になり、プログラム全体が作り直されるため、十分に効果があるように見えます。

サブルーチンのいくつかの機能を考えてみましょう。 I NCREM と DESREM は、多くの場合に必要な、16 ビット 6 進数の指定された値だけ増加または減少する操作を実行します (その上位バイトと下位バイトはそれぞれレジスタ R5 と RXNUMX にあります)。 インクリメント量を指定する定数はプログラムの先頭に記述されています。

どのマイクロコントローラーもテクノロジー機器よりもはるかに高速に動作するため、プログラム内で時間遅延を調整できることが非常に重要です。 この場合、プロセッサの内部カウンタ/タイマーが使用されます。 容量には制限があり、ミリ秒単位でオーバーフローします。 オーバーフローが発生するたびに割り込み要求が生成されます。 タイマ割り込みサービス ルーチン (TIME) はそれらをカウントし、指定された数に達すると、FLT タイムアウト フラグを XNUMX に設定します。 動作が時間に依存するすべてのサブルーチンでは、このフラグの状態を分析する必要があります。 したがって、数秒、さらには数分のシャッタースピードを実現することが可能です。

新しい間隔のカウントを開始するには、TIME サブルーチンの作業セルに初期値を入力し、タイマーをオンにする必要があります。 たとえば、サブルーチン SET2M は遅延時間を 2 分に設定します。 初期値の計算にはいくつかの微妙な点があります。

MSS48 シリーズのマイクロコントローラーでは、パルスが水晶発振器の周波数の 480 分の 7 の周波数で内部カウンター/タイマーの入力に到達することが知られています。 たとえば、水晶共振子の周波数が 480 MHz の場合、カウンタに書き込まれる数値は 7000000/0,00006857 = 68,57 s = 68,57 µs ごとに変化します。 したがって、カウンタは 256 -(1-N1) μs 以内にオーバーフローします (そして割り込み要求が生成されます)。ここで、N0,1 は最初にカウンタに書き込まれた数値です。 この数値から新しいカウントを開始するたびに、N2 = 0,1 7000000/[1480 (256-N1)] オーバーフローが XNUMX 秒以内に発生します (最小遅延時間)。

明らかに、異なる N1 と N2 で同じ遅延を得ることができますが、これらの数値は小数にすることができないため、多少の誤差を伴って実装されます。 タスクは、誤差が最小限になるような値のペアを選択することです。 検討中のケースでは、最良のオプションは N1 = 13、N2 = 6 です。説明した手順を N2 = 3 回繰り返すと、1200 分の遅延時間が得られます。

プログラム動作の異なるモードで同じハードウェア割り込みを処理するには、異なる手順を使用する必要があることがよくあります。 これを行う 1 つの方法は、INTER サブルーチンで示されています。 これは、メイン プログラムによって INTT セルに入力された割り込みタイプ コードを分析し、その値に応じて、割り込みサービス ルーチン ISR2 または ISRXNUMX のいずれかを呼び出します。 どちらも RETR ではなく RET で終わることに注意してください。 処理オプションの数を増やすことは簡単で、コードの特定の値に対して複数の異なるサブルーチンが次々に呼び出されるようにすることもできます。

必要なサブルーチンをすべてメインプログラムのテキストファイルに記述する必要はありません。 デバッグされ、さまざまなプログラムで繰り返し使用されるモジュールは、別個のファイルに配置され、INCLUDE ディレクティブを使用してメイン プログラムに接続できます。 各インクルード ファイルには XNUMX つ以上のルーチンを含めることができます。 この方法の欠点は、使用されるすべてのモジュールの変数、定数、ラベルの名前を繰り返す必要がないことです。 この欠陥がないため、モジュールを個別に変換し、その後オブジェクト コードのレベルで結合する方法は、残念ながら TASM ASSEMBLY ではサポートされていません。

著者: D. リゾフ、ウラジミール

他の記事も見る セクション マイクロコントローラー.

読み書き 有用な この記事へのコメント.

<<戻る

科学技術の最新ニュース、新しい電子機器:

庭の花の間引き機 02.05.2024

現代の農業では、植物の世話プロセスの効率を高めることを目的とした技術進歩が進んでいます。収穫段階を最適化するように設計された革新的な Florix 摘花機がイタリアで発表されました。このツールには可動アームが装備されているため、庭のニーズに簡単に適応できます。オペレーターは、ジョイスティックを使用してトラクターの運転台から細いワイヤーを制御することで、細いワイヤーの速度を調整できます。このアプローチにより、花の間引きプロセスの効率が大幅に向上し、庭の特定の条件や、そこで栽培される果物の種類や種類に合わせて個別に調整できる可能性が得られます。 2 年間にわたりさまざまな種類の果物で Florix マシンをテストした結果、非常に有望な結果が得られました。フロリックス機械を数年間使用しているフィリベルト・モンタナリ氏のような農家は、花を摘むのに必要な時間と労力が大幅に削減されたと報告しています。 ... >>

最先端の赤外線顕微鏡 02.05.2024

顕微鏡は科学研究において重要な役割を果たしており、科学者は目に見えない構造やプロセスを詳しく調べることができます。ただし、さまざまな顕微鏡法には限界があり、その中には赤外領域を使用する場合の解像度の限界がありました。しかし、東京大学の日本人研究者らの最新の成果は、ミクロ世界の研究に新たな展望をもたらした。東京大学の科学者らは、赤外顕微鏡の機能に革命をもたらす新しい顕微鏡を発表した。この高度な機器を使用すると、生きた細菌の内部構造をナノメートルスケールで驚くほど鮮明に見ることができます。通常、中赤外顕微鏡は解像度が低いという制限がありますが、日本の研究者による最新の開発はこれらの制限を克服します。科学者によると、開発された顕微鏡では、従来の顕微鏡の解像度の 120 倍である最大 30 ナノメートルの解像度の画像を作成できます。 ... >>

昆虫用エアトラップ 01.05.2024

農業は経済の重要な分野の 1 つであり、害虫駆除はこのプロセスに不可欠な部分です。インド農業研究評議会 - 中央ジャガイモ研究所 (ICAR-CPRI) シムラーの科学者チームは、この問題に対する革新的な解決策、つまり風力発電の昆虫エアトラップを考案しました。このデバイスは、リアルタイムの昆虫個体数データを提供することで、従来の害虫駆除方法の欠点に対処します。このトラップは風力エネルギーのみで駆動されるため、電力を必要としない環境に優しいソリューションです。そのユニークな設計により、有害な昆虫と有益な昆虫の両方を監視することができ、あらゆる農業地域の個体群の完全な概要を提供します。 「対象となる害虫を適切なタイミングで評価することで、害虫と病気の両方を制御するために必要な措置を講じることができます」とカピル氏は言います。 ... >>

アーカイブからのランダムなニュース

ナノファイバー膜による海水淡水化 06.07.2021

韓国の科学者は、海水を数分で飲めるようにする淡水化方法を開発しました。 これを行うために、彼らは膜蒸留プロセスを使用しました。

膜蒸留の方法のおかげで、科学者は 99,9 か月以内に水から XNUMX% の塩を除去することができました。 しかし、この方法を開発する上での主な問題は、膜が濡れるとフィルターが水をろ過しなくなることでした。そのため、できるだけ湿気に強い素材を作成する必要がありました。 同時に、水をろ過する能力を保持する必要があります。 その結果、メンブレンファイバーの糸が静電場で形成されると、エレクトロスピニングによって作成されたポリマーナノファイバーでメンブレンが作成されました。

科学者たちは、ベースとしてポリフッ化ビニリデンとヘキサフルオロプロピレンのポリマーブレンドを使用し、シェルとして低濃度ポリマーと混合されたケイ酸塩エアロゲルを使用して、超疎水性表面を持つ複合膜を製造しました。 このソリューションが商業化されれば、エネルギー消費が少ないため、気候変動によって悪化する飲料水の危機を緩和するのに役立つ可能性があります。

最新の淡水化プラントのほとんどは、その運用に大量のエネルギーを消費します。 さらに、淡水化ステーションの操作の結果、塩水が残留物に残り、海と海に戻されます。 国連によると、世界中で 3 億人以上の人々が水不足に苦しんでいます。

その他の興味深いニュース:

▪ 駐車が楽になります

▪ スマート電球 Connected Cree LED Bulb

▪ TI のレーダー スポーツ スピードメーター

▪ 視覚障害者用スクリーン

▪ 空気中で蒸発しない液体レーザー

科学技術、新しいエレクトロニクスのニュースフィード

 

無料の技術ライブラリの興味深い資料:

▪ サイトの「ファームウェア」セクション。 記事の選択

▪ 記事 サイドベーキング。 人気の表現

▪ 記事 リンネが女性の生殖器にちなんで名付けた植物は何ですか? 詳細な回答

▪ 記事鑑定士(財産評価の専門家)。 仕事内容

▪ 記事 XNUMXバンドアクティブトーンコントロール。 無線エレクトロニクスと電気工学の百科事典

▪ 記事 スムーズな局部発振器を備えたコンバーター 144/27 MHz。 無線エレクトロニクスと電気工学の百科事典

この記事にコメントを残してください:

Имя:


Eメール(オプション):


コメント:





このページのすべての言語

ホームページ | 図書館 | 物品 | サイトマップ | サイトレビュー

www.diagram.com.ua

www.diagram.com.ua
2000-2024