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

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


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

PICとは何ですか? 無線エレクトロニクスと電気工学の百科事典。 無線エレクトロニクスと電気工学の百科事典

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

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

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

序章。 PIC16CXX は、Microchip Technology によって製造された 8 ビット RISC マイクロコントローラです。 このマイクロコントローラー ファミリは、低価格、低消費電力、高速という特徴があります。

マイクロコントローラーにはプログラム EEPROM とデータ RAM が内蔵されており、18 出力パッケージと 28 出力パッケージで入手できます。

PIC OTP は、コードをさらに変更する必要のない完全にテストされた完成品向けに設計された、ユーザーがプログラム可能なワンタイム コントローラーです。 これらのコントローラは、水晶または RC などの外部発振器のプリセット タイプを備えた安価なプラスチック ケースで入手できます。

プログラムのデバッグやプロトタイプ作成には、紫外線消去機能を備えたバージョンのコントローラーをご利用いただけます。 これらのコントローラーでは、多数の書き込み/消去サイクルが可能で、消去時間は非常に短く、通常は 1 ~ 2 分です。

ただし、このようなコントローラーの価格は、一度プログラムされたものよりも大幅に高いため、連続生産で導入するのは採算が合わありません。

プログラムが変更可能な製品、または可変部分、テーブル、校正パラメータ、キーなどが含まれる製品の場合は、電気的に消去および再プログラム可能な PIC16C84 コントローラを使用できます。 電気的にフラッシュ可能なデータ ROM も含まれています。 実験に使用するのはこのコントローラーです。

この記事を最大限に活用するには、IBM PC 互換パーソナル コンピューター、コンピューターのパラレル ポートに接続されたプログラマー、PIC16C84 チップ、ブレッドボード、抵抗付き 8 個の LED、+5V 電源、およびソケットが必要です。チップ。

PIC ソフトウェアを少し入力し、組み立て、チップ上に配置し、LED で結果を観察します。 この記事では基本的な MICROCHIP ニーモニックを使用して、組み込み制御ハンドブックで提供されている他のアプリケーション例やリストをより簡単に使用できるようにします。

PIC16CXX ファミリ PIC ファミリのマイクロ回路の詳細な説明を、これらのマイクロコントローラを他のマイクロコントローラと区別する機能と利点とともに開始します。 データ セキュリティ アプリケーションの場合、各 PIC にはプログラム コードとデータ ROM の読み取りを無効にするようにプログラムできるセキュリティ ビットがあります。 プログラミング時には、まずプログラム コードが書き込まれ、正しく書き込まれているかどうかがチェックされてから、セキュリティ ビットが設定されます。 セキュリティ ビットを設定してチップを読み取ろうとすると、PIC16C5X の場合、コードの上位 8 ビットは 0 として読み取られ、下位 4 ビットはコマンドの 12 ビットにスクランブルされます。 PIC16C84 の場合も同様に、最上位 7 ビットはゼロとして読み取られ、下位 7 ビットはコマンドのスクランブルされた 14 ビットを表します。 セキュリティ ビットが設定されている場合、PIC16C84 EEPROM データは読み取れません。 図 1 は、現在製造されているすべてのマイクロコントローラーとその簡単な特性を示しています。 (2-1 ページの図) PIC ファミリのマイクロコントローラには、わずか 35 個の命令で構成される非常に効率的な命令セットがあります。 条件付きジャンプとプログラム カウンタを変更する命令を除き、すべての命令は 2 サイクルで実行され、4 サイクルで実行されます。 4命令実行サイクルは1クロックサイクルで構成されます。 したがって、周波数 14 MHz では、命令の実行時間は 16 μs です。 各命令は 2 ビットで構成され、オペコードとオペランド (レジスタ、メモリ位置、即値データを使用した操作が可能) で分割できます。 PIC7.2CXX マイクロコントローラのコマンド セットを図 2 に示します。(569-XNUMX ページの表 XNUMX) PIC での高速コマンド実行は、従来のシングル バス フォン ノイマンの代わりに XNUMX バス ハーバード アーキテクチャを使用することによって実現されます。建築。 ハーバード アーキテクチャは、分離されたバスと命令およびデータ用のアドレス空間を備えた一連のレジスタに基づいています。 レジスタ セットとは、I/O ポート、メモリ セル、タイマーなどのすべてのソフトウェア オブジェクトが物理的に実装されたハードウェア レジスタであることを意味します。

PIC16CXX のデータ メモリ (RAM) は 8 ビット、プログラム メモリ (PROM) は PIC12C16X の場合は 5 ビット、PIC14CXX の場合は 16 ビットです。 ハーバード アーキテクチャを使用すると、ビット、バイト、レジスタの高速操作を実現できます。 さらに、ハーバード アーキテクチャでは、現在の命令の実行と次の命令の読み取りを同時に行う、命令のパイプライン実行が可能です。 従来のフォン ノイマン アーキテクチャでは、コマンドとデータは単一の共有バスまたは多重バスを介して転送されるため、パイプライン処理の可能性が制限されていました。 図 3 に、PIC16CXX デュアル バス構造のブロック図を示します。 (2-536 ページの図 B) ご覧のとおり、PIC16CXX を構成する内部の物理コンポーネントと論理コンポーネントは、これまでに扱ってきた他のマイクロコントローラと似ています。 したがって、PIC 用のプログラムの作成は、他のプロセッサの場合と同様に難しくありません。 ロジック、そしてロジックだけ…

もちろん、ハーバード アーキテクチャと大きなコマンド サイズにより、PIC コードを他のマイクロコントローラよりもはるかにコンパクトにすることができ、プログラムの実行速度が大幅に向上します。

PIC レジスタ セット PIC が操作できるすべてのソフトウェア オブジェクトは物理レジスタです。 PIC がどのように動作するかを理解するには、PIC にどのようなレジスタがあり、それぞれのレジスタをどのように操作するかを理解する必要があります。 図 4 に、PIC16C84 のすべてのレジスタを示します。 (3.7.1 ページの写真)

2-541) 一連の操作レジスタから始めましょう。 このセットは、間接アドレス レジスタ (f0)、タイマ/カウンタ レジスタ (f1)、プログラム カウンタ (f2)、ステータス ワード レジスタ (f3)、セレクト レジスタ (f4)、入出力レジスタ ( f5、f6)。

