学習メモ | 遅延に基づく LED 点滅 | u16 とは | a-- と --a の違い | STC32G マイクロコントローラーのビデオ開発チュートリアル (Brother Chong) | エピソード 6 (パート 1): LED 点滅の実装

まとめ

1. 遅延に基づいて LED を点滅
2. 関数の使用
3. 新しいファイルを作成し、モジュール式プログラミングを使用

ソフトウェアの更新

開くと、バージョンの更新があることを通知するメッセージが表示されるため、時間内に最新バージョンに更新する必要があります。今すぐダウンロードすることを選択し、保存パスを選択して実行します。
最新バージョンは 6.92a です。実行可能ファイルを選択してデスクトップのショートカットに送信します。
ここに画像の説明を挿入
新しいバージョンのソフトウェアについては、データ ダウンロードで最新バージョンのマニュアル (8-15) をダウンロードしてください。
ここに画像の説明を挿入

ここに画像の説明を挿入

ちらつきとは何ですか

百度百科事典の解釈によると
「点滅」は中国語の単語、ピンイン: shƎn shuò です。定義: 光が不安定に揺れたり、点滅したりすることを指します。(話すことで) ちょっとしたアイデアを示しますが、それを明確に説明することを拒否します。物体がちらつき、現れたり変化したり、明らかにしたり、現れたりします。南朝梁の王生如の『忠氏碑』より:「太陽は明るく輝き、態度は明瞭で朗々としています。」 1. 遅延に基づいた LED の
点滅
ここに画像の説明を挿入

目覚まし時計の中央に 2 つの点があります。2 つの点は常に点滅しています。0.5 秒間点灯し、0.5 秒間消灯し、0.5 秒間消灯します。この点灯と消灯のプロセスは、遅延機能を使用して点滅を実現します
。 LEBのプロセス。
1 秒 = 1000 ミリ秒 = 1000 000 マイクロ秒、0.5 秒 = 500 ミリ秒 = 500 000 マイクロ秒

サンプル プロジェクトをコピーし、名前を LED Blink に変更し、次のステートメントを追加します。

#define MAIN_Fosc 24000000UL 定义IRC系统时钟24M,方便下载时选择,定义的名称写在前面。

IRC システム クロックを定義します。これは、ダウンロード時の選択に便利で、表示および変更にも便利です。プログラム エラーを防ぐために、ISP の IRC 周波数とシステム クロックの IRC 周波数は一致している必要があります。
ここに画像の説明を挿入
ここに画像の説明を挿入

void delay_ms(u16 ms)
{
    u16 i;
    do{
        i = MAIN_Fosc / 6000;
        while(--i);
    }while(--ms);
}

ヒント: U16 とは何ですか?

u16 を選択し、右クリックして選択します: 「u16' の定義に移動」、u16 の定義ヘッダー ファイル stc.h に移動します:
ここに画像の説明を挿入
typedef unsigned int u16; //定義された名前は、「#」を除いて最後に書き込まれます。先頭に符号、末尾に "" ;" 符号。
コンパイラ (つまり、この KEIL C251) は、記述した "u16" を "unsigned int" に置き換えます。値の範囲は、
u16 値 0 ~ 65535 です。
次に、 do...while ループを使用します。

 do{
          i = MAIN_Fosc / 6000;
          while(--i);
     }while(--ms);
//主while循环中加入延时代码,实现闪烁
		 P22 = 0; //设置低电平	(屠龙刀三板载led)
		 delay_ms(500);
		 P22 = 1; //设置低电平	(屠龙刀三板载led)
		 delay_ms(500);

両方を同時にフラッシュする必要がある場合は、コードを変更します。

		 P22 = 0; //设置低电平	(屠龙刀三板载led)
		 P24 = 0;
		 delay_ms(500);
		 P22 = 1; //设置低电平	(屠龙刀三板载led)
		 P24 = 1;
		 delay_ms(500);

遅延は非常に便利ですが、降りる前に階段の終わりを待つ必要があります。

文法分析:

1.while
実行フローチャート:
ここに画像の説明を挿入

一般 的に使用さ
れる無限ループ while(1)。

}その間();

検証コード

do
			{
				printf("a的值: %d\r\n",a);
				a = a + 1;
			}while( a <20 );

実行結果:
ここに画像の説明を挿入
whileループに変更:

			while( a <20 )
			{
				printf("a的值: %d\r\n",a);
				a++;
			}

実行結果:
ここに画像の説明を挿入
この例でも効果は同じです。

ヒント: a– と –a の違い (–ms の使用)

テストコード:

			a =10;
			printf("a的值: %d\r\n",a);
			printf("a的值: %d\r\n",--a);  //先运算再输出
			printf("a的值: %d\r\n",a);

			a =10;
			printf("a的值: %d\r\n",a);
			printf("a的值: %d\r\n",a--); //先输出再运算
			printf("a的值: %d\r\n",a);

実行結果:
ここに画像の説明を挿入
4. #defineの使い方 定義
が必要な#define名の内容はコンパイラが自動で置き換えます

おすすめ

転載: blog.csdn.net/Medlar_CN/article/details/132332861