只要是飞思卡尔的AD转换就行,用到的东西越多越好,因为写AD转换的程序时脑袋里没有个大概的模板和样子。
2个回答
展开全部
这是我以前的程序,不过是基于DP512的,如果你是XS128,请稍微修改一下寄存器。
AD初始化的程序
//////////////////////////////////atd/////////////////////////////////////
void MCU_ATD_Init(void)
{
ATD0CTL2=0xC0;
ATD0CTL3=0x08;
ATD0CTL4=0x81;
ATD0CTL5=0xA0;
ATD0DIEN=0x00;
}
行中断
#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt VectorNumber_Vtimch1 void ComSyncInt(void)
{
TFLG1_C1F=1; //清中断标志位
CompSyncCnt++; //行同步计数值清零
if ((CompSyncCnt>31)&&(CompSyncCnt<281)&&(CompSyncCnt%8==0))
{ //隔8行采一行
for(Collum=0;Collum<54;Collum++)
{
while(!ATD0STAT1_CCF0);//等待AD转换完毕
Video[Row][Collum]= ATD0DR0L;//赋值
}
Row++; //视频数组行数加1
}
}
#pragma CODE_SEG default
AD初始化的程序
//////////////////////////////////atd/////////////////////////////////////
void MCU_ATD_Init(void)
{
ATD0CTL2=0xC0;
ATD0CTL3=0x08;
ATD0CTL4=0x81;
ATD0CTL5=0xA0;
ATD0DIEN=0x00;
}
行中断
#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt VectorNumber_Vtimch1 void ComSyncInt(void)
{
TFLG1_C1F=1; //清中断标志位
CompSyncCnt++; //行同步计数值清零
if ((CompSyncCnt>31)&&(CompSyncCnt<281)&&(CompSyncCnt%8==0))
{ //隔8行采一行
for(Collum=0;Collum<54;Collum++)
{
while(!ATD0STAT1_CCF0);//等待AD转换完毕
Video[Row][Collum]= ATD0DR0L;//赋值
}
Row++; //视频数组行数加1
}
}
#pragma CODE_SEG default
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询