[PIC®/AVR®/dsPIC®产品] 奇怪的事情

[复制链接]
1784|6
 楼主| 风之牧 发表于 2014-8-29 16:06 | 显示全部楼层 |阅读模式
AD, dc, ADC, IO, TI
1、
unsigned int ADC_buff0[6]={0,0,0,0,0,0};//缓冲区定义
unsigned int ADC_buff1[6]={0,0,0,0,0,0};//缓冲区定义
2、
void ADC_vaule()
{
CHS1=0;
CHS0=0;
delay_10us();delay_10us();delay_10us();delay_10us();
GODONE=1;//选择通道后经过几个us的延时,供单片机进行AD采集然后打开转换开关开始转换
while(!ADIF);//等待转换结束
while(GODONE);
ADC_location0=ADRESH;
ADC_location0=(ADC_location0<<8)+ADRESL;//ADFM=1,右对齐。读取转换结果当前值
ADC_buff0[0]=ADC_location0;
AN0_data=Average_ADC_buff(ADC_buff0);//转换结果平均值   程序停在此处
ADIF=0;
}
3、
unsigned int Average_ADC_buff(unsigned int *p)
{
unsigned int m,average=0;
unsigned int Temporary_Buffer[6]={0,0,0,0,0,0};//排序用缓冲区
unsigned char a,b;
for(a=0;a<6;a++) //将专用数据缓冲区内容拷贝到临时缓冲区
  {
   Temporary_Buffer[a]=*(p+a);  //程序停在此处

  }
……
}
以前正常运行的程序,现在修改了一下就不能正常运行了,经过测试程序停在了红色字体行。其中1是变量定义。3子函数被2调用。程序停在3子函数的红色字体行。分析应该是Temporary_Buffer[6]的问题  但是不知道问题出在哪。求指教!
 楼主| 风之牧 发表于 2014-9-1 07:49 | 显示全部楼层
沉了 算了 自己查原因吧  唉
yklstudent 发表于 2014-9-1 08:54 | 显示全部楼层
软件单步调式下自己找找原因好了
yewuyi 发表于 2014-9-1 09:24 | 显示全部楼层
Temporary_Buffer[a]=*(p+a); 改成:Temporary_Buffer[a]=*(p++);

试试看结果如何?


另外,你这代码写的太。。。

不评价了,怕打击你。。。
hlhfootbal 发表于 2014-9-2 17:26 | 显示全部楼层
Temporary_Buffer[a]=*(p+a); 改成:Temporary_Buffer[a]= p[a];

试试看结果如何?

 楼主| 风之牧 发表于 2014-9-11 11:22 | 显示全部楼层
yewuyi 发表于 2014-9-1 09:24
Temporary_Buffer[a]=*(p+a); 改成:Temporary_Buffer[a]=*(p++);

试试看结果如何?

希望版主可以帮忙指出问题,打击这个真的不怕。就怕不知道自己在那里有问题,有问题才好改正:handshake
wangch_sh 发表于 2014-9-11 14:15 | 显示全部楼层
*(p+a)是什么意思呢?
ADC_buff0[]总共6个元素,溢出了吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

312

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部