このコードを短くする方法はありますか?
include <3048f.h> //3048f.hの読み込み
/main関数/
int main(void)
{
int i,j; //待ち時間処理で使う変数の宣言
//LEDドットマトリクスの入出力設定 P4.DDR=0xff; PB.DDR=0xff; //点滅の永久ループ while(1) { //一行目のLEDがすべて点灯 P4.DR.BYTE=0x80; PB.DR.BYTE=0x00; //待ち時間処理(500[m秒]) for ( i=0; i<500; i++ ) //待ち時間処理(500*1[m秒]) { for ( j=0; j<20000; j++ ) //待ち時間処理(1[m秒]) ; } //二行目のLEDがすべて点灯 P4.DR.BYTE=0x40; PB.DR.BYTE=0x00; //待ち時間処理(500[m秒]) for ( i=0; i<500; i++ ) //待ち時間処理(500*1[m秒]) { for ( j=0; j<20000; j++ ) //待ち時間処理(1[m秒]) ; } //三行目のLEDがすべて点灯 P4.DR.BYTE=0x20; PB.DR.BYTE=0x00; //待ち時間処理(500[m秒]) for ( i=0; i<500; i++ ) //待ち時間処理(500*1[m秒]) { for ( j=0; j<20000; j++ ) //待ち時間処理(1[m秒]) ; } //四行目のLEDがすべて点灯 P4.DR.BYTE=0x10; PB.DR.BYTE=0x00; //待ち時間処理(500[m秒]) for ( i=0; i<500; i++ ) //待ち時間処理(500*1[m秒]) { for ( j=0; j<20000; j++ ) //待ち時間処理(1[m秒]) ; } //五行目のLEDがすべて点灯 P4.DR.BYTE=0x08; PB.DR.BYTE=0x00; //待ち時間処理(500[m秒]) for ( i=0; i<500; i++ ) //待ち時間処理(500*1[m秒]) { for ( j=0; j<20000; j++ ) //待ち時間処理(1[m秒]) ; } //六行目のLEDがすべて点灯 P4.DR.BYTE=0x04; PB.DR.BYTE=0x00; //待ち時間処理(500[m秒]) for ( i=0; i<500; i++ ) //待ち時間処理(500*1[m秒]) { for ( j=0; j<20000; j++ ) //待ち時間処理(1[m秒]) ; } //七行目のLEDがすべて点灯 P4.DR.BYTE=0x02; PB.DR.BYTE=0x00; //待ち時間処理(500[m秒]) for ( i=0; i<500; i++ ) //待ち時間処理(500*1[m秒]) { for ( j=0; j<20000; j++ ) //待ち時間処理(1[m秒]) ; } //八行目のLEDがすべて点灯 P4.DR.BYTE=0x01; PB.DR.BYTE=0x00; //待ち時間処理(500[m秒]) for ( i=0; i<500; i++ ) //待ち時間処理(500*1[m秒]) { for ( j=0; j<20000; j++ ) //待ち時間処理(1[m秒]) ; } } return 0;
}
なぜ、同じ処理(待ち時間処理など)を、関数にしないのでしょう?
待ち時間処理だけでも、48行が14行程度に成ります。
基本、main()は、制御構造だけをかいたほうが良いですよd^^
インデントが消えて見づらくなるので、ソースは「コードの挿入」で記入してください。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11231031376
https://teratail.com/help#posted-otherservice
「やむを得ず複数のサイトに質問を投稿された場合は、質問内容にマルチポストをする理由を書き、他のサイトの投稿へのリンクを貼ってください。また、解決した際には必ずteratail及びすべての投稿に解決した旨と、どのように解決したかを記載してください。 」
まずはマルチポストの理由をどうぞ。