| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
是这样的,我在学习单片机C语言的时候,手上的这块板子因为引脚不够用,按键和显示数字的数码管引脚复用了。ADC旋钮采集也和数码管的公共端引脚复用了。 
 
这个板子的主要功能就是一个旋钮,2个显示数字的数码管(就是显示数字00~99)。按键控制开关机。旋钮分成60档,显示在数码管上。 
 
随着我学习尝试写代码的中途,出现了个问题,这个板上面,有个数码管怎么都不灭,就是和按键复用的那个。我尝试半天最后发现要把ADC采集的IO口初始化和按键采集的IO初始化分开才行。 
我想问这是为什么? 
 
 
 
void discom(uchar dis1,uchar dis2,uchar dis3,uchar dis4)//êyÂë1ü11«12¶ËÑ¡í¨ 
{ 
        if(display_timer > 5)// 
        { 
                display_timer = 0; 
        }         
        switch(display_timer) 
        { 
                case 0:{IO_InitOUT(); 
                                                COML1=1;COML2=1;COML3=1;COML4=1;display(dis4);COML2=0;}break;                                                         
                case 1:{COML1=1;COML2=1;COML3=1;COML4=1;display(dis3);COML1=0;}break;                                                         
                case 2:{COML1=1;COML2=1;COML3=1;COML4=1;display(dis2);COML4=0;}break;                                                         
                case 3:{COML1=1;COML2=1;COML3=1;COML4=1;display(dis1);COML3=0;}break;                                                         
                case 4:{COML1=1;COML2=1;COML3=1;COML4=1;display(10);//         
                                                IO_InitIN_SW();                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
                                                key();                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
                }break;                                                                                                                                                                                                                                                                                                                 
                case 5:{         
                                                COML1=0;COML2=0;COML3=1;COML4=1;display(10);         
                                                IO_InitIN_AIN(); 
                                                Lset_num = LS_ADC_switch_return();                                                                                                                                                                                                                                         
                                                Rset_num = RS_ADC_switch_return(); 
                                                Lnum = L_ADC_temp_return(); 
                                                Rnum = R_ADC_temp_return(); 
                                                ADCCON = 0x00;                                                                                                                                                                                                                                                 
                                                ADCCFG0 = 0x03;                         
                }break;         
                default:{}                                                                                                                                                                                                                                                                                                 
                break;                                                                                                                                                                                                                                                                                                                 
        } 
} 
void IO_InitOUT(void)//ADC1£¬ADC2Îaêäè룬ÆäóàÎaêä3ö 
{ 
        P0CON = 0xFF;   //强推挽输出 
        P0PH  = 0x00; 
        P1CON = 0xFF;  //强推挽输出 
        P1PH  = 0x00; 
        P2CON = 0xFF;   
        P2PH  = 0x00; 
} 
/***************************************************** 
*****************************************************/ 
void IO_InitIN_SW(void)// 
{ 
  P2CON = 0xBC;        //P2.6(sw3)高阻输入带上拉 
        P2PH  = 0x40;         
        P1CON = 0xFF;  // //强推挽输出 
        P1PH  = 0x00; 
        P0CON = 0xEE;// // P0.4(sw1),P0.0(sw2)高阻输入带上拉 
        P0PH  = 0x11;         
} 
void IO_InitIN_AIN(void)// 
{ 
        P2CON = 0xCC;        // P2.5(AIN5),P2.4(AIN4)普通输入 
        P2PH  = 0x00;         
        P1CON = 0xFF;  
        P1PH  = 0x00; 
        P0CON = 0xFF; 
        P0PH  = 0x00;         
} 
 |   
 
 
 
 |