これらのレジスタはマイクロコントローラのソフトウェアでアクセス可能なオブジェクトの大部分を表すため、これらのレジスタの使用方法を理解することが不可欠です。 主に「内部でどのように行われるか」ではなく「管理方法」を理解する必要があるため、各レジスタの考えられる使用法を示す非常に簡単な例を含めました。

f0...INDIRECT ADDRESS REGISTER IND0 間接アドレスレジスタ f0 は物理的に存在しません。 f4 選択レジスタを使用して、64 個の可能なレジスタのうち XNUMX つを間接的に選択します。

f0 を使用する命令はすべて、f4 が指すデータ レジスタに実際にアクセスします。

f1... TMR0 タイマ/カウンタ レジスタ TMR0 タイマ/カウンタ レジスタは、他のレジスタと同様に書き込みおよび読み取りができます。 TMR0 は、RTCC ピンに印加される外部信号によって、またはコマンド周波数に対応する内部周波数によって増加できます。

タイマー/カウンターの主な用途は、外部イベントの数をカウントし、時間を測定することです。 外部または内部ソースからの信号は、PIC の内蔵プログラマブル分周器を使用して事前に分周することもできます。

f2...PCL プログラム カウンタ プログラム カウンタ (PC) は、14 ビット命令を含む一連のプログラム ROM セル アドレスを生成するために使用されます。 PC は 13 ビット容量を備えており、8Kx14 ROM セルを直接アドレス指定できます。 ただし、PIC16C84 の場合、物理的に利用できるセルは 1K セルのみです。 PC の下位 8 ビットは f2 レジスタを通じて読み書きでき、上位 5 ビットはアドレス 0Ah の PCLATCH レジスタからロードされます。

f3... ステータス レジスタ ステータス ワード レジスタは、ほとんどのマイクロプロセッサにある PSW レジスタと似ています。 これには、キャリー、XNUMX 進キャリー、ゼロ ビットのほか、イネーブル モード ビットとページング ビットが含まれます。

f4...FSR 選択レジスタ すでに述べたように、FSR 選択レジスタは間接アドレス指定レジスタ f0 と組み合わせて使用​​され、64 個の可能なレジスタのうち 36 つを間接的に選択します。 物理的に関係するのは、アドレス 0Ch ~ 2Fh にある 15 個のユーザー RAM レジスタと、異なるアドレスにある XNUMX 個のサービス レジスタです。

f5、f6... I/O レジスタ PORTA、PORTB レジスタ f5 および f6 は、PIC16C84 で使用可能な 5 つの I/O ポートに対応します。 ポート A には 4 ビット PA0 ~ PA85 があり、アドレス 8h の TRISA レジスタを使用して入力または出力として個別にプログラムできます。 ポート B には 7 ビット PB0 ~ PB86 があり、アドレス 1h の TRISB レジスタを使用してプログラムされます。 TRIS レジスタ ビットに XNUMX を設定すると、対応するポート ビットが入力としてプログラムされます。 ポートを読み取る場合は出力の即時状態が読み取られ、ポートに書き込む場合はバッファ レジスタ内で書き込みが行われます。

f8、f9...EEDATA、EEADR EEPROM レジスタ PIC16C84 には、EEDATA データ レジスタと EEADR アドレス レジスタを使用して読み書きできる 64 バイトの EEPROM が内蔵されています。 新しいバイトの書き込みには約 10 ミリ秒かかり、内蔵タイマーによって制御されます。 書き込みと読み取りの制御は、アドレス 1h を持つ EECON88 レジスタを通じて実行されます。 記録をさらに制御するには、アドレス 2h を持つ EECON89 レジスタが使用されます。

汎用レジスタ 汎用レジスタは、アドレス 0Ch ~ 2Fh にあるスタティック RAM です。 PIC16C84 では合計 36 個の RAM セルを使用できます。

特殊レジスタ W、INTCON、OPTION 最後に、特殊 PIC レジスタを見てみましょう。 これらには、ほとんどのコマンドでアキュムレータ レジスタとして使用される作業レジスタ W、INTCON および OPTION レジスタが含まれます。 INTCON 割り込みレジスタ (アドレス 0Bh) は、割り込みモードの制御に使用され、さまざまなソースからの割り込みイネーブル ビットと割り込みフラグが含まれています。 OPTION モードレジスタ (アドレス 81h) は、プリスケーラとタイマ / カウンタの信号源の設定、プリスケーラの分周率、RTCC の信号のアクティブエッジ、および割り込み入力の設定に使用されます。 さらに、OPTION レジスタを使用すると、入力としてプログラムされたポート B ビットに対して終端抵抗を有効にすることができます。

WDT WDT ウォッチドッグ WDT ウォッチドッグは、プログラムの偶発的な障害による壊滅的な結果を防ぐように設計されています。 ミスパルス検出器などのタイミングアプリケーションにも使用できます。 ウォッチドッグ タイマーを使用する考え方は、遅延時間が経過してプロセッサがリセットされなくなる前に、プログラムまたは外部の影響の制御下でウォッチドッグ タイマーを定期的にリセットすることです。 プログラムが正常に実行されている場合は、プロセッサがリセットされないように CLRWDT ウォッチドッグ リセット コマンドを定期的に実行する必要があります。 マイクロプロセッサが誤ってプログラムの限界を超えてしまった場合 (たとえば、電源回路の強い干渉によって)、またはプログラムの一部でスタックした場合、ウォッチドッグ リセット コマンドは十分な時間内に実行されない可能性が高く、プロセッサの完全なリセットが行われ、すべてのレジスタが初期化され、システムが動作状態になります。

PIC16C84 のウォッチドッグ タイマーは外付けコンポーネントを必要とせず、内蔵 RC 発振器で動作し、プロセッサ クロック周波数がない場合でも生成は停止しません。 一般的なウォッチドッグ期間は 18 ミリ秒です。 プリスケーラをウォッチドッグ タイマーに接続すると、その周期を最大 2 秒まで増やすことができます。

ウォッチドッグ タイマーのもう 16 つの機能は、プロセッサが SLEEP コマンドによって移行される低電力モードからプロセッサをオンにすることです。 このモードでは、PIC84C1 は非常に少ない電流 (約 XNUMX µA) を消費します。 ボタンを押す、センサーをトリガーするなどの外部イベント、またはウォッチドッグ タイマーによって、このモードから動作モードに切り替えることができます。

