0

これを解決するのを親切に助けてください。私がここで得ているエラーは、DAC_table の近くで unsigned char を宣言したため、'{' の近くの構文です。ここ...コードのこの部分で問題が発生しています..

unsigned char DAC_table[16];     
unsigned char *ptr2tbl; 
void fnSelectVoltage(void)
{
    line_display(1, "Volt Sel");
    sprintf(line_buf," %d V",(unsigned int)*ptr2tbl);       
    line_display(2, line_buf);

    DAC_table[16] = ( 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
                      0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F);
    *ptr2tbl = &DAC_table;  
    while (START_KEY)
    {
        if (!UP_KEY)
        {   
            wait_for_any_key_counter_0 = 0;
            for (i = 0; i<15; i++)      
            {
                P2 = *ptr2tbl++;            
                //  delay_ms(1000);         
            }
        }
        else if(!DOWN_KEY)
        {
            wait_for_any_key_counter_0 = 0;
            for (i = 0; i<15; i++)      
            {
                P2 = *ptr2tbl++;                
                // delay_ms(1000);              
            }
        }
    }
}
4

2 に答える 2

0

コードを簡単に見てみると、次のように言えます。

  • ptr2tbl は、最初に呼び出されたときに初期化せずに使用されています -> sprintf(line_buf," %d V",(unsigned int)*ptr2tbl)
  • *ptr2tbl = &DAC_table;間違っています。あなたはおそらくそのようなものが欲しいでしょう: ptr2tbl = DAC_table 両方がポインターになったら。*ptr2tbl はそれが指している要素にアクセスすることに注意してください。この時点では、コード内でどこも指していません。
  • P2 が宣言されていません (P2 はグローバル変数ですか?)
  • また、前に述べたように、DAC_table をそのように初期化することはできません (括弧の使用は間違っています)。
于 2013-04-18T07:37:54.950 に答える