Thanks for your advice.
I have found the issues and resolved it. My compiler does not support appointing address likes ADC0CommandList@0x0001000
So the below is used
#pragma section {ram_ad}
volatile uint8 ADC0CommandList= {..........};
#prgma section{ }
When with emulator debug, the command value read from ADC0CBP adress is the same as the ADC0CommandList,so ADC works well.
But work without emulator, the command value read from ADC0CBP adress is missing ,so ADC does not work.
so the problem resolved as following and it works
#pragma section [ram_ad]
volatile uint8 ADC0CommandList;
#prgma section{ }
const uint8 ADC0CommandListAct={......};
void Adc_Init(void)
{
....
ADC0CommandList[]=ADC0CommandListAct[];
....
}
So what the difference between #pragma section{ } and #pragma section [ ] ? It seems that initialized variables will be reinitialized after powerup with #pragma section{ }. So it value will not the same as the intialiazed value by ADC0CommandList= {..........};