クロック ジェネレータ PIC ファミリのマイクロコントローラには XNUMX 種類のクロック ジェネレータを使用できます: XT 水晶共振子 HS 高周波水晶共振子 LP マイクロ消費型 RC クリスタル RC 回路チップ プログラミング プロセス。 XT、HS、および LP オプションが設定されている場合は、水晶またはセラミック共振子、または外部クロック ソースが超小型回路に接続され、RC オプションが設定されている場合は、抵抗とコンデンサが接続されます。 もちろん、セラミック、特に水晶共振子の方がはるかに正確で安定していますが、高いタイミング精度が必要ない場合は、RC ジェネレーターを使用するとデバイスのコストとサイズを削減できます。

リセット回路 PIC ファミリのマイクロコントローラは、発振器開始タイマーと組み合わせて内部パワーオン リセット回路を使用しており、ほとんどの状況で従来の抵抗やコンデンサが不要になります。

MCLR 入力を電源に接続するだけです。 電源投入時にサージやサージが発生する可能性がある場合は、100〜300オームの直列抵抗を使用するのが最善です。 電力の立ち上がりが非常に遅い (70 ミリ秒未満) 場合、または非常に低いクロック速度で実行している場合は、従来の抵抗とコンデンサのリセット回路を使用する必要があります。

理論から実践へ...

PIC ファミリのマイクロコントローラーを構成する主要な要素について簡単に説明しました。 それでは実践的な演習に移りましょう。

私たちは短いプログラムを書き、それをアセンブルし、超小型回路に書き込んで、何が起こるかを見てみましょう。

これを行うには、次のものが必要です。 - チップ PIC16C84。 - アセンブラMPALC; - PROPIC プログラマー; - 直流または交流 18 ~ 36 V の電源。 - 表示装置を備えたプロトタイピング ボード。

基本的な PIC16C84 コマンドの動作を示すために使用する表示デバイスの概略図を図 5 に示します (描画する必要があります)。ご覧のとおり、デバイスは電流制限抵抗を備えた 8 個の LED で構成されています。および周波数設定要素。 PIC ファミリのマイクロコントローラーの各出力は、追加のアンプなしで LED を直接制御できます。

PICとは何ですか?

