在线时间2 小时
UID291529
注册时间2011-5-17
NXP金币0
该用户从未签到
注册会员

- 积分
- 50
- 最后登录
- 1970-1-1
|
发表于 2014-8-25 17:32:47
|
显示全部楼层
回复:请教如何编写飞思卡尔HCS08DZ16 A/D转换程序(PE)
<div style="padding:5px;border:1px dashed #ccc;">回复第 7 楼 于2011-07-18 08:57:42发表:
<div style="border-bottom: #ccc 1px dashed; border-left: #ccc 1px dashed; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; border-top: #ccc 1px dashed; border-right: #ccc 1px dashed; padding-top: 5px">回复第 4 楼 低叹生活于2011-07-17 15:04:44发表:
回复第 3 楼 Freescalel于2011-07-17 12:28:46发表:
回复第 2 楼 Garfield于2011-07-17 09:41:56发表:
坛子里就有,搜一下吧,freescale官网上也有
谢谢,我才注册的,还不太不熟悉这里,您能说的详细一点吗?
#include "Cpu.h"
#include "Events.h"
#define Vrefh 3
#define Vrefl 0
extern bool ValuesAvailable;
extern word Values[1];
char Value_H;
char Value_L;
long int Value;
float Voltage1;
void AD1_OnEnd(void)
{
/* Write your code here ... */
#define Vrefh 3
#define Vrefl 0
extern word Values[1];
char Value_H;
char Value_L;
int Value;
AD1_GetValue16(Values); // Get AD conversion results
Value_H=ADCRH;
Value_L=ADCRL;
Value=(int)Value_H*256;
Value=(int)Value_L+Value;
Voltage1=((Value*(Vrefh-Vrefl))/255);
}
这是我编的程序,可是采集不到电压,总是0v。能不能给我指点一下谢谢!
#include "EnDisInt.h" /* 中断及通用头文件 */
/*********************************************************************************************************
函数: ADCinit
说明: A/D转换初始化,设置A/D转换时钟频率为1MHz
局部变量: 无
全局变量: 无
调用: 无
被调用: 主函数
其他: 无
**********************************************************************************************************/
void ADCinit(void) //0011 0100 选择总线时钟,右对齐模式
{
ADCLK = 0b00110100;
}
/*********************************************************************************************************
函数: ADCave
说明: 1路A/D转换函数(均值滤波)
功能: 通道channel进行n次中值滤波,求和再作均值,得出均值滤波结果并返回该通道均值滤波后的A/D转换结果
局部变量: i,j
全局变量: 无
参数: channel = 通道号,n = 中值滤波次数
调用: ADCmid
被调用: 主函数
其他:
**********************************************************************************************************/
INT16U ADCave(INT8U channel,INT8U n)
{
INT8U i=0;
INT16U j=0;
for (i=0; i j)
{
tmp = i;
i = j;
j = tmp;
}
if (k > i)
{
if (k > j)
{
tmp = j;
}
else
{
tmp = k;
}
}
else
{
tmp = i;
}
return tmp;
}
/*********************************************************************************************************
函数: ADCvalue
说明: 1路A/D转换函数
功能: 获取通道channel的A/D转换结果,并返回该通道的A/D转换结果
局部变量: tmp,tmp1
全局变量: 无
参数: channel = 通道号
调用:
被调用: ADCmid
其他:
**********************************************************************************************************/
INT16U ADCvalue(INT8U channel)
{
INT16U tmp=0;
INT16U tmp1=0;
channel &= 0b00011111; //取通道号变量的低五位(实际通道号)
ADSCR=0x20; //取高三位为001
tmp = ADSCR & 0b11100000; //取ADSCR的高三位(取上电复位默认值000)
ADSCR = tmp | channel; //合并上述8位
while ((ADSCR & (1 |
|