打印
[PIC®/AVR®/dsPIC®产品]

奇怪的事情

[复制链接]
1486|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++);

试试看结果如何?


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

不评价了,怕打击你。。。

使用特权

评论回复
5
hlhfootbal| | 2014-9-2 17:26 | 只看该作者
Temporary_Buffer[a]=*(p+a); 改成:Temporary_Buffer[a]= p[a];

试试看结果如何?

使用特权

评论回复
6
风之牧|  楼主 | 2014-9-11 11:22 | 只看该作者
yewuyi 发表于 2014-9-1 09:24
Temporary_Buffer[a]=*(p+a); 改成:Temporary_Buffer[a]=*(p++);

试试看结果如何?

希望版主可以帮忙指出问题,打击这个真的不怕。就怕不知道自己在那里有问题,有问题才好改正:handshake

使用特权

评论回复
7
wangch_sh| | 2014-9-11 14:15 | 只看该作者
*(p+a)是什么意思呢?
ADC_buff0[]总共6个元素,溢出了吧?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

313

帖子

1

粉丝