⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zuo.c

📁 凌阳驱动HD7279键盘(4×4
💻 C
字号:
#include "SPCE061A.h"
unsigned int data_out1;
unsigned int key_in[16]={4,5,6,7,12,13,14,15,20,21,22,23,28,29,30,31};
unsigned int  key_out[17]={"1234567890abcdef"}; //  {"159C260D37AE48BF"};

//cs7279:IOA0
//CLK7279:IOA1
//dat7279:IOA2
//key7279:IOA3

unsigned int keyfind1(void);
unsigned int keyfind(void);
void send7279(unsigned int read);
unsigned int read7279(void);
void delay (unsigned long int us);

//******************************************************************************************
// JIAN PAN
//******************************************************************************************
unsigned int keyfind1(void)                  
{
  unsigned int i,key;
        for(i=0;i<16;i++)
        {
           if(key_in[i]==key)
            break;
            else continue;
       }
       return(key_out[i]);
}


void send7279(unsigned int read)
{  
	unsigned int out,i,number;
   number=*P_IOA_Dir|0x0004;
   *P_IOA_Dir=number;
   number=*P_IOA_Attrib|0x0004;
   *P_IOA_Attrib=number;
   out=read;
   number=*P_IOA_Data&0xfffe;
   *P_IOA_Data=number;                    //cs set to low  // cs7279=0;  //选中7279
   delay(1);
   for(i=0;i<8;i++)
    {  
       if(out&0x0080)
         {
            data_out1=*P_IOA_Data|0x0004;                 //data set to high
	       *P_IOA_Data=data_out1;                       //data7279=1;
         }
         else
           {
             data_out1=*P_IOA_Data&0xfffb;
             *P_IOA_Data=data_out1;                   //data7279=0;
            }
         data_out1=*P_IOA_Data|0x0002;                 //clk set to high
	    *P_IOA_Data=data_out1;                       //clk7279=1;             //产生同步时钟上升沿
         delay(1);
          data_out1=*P_IOA_Data&0xfffd;
          *P_IOA_Data=data_out1;                       //clk7279=0;
         delay(1);
         out<<=1;
      *P_Watchdog_Clear=1;
      }
        //  data_out1=*P_IOA_Data&0xfffb;
         // *P_IOA_Data=data_out1;                        //data7279=0;
}

unsigned int read7279(void)
{  unsigned int in,i,data;
  
   data_out1=*P_IOA_Data&0xfffe;
   *P_IOA_Data=data_out1;                          //cs7279=0;
   delay(2);
   
   send7279(0x0015);
   *P_IOA_Dir=*P_IOA_Dir&0xfffb;
   *P_IOA_Attrib=*P_IOA_Attrib&0xfffb;
   in=0;
   data_out1=*P_IOA_Data|0x0004;                 //data set to high
   *P_IOA_Data=data_out1;                     //data7279=1;
   delay(2);
   for(i=0;i<8;i++)
    {
       data_out1=*P_IOA_Data|0x0002;                 //clk set to high
	   *P_IOA_Data=data_out1;                     //clk7279=1;
       delay(2);
       in<<=1;
       data=*P_IOA_Data&0x0004;
       if(data)                             //if (data7279)
        {
          in=in|0x0001;
         }
         data_out1=*P_IOA_Data&0xfffd;
         *P_IOA_Data=data_out1;                       // clk7279=0;
        delay(2);
      *P_Watchdog_Clear=1;
     }
     data_out1=*P_IOA_Data&0xfffb;
      *P_IOA_Data=data_out1;                     //                  data7279=0;
    return(in);
}

void delay (unsigned long int us)
{
  while(us--);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -