51单片机按键与数码管相关问题

想请问一下这个代码哪里有问题?测试了一下程序没有进入if语句这是为什么?

img

#include "regx52.h"
#include "key.h"
#include "Delay.h"
#include "Matrx.h"

unsigned char keynumber,i=0;
unsigned char m;
unsigned char arr[] = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
void main()
{
    while (1)
    {
        keynumber = key();
        if(keynumber==1)
        {
            if(m==-1)
            {
                Matrx(0, arr[(i+2) % 16]);i++;m=1;
            }
            else
            {
                Matrx(0, arr[i % 16]);
                i++;m=1;
            }
        }
        if (keynumber == 2)
        {
            if(m==1 )
            {
                Matrx(0, arr[(i-2) % 16]);i=i-3;m=-1;
            }
            else
            {
                Matrx(0, arr[i % 16]);
                --i;m=-1;    
            }
            if (i <= -1)
            {
                i = 15;
            }
        }

    }
}

你这里的m是无符号数,这个条件不会满足啊!应该将m定义为char类型的数据!

【相关推荐】




如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^