マイコン備忘録

こんにちは!けんとです。
文系出身、プログラミングの超初心者の奮闘日記です。

実は、最近は毎日歩いて出勤してます。
電車の回避も理由にあるのですが、何より体を動かすことが
今日も元気にがんばっていきましょう!!
(内容雑になっているので、時間見て修正します、、)

5/27
SWの精査、タイマの設定の触りが今日の取り組み内容でした。

/*static*/

修飾子と呼ばれるキーワード
関数と変数の参照範囲を限定的にする効果、がある。
〇関数につけた場合
つまり、別のファイルから関数を呼び出すことができなくなる。

〇変数につけた場合
引用元:https://monozukuri-c.com/langc-funclist-static/

/*is_〇〇*/

真偽を示す値を返すとき、変数名を is_〇〇 とするのが通例である。

/*if文*/

画像1

①if文 - if文
②if文 - else if文
では動作が異なる。
①は両立するが、②は両立しない

また、知りたかった情報として、else文は省略することができる

引用元:https://monozukuri-c.com/langc-if/

/*インデント*/

インデントは、範囲選択してまとめてずらすことができる。
ちなみに以下。

画像2

/*ポインタ*/

ポインタと引数のちがいは、値が変わらないところにある

/*コードの清書*/

コーディングは、「並列と統一」
sw1が清書、sw2が下書き
set_led の手間を省略して、きれいに見やすくなっているのがわかる
書いているうちに「書き方の型」を覚えていくので、違和感に気付けるようになるとアドバイスをいただいた


#include "type_define.h"
#include "led.h"
#include "sw.h"

void main(void){
   	
	//変数定義
	int led = 3;
	int flag_sw1 = 1;
	int flag_sw2 = 1;
	int flag_sw3 = 1;
	
	//Pレジスタの初期値
	P4 = 0xFF;
	P6 = 0xFF;
	P10 = 0xFF;
	P15 = 0xFF;
	
	//PMレジスタの初期値
	PM4 = 0x0;
	PM6 = 0x0;
	PM10 = 0x0;
	PM15 = 0x0;
	
	//LEDの初期値
	set_led(LED3, LED_ON);
	
	
   	while(1){
		
		//初期値
		WDTE = 0xAC;
	
		//sw1を押したとき、右隣のLEDが点灯&点灯中のLEDが消灯
		if(check_chataring_sw(SW1) == 0){
			
			if(check_sw_state(SW1) == 0){
			
				if(flag_sw1 == 1){
			
					set_led(led, LED_OFF);
					
					if(led == 14){
					
						led = 3;
						
					}
					
					else{
					
						led++;
					
					}
					
					set_led(led, LED_ON);
					
					
					flag_sw1 = 0;
				
				}
			}
		
			else{
		
				flag_sw1 = 1;
			
			}
		}
	

		//sw2を押したとき、左隣のLEDが点灯&点灯中のLEDが消灯
		if(check_chataring_sw(SW2) == 0){
			
			if(check_sw_state(SW2) == 0){
				
				if(flag_sw2 == 1){
			
					set_led(led, LED_OFF);
					
					if(led == 3){
					
						led = 14;
						set_led(LED14, LED_ON);
						
					}
					
					else{
						
					set_led(--led, LED_ON);
					
					}
					
					flag_sw2 = 0;
	    			}
			}
				
			else{
				
				flag_sw2 = 1;
				
			}
		}

		


/*タイマ*/

マイコン上で時間を作り出す仕組みのことを、タイマ機能という
タイマは複数用意されていることが一般的

クロック選択
カウンタのオーバーフローで割り込みを発生

タイマが数える間隔はクロックと呼ばれるものを基準にしている
クロックは、人間にとっての心臓のようなもの

画像3

引用:https://monozukuri-c.com/mbase-timer/


/*割り込み*/

マイコンに搭載されるイベント処理の機構
例外処理要員

割り込みハンドラと呼ばれる特別な関数を呼び出させる

画像4

割り込みには複数のレジスタが絡んでくる
割り込みイネーブルレジスタ
割り込みフラグレジスタ

引用:https://monozukuri-c.com/mbase-timer/

/*直地*/

この記事が気に入ったらサポートをしてみませんか?