在下十分困惑啊 希望大家帮下忙 是这样的 我用AD1,PORTA,PORTJ来做CMOS信号的采集和控制 其中 PORTA0通过检测的方法检测场信号 PORTJ7通过中断的方法来控制行采集。CMOS的视屏信号是通过LM1881分离行,场信号分别接入PORTJ,PORTA的。各位如果做过视频采集应该知道,CMOS的场消隐大概有22行,所以我想通过行中断来将场消隐信号滤除。这样的话,我只要设置前22次行中断不采集AD即可。具体程序如下,t为要消隐的行数为22 nh为行与行之间的消隐为18 //////////////////ccd void ccd1(void) { byte old; i=0; IR=5; //t=f=0;
ATD0CTL5 =0XA0; //通道0采样
while(1){ //PORTA=PORTA&0X80; old=PORTA_BIT7; if(PORTA_BIT7^old&ORTA_BIT7==1) { PIEJ=0X80; } if(i==ccd_line) { PIEJ =0X00; return; } } } //中断程序 #pragma CODE_SEG __NEAR_SEG NON_BANKED void interrupt 24 PIJ_CCD1(void){ unchar fade,j=0; fade=nh; if(t>0) { t--; return; } if(IR==5){ for(;j<ccd_point;){
while(fade>0) fade--;
while(!ATD0STAT0_SCF);
PORTB=ccd_1[j++]=ATD0DR0;
ATD0STAT0_SCF=1; } IR=0;i++; } else IR++; PIFJ=0XFF; } #pragma CODE_SEG DEFAULT_ROM /////////////////////////////////////////////// 但这样设置之后 场效应依然存在
后来我把t设为50 采到的数据如下 t=180 它居然在高电平的时候也中断了 直至我将t设为1800 场消隐信号采基本消除 也就是说 在短短的场消隐的时间内 PORTJ进行了接近两千次中断 而且J不管是用上升沿中断 还是下降沿 结果都差不多 希望各位DX帮我看下 到底问题出在哪里? |