普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 1921|回复: 4

大家好,我想实现顺序输入,但是数组里边移动老是出问题,找不到原因。

[复制链接]

4

主题

9

帖子

70

积分

注册会员

Rank: 2

积分
70
发表于 2021-10-9 21:41:30 | 显示全部楼层 |阅读模式
大家好,我想实现顺序输入,但是数组里边移动老是出问题,找不到原因。
#include "reg52.h"
#include "intrins.h"

   typedef unsigned char u8;
  typedef unsigned int u16;

  #define          GPIO_DIG  P0
        #define          GPIO_KEY  P1

          sbit  A2=P2^2;
           sbit  A3=P2^3;
           sbit  A4=P2^4;
          
          
      
extern  u8  Srt[16]={0x3f,0x06,0x5b,0x4f,  
                          0x66,0x6d,0x7d,0x07,          
                                          0x7f,0x6f,0x77,0x7c,          
                                      0x39,0x5e,0x79,0x71} ;
                                                                    
        u8  Srt1[16]={0x3f,0x06,0x5b,0x4f,  
                          0x66,0x6d,0x7d,0x07,          
                                          0x7f,0x6f,0x77,0x7c,          
                                      0x39,0x5e,0x79,0x71} ;                                            

         u8 keyvalue;
         u8 keyvalue1;
          u8 keyvalue2;
         u8 i=0;
         u8 j=0;
  
  void tye(u16  i)
   {
   while(i--);               
   }

   void  Dtys()
  {
     int i;
         i=0;
          for (i;i<8;i++)
          {
               P0=0x00;
                   switch(i)
                   {
                        case 0:
                                     A2=0;A3=0;A4=0;break;
                                case 1:
                                     A2=1;A3=0;A4=0;break;
                                case 2:
                                     A2=0;A3=1;A4=0;break;
                                case 3:
                                     A2=1;A3=1;A4=0;break;
                                case 4:
                                     A2=0;A3=0;A4=1;break;
                                case 5:
                                     A2=1;A3=0;A4=1;break;
                                case 6:
                                     A2=0;A3=1;A4=1;break;
                                case 7:
                                     A2=1;A3=1;A4=1;break;                                          
                                         
                                         
                                          }
                
                        P0=Srt[i];
                         tye(100);
                         P0=0x00;
                   }
                       
               

  
  }


   void keydown()
   {
      char  a=0;
          GPIO_KEY=0x0f;
          if (GPIO_KEY!=0x0f)
          {
            tye(1000);
                if (GPIO_KEY!=0x0f)
                {
                     switch(GPIO_KEY)
                         {
                             case(0x07):keyvalue=0;break;
                                 case(0x0b):keyvalue=1;break;
                                 case(0x0d):keyvalue=2;break;
                                 case(0x0e):keyvalue=3;break;
                         }
                         GPIO_KEY=0xf0;
                           switch(GPIO_KEY)
                         {
                             case(0x70):keyvalue=keyvalue;break;
                                 case(0xb0):keyvalue=keyvalue+4;break;
                                 case(0xd0):keyvalue=keyvalue+8;break;
                                 case(0xe0):keyvalue=keyvalue+12;break;
                         }
                         while ((a<50)&&(GPIO_KEY!=0xf0))
                         {
                         tye(1000);
                         a++;
                         }
               
                }

          }
   }

          void rtr()
          {                   Srt[4]=Srt[3];
                                Srt[3]=0x00;
                                  Srt[3]=Srt[2];
                                   Srt[2]=Srt[1];
                                  Srt[1]=Srt[0];
                            Srt[0]=keyvalue1;
          }
void  main()
{  

            
          while (1)
          {
          keydown();
         
          keyvalue1=Srt1[keyvalue];
          
           rtr();                  
          
                                                        
                Dtys();
                                        }
        
         
}
回复

使用道具 举报

0

主题

7

帖子

36

积分

新手上路

Rank: 1

积分
36
发表于 2021-10-10 12:01:14 | 显示全部楼层
keyvalue1=Srt1[keyvalue];
rtr();
可能是少了判断,没按键的时候你也运行了。
回复 支持 反对

使用道具 举报

4

主题

9

帖子

70

积分

注册会员

Rank: 2

积分
70
 楼主| 发表于 2021-10-10 16:47:18 | 显示全部楼层
谢谢你!你的建议解决了我的问题,我找了几天问题没有找到原因,您的话一下子点到了问题的实质。非常感谢您!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-19 15:37 , Processed in 0.083434 second(s), 33 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表