pppphhhhyyyy 2023-09-06 22:16 采纳率: 80.6%
浏览 3
已结题

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;
            }
        }

    }
}

  • 写回答

2条回答 默认 最新

  • 少林and叔叔 2023-09-06 22:22
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月14日
  • 已采纳回答 9月6日
  • 修改了问题 9月6日
  • 创建了问题 9月6日