鱼C论坛

 找回密码
 立即注册
查看: 1313|回复: 2

C语言—单片机引脚复用的问题,小白求助

[复制链接]
发表于 2021-11-24 18:24:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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;       
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-24 19:46:22 | 显示全部楼层
ARDUINO? STM32F103?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-26 08:38:30 | 显示全部楼层

都不是,是国产的一个51单片机,赛元的92F7422。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 03:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表