怎样让单片机同时执行多项任务

2025-04-19 17:45:36
推荐回答(3个)
回答1:

这个也很容易做到啊,设置状态Mode如下:

0、按键没有按下,P1 P2的LED都熄灭。

1、P3.0按下时,P2的led跑马。

2、P3.1按下时,P1的led跑马闪烁,松开按键停止跑马,按下执行。

3、两按键同时按下,P1P2口的led都在跑马。


没有想象中那么难,现在定时器的中断服务函数里面写好跑马灯的状态

switch( Mode )
{
    case 0:P1 = 0xff;P2 = 0xff;break;
    case 1: P2 = ~(1<            if(i==8) i=0;
            P1 = 0xff;
            break;
    case 2: P1 = ~(1<            if(i==8) i=0;
            P2 = 0xff;
            break;
    case 3: P1 = ~(1<            P2 = ~(1<            if(i==8) i=0;
    default:break;
}

同时,在while(1)里面扫描按键,延时消抖我就不写了,就是这么个意思
if( P3 & 0xff == 0xff) Mode = 0;
if( P3 & 0xff == 0xfe) Mode = 1;
if( P3 & 0xff == 0xfd) Mode = 2;
if( P3 & 0xff == 0xfc) Mode = 3;

回答2:

完全意义上的同时执行多项功能是不可能的,因为程序是顺序执行的,每个功能占用一定的时间片:如果多项功能之间不争夺CPU资源,也就是说不占用累加器A及内存,可以基本上(不是绝对)实现同时执行多项相应功能;如果多项功能之间不争夺CPU资源,就实现不了了。

回答3:

广义上的同时执行,也是cpu的时间片轮转执行的,