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

📄 hw11.c

📁 8279键盘显示芯片实验源程序(C语言编写)
💻 C
字号:
#include<reg51.h>
#include<absacc.h>
#define com XBYTE[0x7F01]
#define dat XBYTE[0x7F00]
#define uchar unsigned char
uchar code  keyval[20]={0xc9,0xc1,0xd1,0xe1,0xc8,0xd8,0xe8,0xc0,0xd0,0xe0,0xf0,0xf8,0xf1,0xf9,0xe9,0xd9};
uchar code  keyfun[4]={0xf2,0xfa,0xf3,0xfb};
uchar code  table[20]={0x0c,0x9F,0x4A,0x0B,0x99,0x29,0x28,0x8F,0x08,0x09,0x88,0x38,0x6C,0x1A,0x68,0xe8};
uchar idata diss[8]={0,1,2,3,4,5,6,7};
sbit  clflag=ACC^7;
uchar diskeyin();
uchar deky();
uchar bit1=0x85;

void main(void)
  {
    uchar i;
    com=0x00;          //keyboard,display mode
    com=0x32;          //divide frequency
    com=0xdf;          //clear  all
    do{ACC=com;}
    while(clflag==1);  //wait clear end
    //com=0x90;
    com=0x85;
    dat=0xc8;
    while(1)
      {diskeyin();
      }
   }
 
void delay(unsigned int i)
{
   unsigned int j,k;
   for(k=0;k<i;k++)
   for(j=0;j<100;j++);  
}


uchar diskeyin()
 {
   uchar i,j,m,n,comp;
   while(deky()==0);
   com=0x40;         //read FIFO RAM order
   i=dat;
   comp=i;
   for(j=0;j<=15;j++)
      {if(comp==keyval[j])
         {com=0x50;
          com=bit1--;
          dat=table[j];
          if(bit1==0x7f) {bit1=0x85;}
         }
       }
   for(n=0;n<=3;n++)
      { if(comp==keyfun[3]) 
           {com=0xdf;          //clear  all
            do{ACC=com;}
            while(clflag==1);  //wait clear end
            com=0x85;
            dat=0xc8;
            bit1=0x85;
            diskeyin();
            }
        if(comp==keyfun[n])
           {while(1)
              {bit1=0x80;
               for(m=0;m<6;m++)
                  {com=0x50;
                   com=bit1++;
                   dat=table[n];
                   delay(100);
                   dat=0xff;
                  }
               }
            }
       }
   
 }

uchar deky(void)
 { uchar k;
   k=com;
   return(k&0x0f);
 }


⌨️ 快捷键说明

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