こんにちは。
本日は2色LEDを用いて関数化の勉強をしました。
書いたプログラムはこちらです↓
#include "iodefine.h"
#include "portdef.h"
void LED(int A){
if(A&0x01){
LED0=1;
}else{
LED0=0;
}
if(A&0x02){
LED1=1;
}else{
LED1=0;
}
if(A&0x04){
LED2=1;
}else{
LED2=0;
}
if(A&0x08){
LED3=1;
}else{
LED3=0;
}
}
int PWM_LED(int H,int L,int A){
int j,i;
for(j=0; j<0xff; j++){
// LED0 = LED1 = LED2 = LED3 = 1; //LED点灯
LED(A);
for(i = 0; i < L; i++); //時間待ち(空ループ)
// LED0 = LED1 = LED2 = LED3 = 0; //LED消灯
LED(0x00);
for(i = 0; i < H; i++); //時間待ち(空ループ)
}
return(L*100)/(L+H);
}
void PURPLE_LED(int D);
void main(void)
{
int i;
int j;
j=0x08;
PFC.PEIORL.WORD = 0x003f; //LEDの繋がっているポートを出力に設定
//LEDを点滅させる
while(1) //無限ループ
{
int C;
C=PWM_LED(1000,9000,0x0f);
PURPLE_LED(C);
C=PWM_LED(2500,7500,0x0c);
PURPLE_LED(C);
C=PWM_LED(5000,5000,0x06);
PURPLE_LED(C);
C=PWM_LED(7500,2500,0x3);
PURPLE_LED(C);
C=PWM_LED(9000,1000,0x09);
PURPLE_LED(C);
}
}
void PURPLE_LED(int D){
if((0<=D)&&(D>25)){
LED4=1; LED5=0;
}else if((D>=25)&&(D<50)){
LED5=1;LED4=0;
}else{
LED4=LED5=1;
}
}
なかなか光らせることができず苦労しましたがご覧のように最終的に光らせることができました。
voidは関数の呼び出した側になんの情報も返さないことを指します。
なのでreturnする必要のないときに用います。
今日はヒントを出してもらっていたにも関わらずエラーばかりでした。
でも今日は一生懸命エラーの箇所を探して修正しました。
いくつか自力で見つけて修正できたときは嬉しかったです!
以前は修正箇所見つけても何が間違っているのかさっぱりわからなかったので(笑)
最後に本日のオフショットです。





