智能车制作
标题:
请高手指导XS128 ATD 连续转换的问题
[打印本页]
作者:
右后卫小猛
时间:
2013-9-1 16:50
标题:
请高手指导XS128 ATD 连续转换的问题
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
void ATD0_Init(void);
void SCI_init(void);
void SCISendChar(char c1);
void SCISendString(char *pc1);
void SCISendHex(char c1);
unsigned char dtoa(char c1);
void Delay_ms(unsigned int n_ms);
void main(void)
{
unsigned char AD_result; //定义变量,存储A/D转换结果
ATD0_Init();
SCI_init();
DDRB = 0xFF; //定义PORTB端口为输出口
PORTB = 0xFF; //关闭所有LED灯
for(;;)
{
while(!ATD0STAT2_CCF0);
SCISendString("AN0=");
SCISendHex(ATD0DR0L);
SCISendString("\r\n");
Delay_ms(2000);
}
}
//功 能:完成ATD模块初始化
void ATD0_Init(void)
{
ATD0DIEN = 0x00; //禁止数字输入功能
ATD0CTL1 = 0x0F; // A/D分辨率选择8位,且采样前不放电
ATD0CTL2 = 0x40; // A/D模块快速清零,禁止外部触发,禁止中断
ATD0CTL3 = 0x90; // A/D转换结果右对齐,每个序列2个通道,非FIFO模式
ATD0CTL4 = 0x03; //采样时间24个周期
ATD0CTL5 = 0x20; //对通道0单通道连续采样,同时启动A/D转换序列
}
void SCI_init(void)
{
SCI0BD = 52;
SCI0CR1 =0X00;
SCI0CR2 =0X0C;
}
void SCISendChar(char c1){
while(SCI0SR1_TC==0);
SCI0DRL =c1;
}
void SCISendString(char *pc1){
while((*pc1) !=0){
SCISendChar(*pc1);
pc1++;
}
}
void SCISendHex(char c1){
SCISendChar(dtoa((c1&0XF0)>>4));
SCISendChar(dtoa((c1&0x0f)));
}
unsigned char dtoa(char c1){
return (c1>=10)?(c1+0x37)
c1+0x30);
}
void Delay_ms(unsigned int n_ms)
{
unsigned int i,j;
for(i=0;i<n_ms;i++)
{
for(j=0;j<667;j++) //总线时钟8MHZ时,667*12个机器周期约1ms
{
;
}
}
}
作者:
右后卫小猛
时间:
2013-9-1 16:52
连续转换时,这个程序,通过串口发出来的值,始终为0,学习了半天,一直没有解决出来为什么。但是单次转换就会发出正确的转换结果
作者:
℡单身旅行
时间:
2013-9-1 17:45
连续转换不是有个寄存器控制吗?
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2