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

1
unsigned char DAC_table[16];// u hv created a global array here 

要为其赋值,

    DAC_table[0] = 0x00;
    DAC_table[1] = 0x01; and so on.

或者甚至更好

unsigned char DAC_table[16] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F}; at the line of declaration.

除了声明行之外,您不能在文件范围内为变量赋值。

于 2013-04-18T07:20:33.433 回答
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 回答