51单片机用一个按键控制流水灯和跑马灯的切换

主要还是按键控制的函数写出来,却没什么作用,其它函数都可以。
按键控制函数如下:
void Aj()
{
if(key==0)
{
delay(200);
if(key==0);
{
m++;
n=m%2;
}
while(!key);
}
}
主函数如下:
void main()
{
while(1)
{
Aj();
if(n==0)
Ls();
else
Pm();
}
}
思路是:宏定义m=0和应该整形变量n,n只有两个值1、0,m一直在自加1,当m为偶数时,n=0,执行Ls()流水灯,否则执行Pm()跑马灯,但是烧录后一直都是跑马灯。
求大佬按键函数代码,万分感谢。

没看我博客?https://blog.csdn.net/xianfajushi/article/details/82279726?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163359864916780269898634%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=163359864916780269898634&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v2~rank_v29-4-82279726.pc_v2_rank_blog_default&utm_term=%E6%B5%81%E6%B0%B4&spm=1018.2226.3001.4450

void main()
{
    unsigned int a;
    unsigned char b=P1;
    bit k;
    while(1){P1=(k?P1>>1:P1<<1);a=55555;while(a--);if(!P1){k=~k;P1=(k?255:(b=(b?b<<1:255)));}}
}

把k替换为按键试看