发新话题
打印

这是本人写的一个键盘扫描的程序,但是扫描不了,求助

这是本人写的一个键盘扫描的程序,但是扫描不了,求助

#include<reg52.h>   
#define uchar unsigned char
#define uint unsigned int
void send595(uchar dat);
void disp(uchar w,uchar d);
void delay(uint z);
void out595(void);void dispoff();
uchar keyscan();
sbit MOSIO=P2^2;
sbit R_CLKa=P2^3;
sbit S_CLKa=P2^4;

uchar code duan[]={~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F};
uchar code wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0xff};       

uchar key,temp,num;
void main()
{              
       
           while(1)
         {   
             dispoff();
            keyscan();
            disp(1,num) ;
             delay(5);
             
             
             
          }
}
   uchar keyscan()
            {       
                
                      P3=0xf7;             
                temp=P3;
                temp=temp&0xf0;
             if(temp!=0xf0)
                {
                      delay(5);
                      temp=P3;
                      temp=temp|0x0e;
                        switch(temp)
                                {
                                case 0xe7:num=0; break;
                                                       
                                case 0xd7:num=1; break;
                                               
                                case 0xb7:num=2; break;
                                       
                                case 0x77:num=3; break;
                                                                                       
                                }                       
          
          
                   if(temp!=0xf0)
                {
                        temp=P3;
                        temp=temp|0x0e;                        
                        }               
                }
      return num;
             }         
void send595(uchar dat)          
     {  
        uchar i;        
        for(i=0;i<8;i++)
        {   
                {if((dat<<i)&0x80)  MOSIO=1; else MOSIO=0;
               
                        MOSIO=1;
                else MOSIO=0;
                }
               
                S_CLKa=0;
       
                S_CLKa=1;
       
        }
        }
   void out595(void)       
{   
        R_CLKa=0;

        R_CLKa=1;     
             

       
} void disp(uchar w,uchar d)         
{         
         
        // send595(wei[w]);
         //out595();
          send595(wei[w]);
          send595(wei[w]);
          out595();
          send595(duan[d]);
          out595();
                                          
}
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
                }
void dispoff()     
{
        send595(0);                       
        send595(0);
        out595();
       
        send595(0xff);       
        out595();
       
        }
附件: 您所在的用户组无法下载或查看附件

TOP

找仿真器跟踪一下程序吧
新人报道注意事项:
1 给大家送一个见面礼, 比如自己收藏的程序代码资料等
2 如果有可能请认真回复5个贴子 活跃本论坛的气氛
3 不要发类似: 请给编一个***代码发到***邮箱的贴子,天下没有免费午餐

TOP

用什么仿真器比较好呢?

TOP

发新话题