Pi:Co Classic2 製作記(移行中)

2015年新人研修 マイクロマウス編(25)

こんにちは。

本日はプログラムを一部関数化して簡略化しました。

以前、2015年新人研修 マイクロマウス編(11)で作ったプログラムの

for(j=0; j<0xff; j++){
	
LED0 = LED1 = LED2 = LED3 = 1;		//LED点灯
for(i = 0; i < 1000; i++);		//時間待ち(空ループ)
LED0 = LED1 = LED2 = LED3 = 0;	 	//LED消灯
for(i = 0; i < 9000; i++);		//時間待ち(空ループ)
}
	
for(j=0; j<0xff; j++){
		
LED0 = LED1 = LED2 = LED3 = 1;		//LED点灯
for(i = 0; i < 2500; i++);		//時間待ち(空ループ)
LED0 = LED1 = LED2 = LED3 = 0;	 	//LED消灯
for(i = 0; i < 7500; i++);		//時間待ち(空ループ)
}
		
for(j=0; j<0xff; j++){
		
LED0 = LED1 = LED2 = LED3 = 1;		//LED点灯
for(i = 0; i < 5000; i++);		//時間待ち(空ループ)
LED0 = LED1 = LED2 = LED3 = 0;	 	//LED消灯
for(i = 0; i < 5000; i++);		//時間待ち(空ループ)
}
		
for(j=0; j<0xff; j++){
		
LED0 = LED1 = LED2 = LED3 = 1;		//LED点灯
for(i = 0; i < 7500; i++);		//時間待ち(空ループ)
LED0 = LED1 = LED2 = LED3 = 0;	 	//LED消灯
for(i = 0; i < 2500; i++);		//時間待ち(空ループ)
}
		
for(j=0; j<0xff; j++){
		
LED0 = LED1 = LED2 = LED3 = 1;		//LED点灯
for(i = 0; i < 9000; i++);		//時間待ち(空ループ)
LED0 = LED1 = LED2 = LED3 = 0;	 	//LED消灯
for(i = 0; i < 1000; i++);		//時間待ち(空ループ)
}

を関数化しました。

格闘すること1時間。
できたのがこちらです↓

#include "iodefine.h"
#include "portdef.h"

void PWM_LED(int H,int L){

int j,i;

	for(j=0; j<0xff; j++){
	    LED0 = LED1 = LED2 = LED3 = 1;		//LED点灯
	    for(i = 0; i < L; i++);		//時間待ち(空ループ)
	    LED0 = LED1 = LED2 = LED3 = 0;	 	//LED消灯
	    for(i = 0; i < H; i++);		//時間待ち(空ループ)
	}
}


void main(void)
{
	int i;
	int j;
			
	j=0x08;
	
	PFC.PEIORL.WORD = 0x000f;	//LEDの繋がっているポートを出力に設定

	//LEDを点滅させる
	
	
	while(1)	//無限ループ
	{

		 PWM_LED(1000,9000);

		 PWM_LED(2500,7500);

		 PWM_LED(5000,5000);

		 PWM_LED(7500,2500);

		 PWM_LED(9000,1000);
		
		}
}

void main(void)は左から順にモドリ値、関数の名前、パラメーターを示しています。

関数化することでいちいち細かく書いていたことがすっきり数行に収まりました。
関数化をきちんとマスターしてきれいなプログラムが書けるよう頑張りたいと思います!

それでは本日のオフショットです。

IMG_0767_R

IMG_0775_R

タイトルとURLをコピーしました