这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 求助如何实现51单片机2个针脚调用相同的函数

共7条 1/1 1 跳转至

求助如何实现51单片机2个针脚调用相同的函数

菜鸟
2024-12-08 02:07:59     打赏
各位前辈你们好
我是自学的 这个问题困扰我很久了
两个管脚会调用相同的函数 而且 函数本身还会调用其他函数
但是每一个针脚调用的函数的顺序和命令都是一样的
也就是说 两个针脚的功能是完全一样的  我想实现 函数复用
请问如何实现呢?例如
sbit led1 = P2^1;
sbit led2 = P2^2;
void led_on(u8 led_num);
void led_off(u8 led_num);
 
 
void main()
{
    
    while(1)
        {
            led_on(led1); //这里不会代码实现 所以就先这样写了
            led_on(led1);
            led_off(led2); //希望前辈们可以明白我的意思
            led_off(led2);
        }
 
}
 
void led_on(u8 led_num)
{
    led_num = 1;    //    这里不会怎么实现 所以先这样表示
    dey100ms;
}
 
 
void led_off(u8 led_num)
{
    led_num = 0;  //    这里不会怎么实现 所以先这样表示
    dey100ms;
}



专家
2024-12-08 10:51:24     打赏
2楼

看一下


院士
2024-12-08 16:27:35     打赏
3楼

请楼主再到论坛里“STM32”、“MCU”、“国产MCU”、“软件与操作系统”等栏目里去找一下,可能有你所需要的方法。


专家
2024-12-09 09:11:37     打赏
4楼

谢谢分享


助工
2024-12-10 08:58:39     打赏
5楼

意思是两个脚的电平信号做输入?然后检测到电平变成目标电平的瞬间调用想要执行的函数?


菜鸟
2024-12-13 15:30:13     打赏
6楼

我能想到的是用与运算,

bit a,b,c
sbit led1 = P2^1;  
sbit led2 = P2^2;  
sbit button1 = P2^3;  
sbit button2 = P2^4;

//button1和2,控制LED1和2;

main()
{
    while(1)
    {
        a=button1;//读取按键值,按下则为0,
        b=button2;
        c=a&b;    //与运算,不管哪个按键按下,都会调用下面函数,
        
        if (c==0)
        {
            delayms(20);//延时,消抖
            if (c==0)
            {
                led_on(led1);  
                led_off(led2);
            
            }
        
        }
        
    }
}


菜鸟
2024-12-13 15:37:55     打赏
7楼

如果只有两个按键,其他按键都没有,可以换一种


sbit led1 = P1^1;  
sbit led2 = P1^2; //LED与按键使用P1,按键用P2;
unsigned char P;
main()
{
    while(1)
    {
        P=P2;//按键用P2;读取按键值,默认为0xFF,任意按键按下,则不等于0xFF
        
        
        if (P!=0xFF)
        {
            delayms(20);//延时,消抖
            if (P!=0xFF)
            {
                led_on(led1);  
                led_off(led2);
            
            }
        
        }
        
    }
}


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]