まずは、例で使用する基本的なコードの説明から始めましょう。 プロジェクトのコードを書き始めるとき、ヘッダー セクション (ORG 0 行までのすべてのコード) はアプリケーションに固有のものでなければなりません。 ヘッダー セクションでは、プロジェクトで使用されるすべてのリソース (ポート、ビット変数、バイト変数、レジスター) の論理名を定義します。 また、ヘッダーは、次のコマンドの実行後にポート A と B のすべてのビットが出力として設定されるように I/O ポートを設定します。 MOVLW INITA MOVWF TRISA MOVLW INITB MOVWF TRISB 電源がオンになると、PIC16C84 は次のコマンドのすべてのビットを設定します。ポートA、Bに入力し、000h番地からプログラムの実行を開始します。 基本的なコードを図 6 に示します。 (描画する必要があります) 次のようなもの: ; デモ プログラムのサンプル ベース コード。 リスト P=16C84、E=2 ; ; ヘッダーセクション ; ; 動作レジスタの説明 TMR0 EQU 01h PC EQU 02h STATUS EQU 03h FSR EQU 04h ; I/O レジスタ CNTRLPORT EQU 05h DATAPORT EQU 06h ; RAM の位置 SCRATCH EQU 0Ch DIGIT EQU 0Dh ; レジスタビット STATUS C EQU 0h DC EQU 1h Z EQU 2h PD EQU 3h TO EQU 4h RP EQU 5h ; 制御レジスタ TRISA EQU 85h TRISB EQU 86h ; I/O ポートの初期化ワード INITA EQU B'00000000' INITB EQU B'00000000' ; ; 作業セクション; ; 実行可能コードの開始 ORG 0 GOTO BEGIN ; ORG 100h 開始 MOVLW INITA MOVWF TRISA MOVLW INITB MOVWF TRISB ; ; サンプルコードをここに貼り付けます。 終わり ; 基本的なコードについて説明する際、必要に応じて図 4 を参照してください。 まず、「;」で始まるすべての行は、アセンブラによってコメントとして扱われます。 TMR0 の式に移りましょう。 私たちはアセンブラに、単語 TMR0 が出現するたびに値 01h (01 進数の XNUMX) を置き換えるよう指示しました。 「EQU」という言葉は平等を意味します。 したがって、TMR0 に値 1h を割り当てました。 図 4 からわかるように、TMR0 レジスタには実際にアドレス 1h があります。 TMR01 レジスタをアドレス指定する場合は常に 0h を使用できますが、01h は常に RTCC を意味することを覚えておく必要があるため、デバッグがはるかに困難になります。 01h に等しいデータがある場合もあります。 記号名を使用するとあいまいさがなくなり、ソース テキストが読みやすくなります。 PC、STATUS、FSR レジスタの式も確認できます。 名前 PC はレジスタ アドレス 02h に対応し、名前 STATUS はレジスタ アドレス 03h に対応し、名前 FSR はレジスタ アドレス 04h に対応します。 また、I/O ポートには、CNTRLPORT (05h) および DATAPORT (06h) という名前が付けられています。 RAM セルにも名前を付けることができます。 0Ch のセルには「SCRATCH」、0Dh のセルには「DIGIT」という名前を選択しました。 このテキストを最後まで読むと、この名前は定義されていますが、どこにも PC を直接使用していないことがわかります。 これに間違いはありません。名前を定義してから使用しないこともできますが、もちろん、事前に定義されていない名前は使用できません。 これについてはあまり心配しないでください。アセンブラの仕事はテキストをすべてのルールに照らしてチェックすることであり、何かが一致しない場合はエラー メッセージが表示されます。 レジスタに名前を付けるだけでなく、レジスタ内の個々のビットに名前を付けることもできます。 STATUS レジスタを設定するセクションに注目してください。 図 7 に、STATUS レジスタの構成を示します。 (3.9.1-2 ページの図 544) C (CARRY) は STATUS ステータス ワードのビット 0 であるため、シンボル C は XNUMXh に設定されます。 CARRY ビット (ビット 0) をチェックする必要があるたびに、事前定義された文字「C」を使用します。 ビット 2 または ZERO ビットにアクセスする場合は常に、02h の代わりに文字「Z」を使用します。 後ですべてのレジスタを使用しない場合でも、レジスタの完全なビット構造を定義できます。 これで、レジスタがどのように記述されるかが明確になり、実行可能コードに進むことができます。 実行可能コードを開始する前に、ORG 式を 0 に設定する必要があります。 これは、この式に続くコードが EEPROM アドレス XNUMX から始まるアセンブラへのポインタです。 「ORG」式は、EEPROM サイズ内の異なるアドレスにコード セグメントを割り当てるために使用されます。 ORG 式 100h で示されるように、アドレス 100h の BEGIN ラベルの前に別の ORG 式が発生します。 実行可能コードは END ディレクティブで終わる必要があります。これは、このディレクティブの後に実行可能コマンドがないことを意味します。 電源投入時に、PIC16C84 はアドレス 000h にジャンプします。 プロセッサによって実行される最初の命令は GOTO BEGIN コマンドで、制御をアドレス 100h に転送し、このアドレスからさらなる作業が続行されます。 BEGIN は、アセンブラが参照として使用する、ユーザーが選択できるラベル名 (ラベルは常に最初の行位置から開始する必要があります) です。 動作中に、アセンブラは BEGIN ラベルの場所を決定し、この名前が再び見つかった場合にはラベルのアドレスがその名前に置き換えられることを記憶します。 CALL および GOTO コマンドは、ソース テキスト内のリンクのラベルを使用します。 次に、プロセッサによって実行される次のコマンドを見てみましょう。 MOVLW INITA 命令は、名前 INITA に割り当てられた値を作業レジスタ W にロードします。 この値はヘッダーで指定され、B'00000000'、つまり 00h と等しくなります。 文字 B' は、データがバイナリ形式で与えられていることを意味します。 同じ場所に 0 (0 進数) または XNUMXh (XNUMX 進数) を書き込んでも、同じ結果が得られます。 レジスタ内のビットを使用した演算が予想される場合は、バイナリ表現を使用すると便利です。 次の MOVWF TRISA 命令は、作業レジスタ W の値を TRISA ポート A 構成制御レジスタにロードします。 このレジスタのビットを 0 に設定すると、対応するポート A のビットが出力であることが指定されます。 この例では、ポート A のすべてのビットが出力に設定されています。 ポート A には 5 ビットしかなく、同じく 3 ビットを持つ TRISA レジスタに書き込まれる値の上位 5 ビットは使用されないことに注意してください。 たとえば、ポート A の下位ビットを入力として設定したい場合は、レジスタの説明セクションで INITA の値を B'00000001' に設定します。 プログラムの実行中、たとえば双方向送信中など、個々のポート ビットの割り当てを再定義する必要がある場合は、INITA および INITB の場合と同様に、必要なすべての構成ワードを説明セクションで指定するのが最も便利です。 次の XNUMX つのコマンド MOVLW INITB および MOVWF TRISB は、ポート B の構成を定義します。 この場合、INITB も 0h であるため、MOVLW INITB コマンドを記述しないことでコストを節約できます。 ただし、後で XNUMX ビットの割り当てを変更する必要がある場合に、見つけにくいエラーが発生する可能性があるため、これは実行しませんでした。 XNUMX つのポートで XNUMX ビットだけを変更するのではなく、XNUMX つのポートで同じ番号の XNUMX つのビットが変更されます。 したがって、プログラムが完成していない間はそのような節約を行うことは望ましくありませんが、最終的にはコード最適化の段階でそのような繰り返しを削除できます。 私たちはすでに何をしましたか? 1. EQU 行で、どのシンボル名を使用するかをアセンブラに伝えました。 2. リセット ベクタをアドレス 000h に設定しました。 3. プログラム実行の開始アドレスをラベルBEGINからアドレス100hに設定しました。 4. ポート A と B のすべてのビットを出力として構成しました。 これで、「ここにサンプル コードを挿入」というコメント行の代わりに、ヘッダーとベース コードの末尾の間にサンプル コードを挿入できるようになりました。 この行を実際のコマンドに置き換え、結果として得られるプログラムをアセンブルし、マイクロ回路に書き込み、指示装置を備えたプロトタイピング ボード上でマイクロ回路を再配置し、何が起こるかを確認します。 最初のプログラム 最初のプログラムに必要なコマンドは XNUMX つだけです: MOVLW k MOVWF f GOTO k これらのコマンドは基本コードのヘッダーですでに使用しています。 MOVLW 命令は、バイト リテラルまたは定数を W ワーク レジスタにロードします。 次の MOVWF 命令は、作業レジスタ W から指定されたレジスタ f にバイトを移動します。 GOTOコマンドは、制御をアドレスkに転送します。 次のプログラムは、値 01010101 を作業レジスタ W に書き込み、その内容をポート B に書き込みます。 このプログラムを開始すると、XNUMX つの LED が光るのがわかります。 MOVLW B'01010101' ; レジスタ W に 01010101 をロード MOVWF DATAPORT ; ポート B (DATAPORT) に W を書き込みます GOTO $ ; 永久ループ アセンブラ指令 "$" は、プログラム カウンタ (PC) の現在値を意味します。 したがって、GOTO $ コマンドは、現在いる場所にジャンプすることを意味します。 このようなループは、(中断以外に) 抜け出す方法がないため、無限です。 GOTO $ コマンドは、デバッグ中にコードを停止するためによく使用されます。 アセンブリ マクロ アセンブラ MPALC を使用します。MPALC は MICROCHIP によって無料で配布されており、必要な機能がすべて含まれています。 別のアセンブラーを使用したい場合は、その説明を使用してプログラムをアセンブルしてください。 MPALC マクロ アセンブラを実行するコマンド ラインは非常に単純です。 MPALC <source_text> [options] ここで、<source_text> はアセンブルするソース テキストを含むファイルの名前であり、非常に多くのオプションを指定できます。 オプションの完全な説明は、アセンブラによってオプション /? で提供されます。 最初はオプションを指定する必要はありません。 まだ行う必要がある唯一のことは、プログラムが作成されるプロセッサのタイプと、アセンブラが生成するエラーのタイプを指定することです。 これは、LIST アセンブラ ディレクティブを使用して行われます (図 XNUMX)。 6)。 デフォルトのソース ファイル拡張子は .ASM です。 別の拡張子を明示的に指定する必要があります。 したがって、図 6 に示すテキストを含む EXAMPLE.ASM ファイルを取得し、アセンブラを実行します。 MPALC 例 アセンブラの結果、次の拡張子を持つファイルが作成されます。 * OBJ オブジェクト ファイル * LST リスト ファイル * ERL エラー警告ファイル * SYM シンボル ファイル オブジェクト ファイルは 16 進形式で作成され、チップに書き込む必要があるコードが含まれています。 リスト ファイルには、プログラムの完全なリストとブート コードが含まれています。 エラーおよび警告ファイルには、組み立てプロセス中に発生するすべてのエラーおよび警告が記録されます。 これらはリスト ファイルにも存在します。 シンボリック ファイルに書き込まれるシンボリック ラベルのテーブルは、デバッガでさらに作業することを目的としています。 プログラムの処理後、アセンブラは、エラーが見つからなかったことを意味する「アセンブラによってエラーは見つかりませんでした」というメッセージを発行するはずです。 エラー ファイルは作成されていないはずです。 アセンブラがエラー メッセージを生成した場合、または EXAMPLE.OBJ、EXAMPLE.LST、および EXAMPLE.SYM ファイルが作成されなかった場合は、すべてが正しく行われたかどうかを再度確認してください。 プログラミング これでオブジェクト ファイル EXAMPLE.OBJ が完成しました。これをチップに書き込む必要があります。 記録はプログラマーと PROPIC プログラムの助けを借りて実行されます。 PROPIC プログラムを実行するコマンド ラインは、アセンブラを実行するコマンド ラインと似ています。 PROPIC <object_file> [options] ここで、<object_file> はアセンブラによって作成されたオブジェクト ファイルの名前であり、オプションは書き込みモードを決定します。チップ。 オプションのリストは、オプション /? で指定されます。 アセンブラの場合と同様に、最初はオプションを指定する必要はありません。 プログラマを手に取り、そのケーブルをプリンタ ポート コネクタ (マシンに 2 つまたは 3 つのプリンタ ポートがある場合は、最初のプリンタ ポート) に接続します。

