プロジェクト名 test
インターバルタイマを使いLEDの点灯を繰り返している。
インターバルタイマを使いLEDの点灯を繰り返している。
0のとき点灯、1のとき消灯。
メインプログラム
メインプログラム
/*********************************************************************************************************************** Includes ***********************************************************************************************************************/ #include "r_cg_macrodriver.h" #include "r_cg_cgc.h" #include "r_cg_port.h" #include "r_cg_timer.h" /* Start user code for include. Do not edit comment generated here */ int i = 0; /* End user code. Do not edit comment generated here */ #include "r_cg_userdefine.h" /*********************************************************************************************************************** Pragma directive ***********************************************************************************************************************/ /* Start user code for pragma. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ /*********************************************************************************************************************** Global variables and functions ***********************************************************************************************************************/ /* Start user code for global. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ void R_MAIN_UserInit(void); /*********************************************************************************************************************** * Function Name: main * Description : This function implements main function. * Arguments : None * Return Value : None ***********************************************************************************************************************/ void main(void) { R_MAIN_UserInit(); /* Start user code. Do not edit comment generated here */ R_TAU0_Channel0_Start(); while (1U) { if(i <= 1){ i++; }else{ i = 0; } } /* End user code. Do not edit comment generated here */ } /*********************************************************************************************************************** * Function Name: R_MAIN_UserInit * Description : This function adds user code before implementing main function. * Arguments : None * Return Value : None ***********************************************************************************************************************/ void R_MAIN_UserInit(void) { /* Start user code. Do not edit comment generated here */ EI(); /* End user code. Do not edit comment generated here */ }
タイマー割り込みプログラムIncludes ***********************************************************************************************************************/ #include "r_cg_macrodriver.h" #include "r_cg_timer.h" /* Start user code for include. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ #include "r_cg_userdefine.h" /*********************************************************************************************************************** Pragma directive ***********************************************************************************************************************/ #pragma interrupt r_tau0_channel0_interrupt(vect=INTTM00) #pragma interrupt r_tau0_channel2_interrupt(vect=INTTM02) /* Start user code for pragma. Do not edit comment generated here */ extern int i; /* End user code. Do not edit comment generated here */ /*********************************************************************************************************************** Global variables and functions ***********************************************************************************************************************/ /* Start user code for global. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ /*********************************************************************************************************************** * Function Name: r_tau0_channel0_interrupt * Description : This function is INTTM00 interrupt service routine. * Arguments : None * Return Value : None ***********************************************************************************************************************/ static void __near r_tau0_channel0_interrupt(void) { /* Start user code. Do not edit comment generated here */ if(i <= 0){ P6_bit.no2 = 1; }else if(i == 2){ P6_bit.no2 = 0; } /* End user code. Do not edit comment generated here */ }1.RL78のPWM出力タイマを使い、パルスを出力する。 2.パルスの出力を7セグメントLEDの表示に合わせて出力周波数を1KHz変えていく。 7セグ '9' 表示時 = 出力周波数 '10' KHz 7セグ '8' 表示時 = 出力周波数 '9' KHz 7セグ '7' 表示時 = 出力周波数 '8' KHz 7セグ '6' 表示時 = 出力周波数 '7' KHz 7セグ '5' 表示時 = 出力周波数 '6' KHz 7セグ '4' 表示時 = 出力周波数 '5' KHz 7セグ '3' 表示時 = 出力周波数 '4' KHz 7セグ '2' 表示時 = 出力周波数 '3' KHz 7セグ '1' 表示時 = 出力周波数 '2' KHz 7セグ '0' 表示時 = 出力周波数 '1' KHz 3.ターゲットに接続したメカニカルスイッチを使い、7セグメントLEDの表示を1づつ上下する。
プロジェクト名 test_2
メインプログラムIncludes ***********************************************************************************************************************/ #include "r_cg_macrodriver.h" #include "r_cg_cgc.h" #include "r_cg_port.h" #include "r_cg_timer.h" /* Start user code for include. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ #include "r_cg_userdefine.h" /*********************************************************************************************************************** Pragma directive ***********************************************************************************************************************/ /* Start user code for pragma. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ /*********************************************************************************************************************** Global variables and functions ***********************************************************************************************************************/ /* Start user code for global. Do not edit comment generated here */ unsigned int count = 10; unsigned int sw = 9; int swflag = 0; long w; int t = 0; unsigned int timerflag = 0; void seg(void); /* End user code. Do not edit comment generated here */ void R_MAIN_UserInit(void); /*********************************************************************************************************************** * Function Name: main * Description : This function implements main function. * Arguments : None * Return Value : None ***********************************************************************************************************************/ void main(void) { R_MAIN_UserInit(); /* Start user code. Do not edit comment generated here */ R_TAU0_Channel0_Start(); R_TAU0_Channel2_Start(); while (1U) { seg(); if(swflag == 1){ if(sw < 9 && sw >= 0){ sw++; } swflag = 0; }else if(swflag == 2){ if(sw < 10 && sw > 0){ sw--; } swflag = 0; } if(timerflag == 2){ timerflag = 0; } } } /* End user code. Do not edit comment generated here */ /*********************************************************************************************************************** * Function Name: R_MAIN_UserInit * Description : This function adds user code before implementing main function. * Arguments : None * Return Value : None ***********************************************************************************************************************/ void R_MAIN_UserInit(void) { /* Start user code. Do not edit comment generated here */ EI(); /* End user code. Do not edit comment generated here */ } /* Start user code for adding. Do not edit comment generated here */ void seg(void){ switch(sw){ case 9: P2_bit.no2 = 1; P2_bit.no3 = 0; P2_bit.no4 = 0; P2_bit.no5 = 1; break; case 8: P2_bit.no2 = 1; P2_bit.no3 = 0; P2_bit.no4 = 0; P2_bit.no5 = 0; break; case 7: P2_bit.no2 = 0; P2_bit.no3 = 1; P2_bit.no4 = 1; P2_bit.no5 = 1; break; case 6: P2_bit.no2 = 0; P2_bit.no3 = 1; P2_bit.no4 = 1; P2_bit.no5 = 0; break; case 5: P2_bit.no2 = 0; P2_bit.no3 = 1; P2_bit.no4 = 0; P2_bit.no5 = 1; break; case 4: P2_bit.no2 = 0; P2_bit.no3 = 1; P2_bit.no4 = 0; P2_bit.no5 = 0; break; case 3: P2_bit.no2 = 0; P2_bit.no3 = 0; P2_bit.no4 = 1; P2_bit.no5 = 1; break; case 2: P2_bit.no2 = 0; P2_bit.no3 = 0; P2_bit.no4 = 1; P2_bit.no5 = 0; break; case 1: P2_bit.no2 = 0; P2_bit.no3 = 0; P2_bit.no4 = 0; P2_bit.no5 = 1; break; case 0: P2_bit.no2 = 0; P2_bit.no3 = 0; P2_bit.no4 = 0; P2_bit.no5 = 0; break; default: swflag = 0; break; } }
タイマー割り込みプログラムIncludes ***********************************************************************************************************************/ #include "r_cg_macrodriver.h" #include "r_cg_timer.h" /* Start user code for include. Do not edit comment generated here */ int now = 0; int now2 = 0; int old = 0; int old2 = 0; int swc = 0; int swc2 = 0; extern int swflag; extern unsigned int count; extern unsigned int timerflag; extern unsigned int sw; extern int t; /* End user code. Do not edit comment generated here */ #include "r_cg_userdefine.h" /*********************************************************************************************************************** Pragma directive ***********************************************************************************************************************/ #pragma interrupt r_tau0_channel0_interrupt(vect=INTTM00) #pragma interrupt r_tau0_channel1_interrupt(vect=INTTM01) #pragma interrupt r_tau0_channel2_interrupt(vect=INTTM02) /* Start user code for pragma. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ /*********************************************************************************************************************** Global variables and functions ***********************************************************************************************************************/ /* Start user code for global. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ /*********************************************************************************************************************** * Function Name: r_tau0_channel0_interrupt * Description : This function is INTTM00 interrupt service routine. * Arguments : None * Return Value : None ***********************************************************************************************************************/ static void __near r_tau0_channel0_interrupt(void) { /* Start user code. Do not edit comment generated here */ if(count < 1){ if(timerflag < 2){ switch(sw){ case 9: t = 10; break; case 8: t = 11; break; case 7: t = 13; break; case 6: t = 14; break; case 5: t = 17; break; case 4: t = 20; break; case 3: t = 25; break; case 2: t = 30; break; case 1: t = 50; break; case 0: t = 100; break; default: break; } count = t; timerflag++; if(timerflag < 2){ P6_bit.no3 = 0; }else{ P6_bit.no3 = 1; } } } count--; /* End user code. Do not edit comment generated here */ } /*********************************************************************************************************************** * Function Name: r_tau0_channel1_interrupt * Description : This function is INTTM01 interrupt service routine. * Arguments : None * Return Value : None ***********************************************************************************************************************/ static void __near r_tau0_channel1_interrupt(void) { /* Start user code. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ } /*********************************************************************************************************************** * Function Name: r_tau0_channel2_interrupt * Description : This function is INTTM02 interrupt service routine. * Arguments : None * Return Value : None ***********************************************************************************************************************/ static void __near r_tau0_channel2_interrupt(void) { /* Start user code. Do not edit comment generated here */ if(P5_bit.no5){ now == P5_bit.no2; if(now != P5_bit.no2){ now == P5_bit.no2; if(now != P5_bit.no2){ if(now == old){ if(swc < 40){ swc++; old = now; }else{ swflag = 1; swc = 0; } } } } now2 == P5_bit.no3; if(now2 != P5_bit.no3){ now2 == P5_bit.no3; if(now2 != P5_bit.no3){ if(now2 == old){ if(swc2 < 40){ swc2++; old2 = now2; }else{ swflag = 2; swc2 = 0; } } } } }
プロジェクト名 test_serial1
test_2の内容に加え以下の機能を追加 パソコン側はteratermを使用 1.電源をONするとオープニングメッセージを表示 2.パソコン側から's'コマンドを入力。"OK"を表示し、パルススタート。すでに出力されている場合は"NG"を 表示する。 3.パソコン側から'e'コマンドを入力。"PULSE END"を表示し、パルス出力ストップ。出力されていない場合は "NG"を表示する。 4.パソコン側から'u'コマンドを入力。7セグメントLEDの数字をカウントアップする。 5.パソコン側から'd'コマンドを入力。7セグメントLEDの数字をカウントダウンする。 6.パソコン側から'm'コマンドを入力。その後、エンターキーを押すと"INPUT NUMBER1~9"と表示される。 その後、1~9の数字を入力すると、7セグメントLEDに入力した数字を表示する。
メインプログラム
Includes ***********************************************************************************************************************/ #include "r_cg_macrodriver.h" #include "r_cg_cgc.h" #include "r_cg_port.h" #include "r_cg_serial.h" #include "r_cg_timer.h" /* Start user code for include. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ #include "r_cg_userdefine.h" /*********************************************************************************************************************** Pragma directive ***********************************************************************************************************************/ /* Start user code for pragma. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ /*********************************************************************************************************************** Global variables and functions ***********************************************************************************************************************/ /* Start user code for global. Do not edit comment generated here */ int swflag = 0; //スイッチ判定変数 int t = 0; int stup = 1; int c = 0; unsigned int timerflag = 0; //パルス1、パルス2周期調整変数 unsigned int count = 0; //周期調整関数 unsigned int sw = 9; //7セグ表示変数 extern volatile uint8_t g_rx_buff[16]; //受信用バッファ extern volatile uint8_t g_tx_buff[16]; //送信用バッファ extern volatile uint8_t Send_data; //送信データ格納 extern volatile signed char Pulse_flag_Start; //パルス判定フラグ extern volatile signed char Pulse_flag_End; //パルスストップ判定フラグ void seg(void); //メカニカルスイッチ7セグ操作関数 void P_Start(void); //パルス発生関数 void P_End(void); //パルス終了関数 void Data_Print(char *); //メッセージ送信用関数 /* End user code. Do not edit comment generated here */ void R_MAIN_UserInit(void); /*********************************************************************************************************************** * Function Name: main * Description : This function implements main function. * Arguments : None * Return Value : None ***********************************************************************************************************************/ void main(void) { R_MAIN_UserInit(); /* Start user code. Do not edit comment generated here */ R_TAU0_Channel0_Start(); R_TAU0_Channel2_Start(); while (1U) { if(P5_bit.no5){ if(stup){ Data_Print("Hello World"); Data_Print("\r\n"); stup = 0; } }else{ stup = 1; } seg(); if(swflag == 1){ sw++; swflag = 0; }else if(swflag == 2){ sw--; swflag = 0; } if(timerflag == 2){ timerflag = 0; } } /* End user code. Do not edit comment generated here */ } /*********************************************************************************************************************** * Function Name: R_MAIN_UserInit * Description : This function adds user code before implementing main function. * Arguments : None * Return Value : None ***********************************************************************************************************************/ void R_MAIN_UserInit(void) { /* Start user code. Do not edit comment generated here */ R_UART0_Start(); R_UART0_Receive((uint8_t *)g_rx_buff[0],0x01); EI(); /* End user code. Do not edit comment generated here */ } /* Start user code for adding. Do not edit comment generated here */ void seg(void){ switch(sw){ case 9: P2_bit.no2 = 1; P2_bit.no3 = 0; P2_bit.no4 = 0; P2_bit.no5 = 1; break; case 8: P2_bit.no2 = 1; P2_bit.no3 = 0; P2_bit.no4 = 0; P2_bit.no5 = 0; break; case 7: P2_bit.no2 = 0; P2_bit.no3 = 1; P2_bit.no4 = 1; P2_bit.no5 = 1; break; case 6: P2_bit.no2 = 0; P2_bit.no3 = 1; P2_bit.no4 = 1; P2_bit.no5 = 0; break; case 5: P2_bit.no2 = 0; P2_bit.no3 = 1; P2_bit.no4 = 0; P2_bit.no5 = 1; break; case 4: P2_bit.no2 = 0; P2_bit.no3 = 1; P2_bit.no4 = 0; P2_bit.no5 = 0; break; case 3: P2_bit.no2 = 0; P2_bit.no3 = 0; P2_bit.no4 = 1; P2_bit.no5 = 1; break; case 2: P2_bit.no2 = 0; P2_bit.no3 = 0; P2_bit.no4 = 1; P2_bit.no5 = 0; break; case 1: P2_bit.no2 = 0; P2_bit.no3 = 0; P2_bit.no4 = 0; P2_bit.no5 = 1; break; case 0: P2_bit.no2 = 0; P2_bit.no3 = 0; P2_bit.no4 = 0; P2_bit.no5 = 0; break; default: swflag = 0; break; } } /* パルス発生関数 */ void P_Start(void){ if(timerflag < 2){ P6_bit.no3 = 0; //P6_bit.no2 = 1; }else{ P6_bit.no3 = 1; //P6_bit.no2 = 0; } Pulse_flag_Start = 1; Pulse_flag_End = 0; } /* */ /* パルス終了関数 */ void P_End(void){ P6_bit.no3 = 1; P6_bit.no2 = 1; Pulse_flag_Start = 0; Pulse_flag_End = 1; } /* */ /* メッセージ送信関数 */ void Data_Print(char *str){ signed char i = 0; while(*str != '\0'){ while(SSR00 & 0x0020U){ NOP(); } g_tx_buff[i] = *str; ; TXD0 = g_tx_buff[i]; str++; i++; } }
タイマー割り込み部分Includes ***********************************************************************************************************************/ #include "r_cg_macrodriver.h" #include "r_cg_timer.h" /* Start user code for include. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ #include "r_cg_userdefine.h" /*********************************************************************************************************************** Pragma directive ***********************************************************************************************************************/ #pragma interrupt r_tau0_channel0_interrupt(vect=INTTM00) #pragma interrupt r_tau0_channel1_interrupt(vect=INTTM01) #pragma interrupt r_tau0_channel2_interrupt(vect=INTTM02) /* Start user code for pragma. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ /*********************************************************************************************************************** Global variables and functions ***********************************************************************************************************************/ /* Start user code for global. Do not edit comment generated here */ volatile int now; volatile int old; volatile int now2; volatile int old2; volatile int swc; volatile int swc2; extern int swflag; extern int t; extern volatile signed char Pulse_flag_End; extern unsigned int timerflag; extern unsigned int count; extern volatile unsigned int sw; /* End user code. Do not edit comment generated here */ /*********************************************************************************************************************** * Function Name: r_tau0_channel0_interrupt * Description : This function is INTTM00 interrupt service routine. * Arguments : None * Return Value : None ***********************************************************************************************************************/ static void __near r_tau0_channel0_interrupt(void) { /* Start user code. Do not edit comment generated here */ if(count < 1){ if(timerflag < 2){ switch(sw){ case 9: t = 10; break; case 8: t = 11; break; case 7: t = 13; break; case 6: t = 14; break; case 5: t = 17; break; case 4: t = 20; break; case 3: t = 25; break; case 2: t = 30; break; case 1: t = 50; break; case 0: t = 100; break; default: break; } count = t; timerflag++; if(Pulse_flag_End == 0){ if(timerflag < 2){ P6_bit.no3 = 0; P6_bit.no2 = 1; }else{ P6_bit.no3 = 1; P6_bit.no2 = 0; } } } } count--; /* End user code. Do not edit comment generated here */ } /*********************************************************************************************************************** * Function Name: r_tau0_channel1_interrupt * Description : This function is INTTM01 interrupt service routine. * Arguments : None * Return Value : None ***********************************************************************************************************************/ static void __near r_tau0_channel1_interrupt(void) { /* Start user code. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ } /*********************************************************************************************************************** * Function Name: r_tau0_channel2_interrupt * Description : This function is INTTM02 interrupt service routine. * Arguments : None * Return Value : None ***********************************************************************************************************************/ static void __near r_tau0_channel2_interrupt(void) { /* Start user code. Do not edit comment generated here */ if(P5_bit.no5){ now == P5_bit.no2; if(now != P5_bit.no2){ now == P5_bit.no2; if(now != P5_bit.no2){ if(now == old){ if(swc < 40){ swc++; old = now; }else{ swflag = 1; swc = 0; } } } } now2 == P5_bit.no3; if(now2 != P5_bit.no3){ now2 == P5_bit.no3; if(now2 != P5_bit.no3){ if(now2 == old){ if(swc2 < 40){ swc2++; old2 = now2; }else{ swflag = 2; swc2 = 0; } } } } } /* End user code. Do not edit comment generated here */ }
シリアル割り込みプログラムIncludes ***********************************************************************************************************************/ #include "r_cg_macrodriver.h" #include "r_cg_serial.h" /* Start user code for include. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ #include "r_cg_userdefine.h" /*********************************************************************************************************************** Pragma directive ***********************************************************************************************************************/ #pragma interrupt r_uart0_interrupt_send(vect=INTST0) #pragma interrupt r_uart0_interrupt_receive(vect=INTSR0) /* Start user code for pragma. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ /*********************************************************************************************************************** Global variables and functions ***********************************************************************************************************************/ extern volatile uint8_t * gp_uart0_tx_address; /* uart0 send buffer address */ extern volatile uint16_t g_uart0_tx_count; /* uart0 send data number */ extern volatile uint8_t * gp_uart0_rx_address; /* uart0 receive buffer address */ extern volatile uint16_t g_uart0_rx_count; /* uart0 receive data number */ extern volatile uint16_t g_uart0_rx_length; /* uart0 receive data length */ /* Start user code for global. Do not edit comment generated here */ //extern volatile uint8_t work; volatile uint8_t receive_data; //��M�f�[�^�i�[ volatile void receive_command(uint8_t); //�R�}���h��͊� volatile signed char Pulse_flag_Start = 0; //�p���X�X�^�[�g����t���O volatile signed char Pulse_flag_End = 0; //�p���X�X�g�b�v����t���O volatile uint8_t g_rx_buff[16]; //��M�p�o�b�t�@ volatile uint8_t g_tx_buff[16]; //���M�p�o�b�t�@ volatile signed char fiover = 1; extern volatile unsigned int sw; extern void P_Start(void); //���C���v���O�����p���X�����p�� extern void P_End(void); //���C���v���O�����p���X�I�� extern void Data_Print(char *); /* End user code. Do not edit comment generated here */ /*********************************************************************************************************************** * Function Name: r_uart0_interrupt_receive * Description : This function is INTSR0 interrupt service routine. * Arguments : None * Return Value : None ***********************************************************************************************************************/ static void __near r_uart0_interrupt_receive(void) { volatile uint8_t rx_data; volatile uint8_t err_type; err_type = (uint8_t)(SSR01 & 0x0007U); SIR01 = (uint16_t)err_type; if (err_type != 0U) { r_uart0_callback_error(err_type); } rx_data = RXD0; g_rx_buff[0] = RXD0; if (g_uart0_rx_length > g_uart0_rx_count) { *gp_uart0_rx_address = rx_data; gp_uart0_rx_address++; g_uart0_rx_count++; if (g_uart0_rx_length == g_uart0_rx_count) { r_uart0_callback_receiveend(); } } else { r_uart0_callback_softwareoverrun(rx_data); } } /*********************************************************************************************************************** * Function Name: r_uart0_interrupt_send * Description : This function is INTST0 interrupt service routine. * Arguments : None * Return Value : None ***********************************************************************************************************************/ static void __near r_uart0_interrupt_send(void) { if (g_uart0_tx_count > 0U) { TXD0 = *gp_uart0_tx_address; gp_uart0_tx_address++; g_uart0_tx_count--; } else { r_uart0_callback_sendend(); } } /*********************************************************************************************************************** * Function Name: r_uart0_callback_receiveend * Description : This function is a callback function when UART0 finishes reception. * Arguments : None * Return Value : None ***********************************************************************************************************************/ static void r_uart0_callback_receiveend(void) { /* Start user code. Do not edit comment generated here */ R_UART0_Receive((uint8_t *)g_rx_buff,0x01); receive_data = g_rx_buff[0]; receive_command(receive_data); /* End user code. Do not edit comment generated here */ } /*********************************************************************************************************************** * Function Name: r_uart0_callback_softwareoverrun * Description : This function is a callback function when UART0 receives an overflow data. * Arguments : rx_data - * receive data * Return Value : None ***********************************************************************************************************************/ static void r_uart0_callback_softwareoverrun(uint16_t rx_data) { /* Start user code. Do not edit comment generated here */ if(fiover){ fiover = 0; r_uart0_callback_receiveend(); }else{ Data_Print("Over Error"); } /* End user code. Do not edit comment generated here */ } /*********************************************************************************************************************** * Function Name: r_uart0_callback_sendend * Description : This function is a callback function when UART0 finishes transmission. * Arguments : None * Return Value : None ***********************************************************************************************************************/ static void r_uart0_callback_sendend(void) { /* Start user code. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ } /*********************************************************************************************************************** * Function Name: r_uart0_callback_error * Description : This function is a callback function when UART0 reception error occurs. * Arguments : err_type - * error type value * Return Value : None ***********************************************************************************************************************/ static void r_uart0_callback_error(uint8_t err_type) { /* Start user code. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ } /* Start user code for adding. Do not edit comment generated here */ volatile void receive_command(uint8_t a){ volatile uint8_t b = 0x00; if(a == 0x53 || a ==0x73){ if(Pulse_flag_Start == 0){ P_Start(); Data_Print("OK"); Data_Print("\r\n"); }else{ Data_Print("NG"); Data_Print("\r\n"); } }else if(a == 0x65){ if(Pulse_flag_End == 0){ P_End(); Data_Print("PULSE END"); Data_Print("\r\n"); }else{ Data_Print("NG"); Data_Print("\r\n"); } }else if(a == 0x75){ if(sw >= 0 && sw < 9){ sw++; } }else if(a == 0x64){ if(sw > 0 && sw < 11){ sw--; } }else if(a == 0x6d){ while(b != 0x0d){ b = RXD0; } b = 0x00; Data_Print("INPUT_NUMBER1~9"); Data_Print("\r\n"); while(b < 0x30 || b > 0x40){ b = RXD0; } b -= 0x30; sw = b; } }
以上です。
後から自分で見た時に何をやっているのか解らなくなりますし、第3者が見た時にソースを追うのに大変です。
コメントを入れておくと後で関数のドキュメント作成が楽になります