LoginSignup
2
0

More than 3 years have passed since last update.

電子工作LEDちかちかrev2

Posted at

過去記事を書いたときに頂いたご指摘を元にコードの修正を試みました。
ソフトの設計レベルもっとあげたいな。。

r_cg_timer_user.c

/***********************************************************************************************************************
Global variables and functions
***********************************************************************************************************************/
/* Start user code for global. Do not edit comment generated here */
int32_t loopcnt = 0;
static uint8_t sts = 0;
static void Sadamerareshi_Hikari(const uint8_t pattern[],uint8_t size);
static void Gyakutensuru_Hikari(const uint8_t pattern[],uint8_t size);
//固定パターンであれば、constでFLASH-ROMへ。メモリ(RAM)の1バイトは血の一滴!!!
const uint8_t led_pattern [] = {
    0x00,/* □□□□□□□ */ 
    0x08,/* □□□■□□□ */
    0x1C,/* □□■■■□□ */
    0x3E,/* □■■■■■□ */
    0x7F,/* ■■■■■■■ */
    0x3E,/* □■■■■■□ */
    0x1C,/* □□■■■□□ */
    0x08,/* □□□■□□□ */
};
const uint8_t led_pattern2 [] = {
    0x00,/* □□□□□□□ */
    0x40,/* ■□□□□□□ */
    0x60,/* ■■□□□□□ */
    0x70,/* ■■■□□□□ */
    0x78,/* ■■■■□□□ */
    0x7C,/* ■■■■■□□ */
    0x7E,/* ■■■■■■□ */
    0x7F,/* ■■■■■■■ */
};
const uint8_t led_pattern3 [] = {
    0x00,/* □□□□□□□ */
    0x01,/* □□□□□□■ */
    0x03,/* □□□□□■■ */
    0x07,/* □□□□■■■ */
    0x0F,/* □□□■■■■ */
    0x1F,/* □□■■■■■ */
    0x3F,/* □■■■■■■ */
    0x7F,/* ■■■■■■■ */
};

/* 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 */
    switch(sts){
    case(0):
        if(loopcnt < 6){
          P0 = (P0 >> 1);
        }
        else{
          P0 = (P0 << 1);
        }
        loopcnt++;
        if(loopcnt > 11){
          loopcnt=0;
          sts=1;
        }
    break;
    case(1):
        Sadamerareshi_Hikari(led_pattern,  sizeof(led_pattern));
    break;
    case(2):
        Sadamerareshi_Hikari(led_pattern2, sizeof(led_pattern2));
    break;
    case(3):
        Gyakutensuru_Hikari(led_pattern2, sizeof(led_pattern2));
    break;
    case(4):
        Sadamerareshi_Hikari(led_pattern3, sizeof(led_pattern3));
    break;
    case(5):
        Gyakutensuru_Hikari(led_pattern3, sizeof(led_pattern3));
    break;
    default:
        P0=0x40;
        sts=0;
    break;  
    }
}
static void Sadamerareshi_Hikari(const uint8_t pattern[],uint8_t size){
        P0 = pattern[loopcnt];
        loopcnt = (loopcnt+1) % size;
        if (loopcnt == 0) {
           sts++;
        }
}
static void Gyakutensuru_Hikari(const uint8_t pattern[],uint8_t size){
        uint8_t tmp;
        tmp = pattern[loopcnt];
        P0 = ~tmp;
        loopcnt = (loopcnt+1) % size;
        if (loopcnt == 0) {
           sts++;
        }
}

    /* End user code. Do not edit comment generated here */
/* Start user code for adding. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */

XXX.gif

次はどうしようっかな~

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0