PICとは何ですか? PICとは何ですか?

最大 18 mA を供給できる 36 ~ 100 V DC または AC 電源をプログラマに接続します。 PIC16C84 チップを準備しますが、まだプログラマ ソケットには挿入しないでください。 これでプログラマを起動できます。

PROPIC EXAMPLE { プログラマのプログラムがどのように動作するかについて、ここに挿入する必要があります。 これでプログラムされたチップが完成し、それがどのように動作するかを確認できます。 テスト

ブレッドボードを用意して、図 5 に示す回路を組み立てます。この回路には重要な部品はありません。 すべての抵抗は公称値から + -30% の偏差を持つ可能性があります。LED は定格電流が 10 mA 以下です。 PIC16C84 チップを取り付けるには、ソケットを使用します。 回路に電力を供給するには、マイクロ回路をプログラムするときに使用したものと同じ電源を使用できます。 実験室用の 5 V 電源を使用することもでき、この場合、KR142EH5A スタビライザ、ダイオードブリッジ、電解コンデンサは不要となり、図の 5 点に 2 V の電圧が供給されます。

回路を組み立てた後、すべてが正しく組み立てられていること、LED が正しい極性で取り付けられていること、マイクロ回路への電力が正しいピンと正しい極性で供給されていることを注意深く確認してください。 プログラムされたチップを取り出し、ブレッドボードのソケットに挿入し、電源を入れます。 4 つの LED が (XNUMX つ後に) 点灯するはずです。 最初のプログラムは機能しています! PICコマンドセット

プログラムをアセンブルし、チップに書き込み、ブレッドボードでテストする方法を学習したので、PIC ファミリ マイクロコントローラの命令セット全体の説明に進むことができます。 ここで説明するほぼすべての内容は、PIC ファミリの他のマイクロコントローラにも当てはまりますが、引き続き PIC16C84 に焦点を当てていきます。 説明の過程で、特定のコマンドがどのように機能するかをよりよく理解するために短いプログラムを作成します。 これらのプログラムをベース コードに接続し、アセンブルしてチップ上に配置し、チップをブレッドボードに接続して、それがどのように動作するかを確認できます。 次の段落ですべてが完全に理解できる場合は、それを試すことはできませんが、そのまま次の段落に進んでください。 NOP

NOP コマンドから説明を始めましょう。 このコマンドは何も行わないため、出力を確認するのは困難です。 この命令は通常、時間遅延ループで使用されるか、プログラムの特定のセクションの実行時間を微調整するために使用されます。 CLRW

このコマンドは、作業レジスタ W をクリアします。例に XNUMX 行を追加して、すべての LED が点灯することを確認してみましょう。

MOVLW B'01010101' ; 01010101 をレジスタ W にロードします

CLRW ;レジスタWをクリア

MOVWF DATAPORT ;ポート B (DATAPORT) に W を書き込みます

GOTO $ ;永久ループ CLRF f

CLRF は、CLRW が作業レジスタ W に対して行うのと同じことを、任意のレジスタに対して行います。次のコマンドは、ポート B を 0h に設定します。

CLRF DATAPORT ;ポート B (DATAPORT) をクリア SUBWF f,d ADDWF f,d

任意のレジスタ f から作業レジスタ W を減算します。 このコマンドは、STATUS レジスタの CARRY、DIGIT CARRY、および ZERO フラグも設定します。 コマンドの実行後、これらの符号をチェックして、結果がゼロ、正、または負であるかどうかを判断できます。 カンマの後の文字 d は、コマンドの結果が配置されるアドレスを意味します。 d=0 の場合、結果はワーク レジスタ W に格納され、d=1 の場合、結果はコマンドで使用されるレジスタ f に書き込まれます。

この例では、値 0FFh が SCRATCH レジスタにロードされ、値 01h が W レジスタにロードされます。 次に、SUBWF コマンドが実行され、結果が LED に表示されます。

MOVLW 0FFh ;0FFhをレジスタWにロード

MOVWF SCRATCH ; W の内容を SCRATCH レジスタにロードします

MOVLW 01h ; 01h をレジスタ W にロードします

SUBWF SCRATCH,0 ;subtract LED には 11111110 が表示されます。1 がオフ、0 がオンです。

ADDWF コマンドはまったく同じように機能し、作業レジスタ W を任意のレジスタ f に追加し、同じフラグを設定します。 次の例は、ADDWF コマンドがどのように機能するかを示しています。

MOVLW 0h ; 0をレジスタWにロードします

MOVWF SCRATCH ; W の内容を SCRATCH レジスタにロードします

MOVLW 1h ; 01h をレジスタ W にロードします

ADDWF SCRATCH,0 ;追加を行う LED には 00000001 が表示されます。

減算の例では、FFh 値の前に「0」があることに注意してください。 アセンブラの記号「0」は、これがラベルではなく数値であることを意味します。 シンボル 0 がない場合、アセンブラは FFh という名前のラベルを探し始めますが、このラベルはこのプログラムには存在しないため、エラーが発生します。 値 0FF の後の文字「h」は、値が XNUMX 進形式で指定されていることを意味します。 SUBLW k ADDLW k

これら 5 つのコマンドは、作業レジスタ W とコマンドで指定されたバイト定数の間で演算が実行される点を除いて、上で説明したものとまったく同じように機能します。 SUBLW コマンドは定数 k から作業レジスタ W を減算し、ADDLW コマンドは定数 k に作業レジスタ W を加算します。 これらのコマンドは、CARRY、DIGIT CARRY、および ZERO フラグも設定します。 コマンドの結果は作業レジスタ W に配置されます。次の例では、SCRATCH を XNUMX だけデクリメントします。

MOVLW 0FFh ;0FFhをレジスタWにロード

MOVWF SCRATCH ; W の内容を SCRATCH レジスタにロードします

SUBLW 05h ;作業レジスタから 5 を減算します

MOVWF SCRATCH ;SCRATCH の新しい内容をロード LED には 11111010 が表示されるはずです。 DECF f,d INCF f,d

DECF コマンドは指定されたレジスタを 1 だけデクリメントし、INCF は指定されたレジスタを 1 だけインクリメントします。結果は指定されたレジスタ (d=1 の場合) または作業レジスタ W (d=0 の場合) に戻すことができます。 これらのコマンドの実行により、STATUS レジスタにゼロ符号を設定できます。 これらのコマンドの使用例を次に示します。

MOVLW 0FFh ;0FFhをレジスタWにロード

MOVWF SCRATCH ; W の内容を SCRATCH レジスタにロードします

DECF SCRATCH,0 ;SCRATCH を 1 だけデクリメントします

この例では、SCRATCH を 0 から 1 に増加させます。

CLRF スクラッチ ;スクラッチをクリア

INCF SCRATCH,0 ;SCRATCH を 1 ずつインクリメント IORWF f,d ANDWF f,d XORWF f,d

これら 0 つのコマンドは、論理演算 OR、AND、および EXCLUSIVE OR を実行します。 論理和 OR 演算は、レジスタ内の個々のビットを設定するために最もよく使用されます。 これらのビットは、論理 AND 演算によってリセットされます。同じビットに対して EXCLUSIVE OR 演算を実行すると、結果は 1 になります。したがって、EXCLUSIVE OR 演算は、オブジェクト内の特定のビットのステータス (セットまたはクリア) をチェックするためによく使用されます。登録。 次の手順では、IORWF コマンドを使用してポート B のビット XNUMX を設定します。

CLRF DATAPORT ;ポート B をクリア

MOVLW B'00000010' ;レジスタ W にマスクを設定します

IORWF DATAPORT,1 ;マスク W によってポート B のビットを設定

GOTO $ ;ループを永遠に LED には 00000010 が表示されるはずです。次に、ANDWF 命令を使用して 2 ビットをクリアします。

MOVLW B'11111111' ;0FFhをWレジスタにロード

MOVWF DATAPORT ;ポート B のすべてのビットを設定します

MOVLW B'00000101' ;レジスタ W にマスクを設定します

ANDWF DATAPORT,1 ; マスク W によりポート B のビットをクリア

GOTO $ ;ループを永遠に LED には 00000101 が表示されるはずです。

SCRATCH レジスタを使用し、それが 04h に等しいかどうかを知りたいとします。 XORWF コマンドを使用する良い機会です。

MOVLW 04h ; 04h をレジスタ W にロードします

MOVWF SCRATCH ;SCRATCH にレジスタ W をロード

XORWF SCRATCH,0 ; W と SCRATCH が等しいかどうかを確認する SCRATCH と W が等しいため、XORWF 演算の結果はゼロになります (すべての LED が点灯します)。 STATUS レジスタは ZERO ビットを設定し、実際のプログラムがそれをチェックして処理できるようになります。 IORLW k ANDLW k XORLW k

これら XNUMX つのコマンドは、作業レジスタ W とコマンドで指定されたマスクの間で操作が実行されることを除いて、上で説明した対応するコマンドと同じアクションを実行します。 コマンドの実行結果は作業レジスタ W に格納されます。次に例を示します。

MOVLW 0FFh ;0FFhをレジスタWにロード

ANDLW 040h ;6 番目のビットを残す LED には 01000000 が表示されます。

MOVLW 10h ; 10h をレジスタ W にロードします

IORLW 09h ;ビット 0 と 3 を設定すると、LED に 00011001 が表示されます。

MOVLW B'00100000' ;レジスタ W に 40h をロードします

XORLW B'11111111' ;W LED が 11011111 を表示します。MOVF f,d

このコマンドは主にレジスタを作業レジスタ W (d=0) に移動するために使用されます。 d=1 に設定すると、このコマンドはレジスタをそれ自体にロードしますが、STATUS レジスタの ZERO ビットはレジスタの内容に従って設定されます。 たとえば、SCRATCH レジスタ 0Fh にロードし、次に SCRATCH レジスタを作業レジスタ W にロードしたいとします。

MOVLW 0Fh ; 0Fh を作業レジスタ W にロードします

MOVWF SCRATCH ;SCRATCH にレジスタ W をロード

CLRW ;クリアW

MOVF SCRATCH,0 ;SCRATCHをWレジスタにロード

MOVF SCRATCH,1 条件が満たされると (SCRATCH = 0h)、STATUS レジスタの ZERO ビットがセットされます。 COMF f、d

このコマンドは、指定されたレジスタを反転します。 d=0 の場合、結果は作業レジスタ W に入力され、d=1 の場合、指定されたレジスタの内容が反転されます。 例として、値 01010101 を反転してみましょう。

MOVLW B'01010101' ; 01010101 をレジスタ W にロードします

MOVWF SCRATCH ;SCRATCH にレジスタ W をロード

COMF SCRATCH,0 ;SCRATCH LED を反転すると、10101010 が表示されます。 DECFSZ f,d INCFSZ f,d

PIC アセンブラの経験を積むと、これらのコマンドを頻繁に使用するようになります。 d=1 の場合、DECFSZ 命令は 0 だけデクリメントされ、INCFZ は指定されたレジスタを XNUMX だけインクリメントし、レジスタが XNUMX になった場合は次の命令をスキップします。 d=XNUMX の場合、結果は W レジスタに書き込まれ、作業レジスタ W がゼロになると次のコマンドはスキップされます。 これらのコマンドは、時間遅延、カウンター、ループなどを生成するために使用されます。 ループの典型的な使用例を次に示します。

MOVLW 0FFh ;FFhをレジスタWにロード

MOVWF SCRATCH ;レジスタ W を SCRATCH LOOP にロードします

DECFSZ SCRATCH,1 ;SCRATCHを 1 だけデクリメントします

GOTO LOOP ; = 0 になるまでループバックします

MOVF DIGIT ;W に DIGIT レジスタをロード

MOVWF DATAPORT ;LED への出力

DECF DIGIT,1 ;DIGIT レジスタを 1 ずつデクリメントします

GOTO START ;go to start その結果、LED は異なる速度で点滅します。 下位の LED が最も頻繁に点滅し、上位の LED が最も点滅しません。 クロック周波数が 4 MHz の場合、最上位の LED の点滅周波数は約 8 Hz となり、次の LED は 0 倍の頻度で点滅します。 では、どうやってそれを行ったのか見てみましょう。 ここでの DECFSZ コマンドは、DECFSZ と GOTO LOOP の 255 つのコマンドで構成される遅延ループで機能します。 SCRATCH レジスタに 4FFh をプリロードしたため、このループは SCRATCH がゼロになるまで 1 回実行されます。 クロック周波数が 2 MHz の場合、255 μs/命令 * 510 命令 * 1 = 256 μs の遅延が生じます。 DIGIT レジスタには事前に何も書き込んでいないため、最初のパスで LED に表示される値は何でもよいでしょう。 次に、DIGIT レジスタが 130 減算され、ループが最初から繰り返されます。 その結果、DIGIT レジスタは XNUMX サイクルですべての値を反復処理します。 約XNUMXミリ秒間。

SCRATCHレジスタにロードする値をFFhから0hに変更することで、INCFSZ命令でも同じコードを使用できます。 DECF コマンドを INCF コマンドに置き換えると、LED は同じように点滅します。 SWAF f、d

このコマンドは、任意のレジスタ内のニブルを交換します。 他のコマンドについては、d=0 の場合は結果がワークレジスタ W に書き込まれ、d=1 の場合はワークレジスタに残ります。 このコマンドの簡単な使用例を次に示します。

MOVLW B'00001111' ; 0Fh をレジスタ W にロードします

MOVWF SCRATCH ;SCRATCH にレジスタ W をロード

SWAPF SCRATCH,0 ;スワップニブル LED には 11110000 が表示されます。 RRF f,d RLF f,d

PIC アセンブラには 0 つのシフト命令があります。1 つは RRF レジスタの CARRY ビットによる右シフト、もう 8 つは RRF レジスタの CARRY ビットによる左シフトです。 他のコマンドについては、d=XNUMX の場合はシフト結果が W レジスタに書き込まれ、d=XNUMX の場合はレジスタに残ります。 シフト命令は、乗算と除算の演算、シリアル データ転送などの目的で使用されます。 いずれの場合も、シフトの方向に応じて、XNUMX ビット レジスタからシフトアウトされたビットは STATUS レジスタの CARRY ビットに書き込まれ、CARRY ビットはレジスタの他端に書き込まれます。 左シフトは RLF CARRY をレジスタの最下位ビットに書き込み、右シフトは RRF CARRY をレジスタの最上位ビットに書き込みます。

CLRF STATUS ;STATUSレジスタをクリア

MOVLW 0FFh ;0FFhをレジスタWにロード

MOVWF SCRATCH ;SCRATCH にレジスタ W をロード

RRF SCRATCH,0 ;shift right CARRY が上位ビットにロードされているため、LED には 01111111 が表示されるはずです。 次に、左側に移動しましょう。

CLRF STATUS ;STATUSレジスタをクリア

MOVLW 0FFH ; 0FFh をレジスタ W にロードします

MOVWF SCRATCH ;SCRATCH にレジスタ W をロード

RLF SCRATCH,1 ;左にシフト LED には 11111110 が表示されるはずです。 BCF f,b BSF f,b

BCF ビットのクリアおよび BSF ビットの設定コマンドは、レジスタ内の個々のビットを操作するために使用されます。 パラメータ b は、演算が実行されるビット番号を意味し、0 から 7 までの値を取ることができます。BCF コマンドを使用して LED を点灯してみます。

MOVLW 0FFh ;0FFhをレジスタWにロード

MOVWF DATAPORT ;LED をオフにする

BCF DATAPORT,7 ;ポート B のビット 7 をクリア

GOTO $ ;ループ永久 これにより、ビット 7 に対応する LED が点灯します。マスクと ANDWF コマンドを使用して同じことを行ったことを思い出してください。 違いは、ANDWF 命令と IORWF 命令では、マスクを作成して何らかのレジスタに格納する必要がありますが、同時に複数のビットを同時にセットまたはクリアできることです。 BCF 命令と BSF 命令は XNUMX ビットのみを操作します。 また、BCF 命令と BSF 命令は STATUS レジスタを変更しないため、後でステータス レジスタを確認する必要がない場合によく使用されます。 BTFSC f,b BTFSS f,b

条件付きジャンプ命令 BTFSC および BTFSS は、任意のレジスタ内の特定のビットのステータスをチェックし、結果に応じて次の命令をスキップします。 BTFSC コマンドは、指定されたビットがクリアされている場合はコマンドをスキップし、ビットが設定されている場合は BTFSS コマンドをスキップします。 簡単な例を次に示します。

MOVLW 0FFh ;0FFhをレジスタWにロード

MOVWF DATAPORT ;LED をオフにする

MOVLW B'00000001' ;レジスタ W に 01h をロードします

MOVWF SCRATCH ;レジスタ W を SCRATCH LOOP にロードします

BTFSS CNTRLPORT,0 ;CNTRLPORT のビット 0 を確認してください

GOTO LOOP ;ビット 0 が設定されるまで待機します

BCF DATAPORT,7 ;LEDをオンにする

GOTO $ ;ループ永久 この例では、ポート A (チップ ピン 0) のビット 17 をチェックし、このピンが High に設定されている場合、LED をオンにします。 この例では、BTFSS を BTFSC に置き換えてみます。 ポート A のビット 0 が Low になると LED が点灯します。

前に、STATUS レジスタのステータス ビットをチェックできる可能性について述べました。 これは、BTFSS および BTFSC コマンドでも実行できます。

;CARRYビットをチェックする

BTFSS STATUS,C ; C が設定されている場合は、GOTO をスキップします

どこへでも移動 ; ZERO ビットも同様にチェックされます。

;チェックビットゼロ

BTFSS STATUS,Z ; Z が設定されている場合は、GOTO をスキップします

どこへでも移動 ; これらの例は非常に頻繁に使用されると言っても過言ではありません。 電話をかけ、折り返します

これら 2 つのコマンドは、サブルーチンを操作することを目的としています。 CALL コマンドはコマンドで指定したアドレスのサブルーチンにジャンプするために使用され、RETURN コマンドはサブルーチンから戻るために使用されます。 どちらのコマンドも 8 サイクルで実行されます。 CALL コマンドが配置されたアドレスは、スタックと呼ばれる特別に構成されたレジスタに格納されます。 これらのレジスタにはアクセスできず、サブルーチンの呼び出しと戻りにのみ使用されます。 スタックの深さ、つまり特殊レジスタの数は 8 です。したがって、メイン プログラムからは XNUMX 個を超えてネストされたサブルーチン呼び出しを行うことはできません。 サブルーチンが戻った後、CALL の後の次の命令から実行が続行されます。 W レジスタと STATUS レジスタはサブルーチンの呼び出し時に保存されないため、必要に応じて別のメモリ位置に保存できます。 サブルーチンを使用する簡単な例を次に示します。

BSF DATAPORT,7 ; LEDをオフにする

CALL TURNON ;サブルーチンを呼び出す

GOTO START ; スタートに移動 TURNON

BCF DATAPORT,7 ;LEDをオンにする

RETURN ; サブルーチンから戻る その結果、LED は約 150 kHz の周波数で点滅します。 RETLWからRETFIEへ

サブルーチンから戻るためのコマンドがさらに XNUMX つあります。 RETLW コマンドは、このコマンドで指定された定数を作業レジスタ W に返し、RETFIE コマンドは割り込みを有効にします。 RETLW コマンドは、値のテーブルを作成するためによく使用されます。 作業レジスタ W にテーブルの先頭からのオフセットが含まれるとします。 その後、次の手順で目的の要素を取得できます。

MOVLW 02h ;オフセットを設定

CALL SHOWSYM ;サブルーチンを呼び出す

MOVWF DATAPORT ;テーブル要素をポート B に出力します

GOTO $ ;永久ループ SHOWSYM

ADDWF PC ;テーブルオフセットを計算

RETLW 0AAh ;テーブルの最初の要素

RETLW 0BBh ;テーブルの 2 番目の要素

RETLW 0CCh ;3 番目のテーブル エントリ LED には 10111011 が表示されるはずです。 特殊コマンド

CLRWDT と SLEEP という XNUMX つの特別なコマンドについて触れておく必要があります。 CLRWDT コマンドはウォッチドッグ タイマーをリセットすることを目的としており、その目的についてはすでに説明しました。 XNUMX つの隣接する CLRWDT 命令の間のプログラムの実行時間がウォッチドッグ タイマーを超えないように、この命令はプログラムのそのようなセクションに存在する必要があります。 SLEEP コマンドは、プロセッサを低電力モードにすることを目的としています。 このコマンドを実行すると、プロセッサ クロック ジェネレータがオフになり、プロセッサはリセット入力、ウォッチドッグ タイマー、または割り込みによって動作モードに戻ることができます。 結論

この記事は、PIC16C84 マイクロコントローラの機能を完全に説明したものではありません。 これを行うには、その技術的な説明を読む必要があります。 また、MPALC アセンブラ、マクロ、オプションなどのあらゆる可能性を理解すること。 彼のマニュアルを読むと役に立つでしょう。 必要なオプションをすべて正しく設定するには、プログラマの使用説明書を読む必要があります。 マイクロコントローラーの応用例は、独立したプロジェクトのための強固な基盤を提供します。 ご質問がある場合は、MICROCHIP 製品の地域サポート センター (モスクワ、ルブツォフスカヤ ナブ) までお問い合わせください。 3オフィス502、電話。 (095)-263-9930 ここでは、あらゆる質問にいつでもお答えします。 (095)-162-8405 に電話して、地域の掲示板でソフトウェアの新しいバージョン、アプリケーション例、参考情報を入手することもできます。

ADマイクロBBS

出版物:N。ボルシャコフ、rf.atnn.ru

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

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

<<戻る

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

庭の花の間引き機 02.05.2024

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

最先端の赤外線顕微鏡 02.05.2024

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

昆虫用エアトラップ 01.05.2024

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

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

新しい戦闘機エアバス 25.01.2019

ダッソー・アビエーションとエアバスは、次世代戦闘機に焦点を当てたフューチャー・エア・コンバット・システム(SCAF)の最初の研究契約を締結した、と両社は水曜日の声明で述べた。

共同研究の開始は、フランスのフローレンス・パルリ国防相とドイツのウルスラ・フォン・デア・ライエンの同僚によって発表されました。 20 年間の研究作業は 2019 年 65 月 XNUMX 日に開始される予定で、費用は XNUMX 万ユーロです。

「今日、ドイツの同僚の面前で、SCAF のコンセプトとアーキテクチャに関する最初の契約についてお知らせします」と Parley 氏は述べています。 一方、フォン・デア・ライエンは、フランスとドイツが「自国の利益と欧州連合の利益のために協力を深めている」という事実に注目を集めました。

研究の一環として、将来の軍用機のサイズとデザイン、最高速度、技術装備などを決定することが計画されています。

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

▪ スライダーなしで明るさをコントロール

▪ チューインガムの永遠の味

▪ 特殊部隊の外骨格

▪ タッチセンサーB6TSの追加機能

▪ 精製水は有毒になる可能性があります

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

 

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

▪ サイトの「応急処置の基礎 (OPMP)」セクション。 記事の選択

▪ 記事 恥ずかしがらないでください! どうしたんだ? これは多くの人にとって輝かしい道です。 人気の表現

▪ 記事 塩水はどの川に流れますか? 詳細な回答

▪ 記事 Periscope で全方位の視認性を実現。 子ども科学実験室

▪ 記事 情報の音声出力を備えたオンボード制御システム。 無線エレクトロニクスと電気工学の百科事典

▪ 記事 変位電流とその磁場。 無線エレクトロニクスと電気工学の百科事典

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

Имя:


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


コメント:





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

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

www.diagram.com.ua

www.diagram.com.ua
2000-2024