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

📄 keyboard.lst

📁 8279的驱动测试程序 用于控制4*4键盘 比较简单,适合初学者使用
💻 LST
字号:
C51 COMPILER V8.02   KEYBOARD                                                              08/27/2007 12:25:45 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE KEYBOARD
OBJECT MODULE PLACED IN keyboard.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE keyboard.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <AT89X55.H>
   2          #include<absacc.h>
   3          #include <string.h>
   4          #include "keyboard.h"
   5          
   6          
   7          
   8          
   9          /******************************* 显示字符*****************************************/
  10          void print(char *pdat)
  11          {
  12   1              int i,len;
  13   1              len = strlen(pdat);
  14   1              for(i=0;i<len;i++)
  15   1              {
  16   2                      SBUF = pdat[i];
  17   2                      while(TI != 1)
  18   2                      {
  19   3                      ;                       
  20   3                      }
  21   2                      TI = 0;
  22   2              }
  23   1      }
  24          
  25          /*******************************显示数字*****************************************/
  26          
  27          void printhex(ulong dat)
  28          {
  29   1              uchar temp;
  30   1              char i;
  31   1              for(i=28;i>=0;i=i-4)
  32   1              {
  33   2                      temp = (dat)>>i;
  34   2                      temp = temp&0xf;
  35   2                      if(temp >= 0 && temp <=9)       temp = temp + '0';
  36   2                      else if(temp >= 0xa && temp <= 0xf)      temp = temp + '0' +7;
  37   2                      SBUF = temp;
  38   2                      while(TI != 1)
  39   2                      {
  40   3                      ;                       
  41   3                      }
  42   2                      TI = 0;
  43   2      
  44   2              }
  45   1      
  46   1      
  47   1      }
  48          
  49          /******************************* 8279延迟函数*****************************************/
  50          void delay8279()
  51          {
  52   1              int i;
  53   1              for(i=0;i<200;i++);     
  54   1      }
  55          
C51 COMPILER V8.02   KEYBOARD                                                              08/27/2007 12:25:45 PAGE 2   

  56          
  57          /******************************* 向8279发命令*****************************************/
  58          uchar SendCom(uchar com)
  59          {
  60   1              A1 = 0;                // A1 = P3^5;  定时器 T1
  61   1              A0 = 0;                // A0 = P3^4;  定时器 TO
  62   1              A08279 = 1;             //the signale in or out are interpreted as a command or status                   
             -       
  63   1              Com8279 = com; 
  64   1              delay8279();
  65   1              return 0;       
  66   1      }
  67          
  68          
  69          /******************************* 8279读数据*****************************************/
  70          uchar GetFiFoStatus()
  71          {
  72   1              uchar temp;
  73   1              A08279 = 1;                  //
  74   1              A0 = 0;                     // A0 = P3^4;  定时器 TO
  75   1              A1 = 0;                     // A1 = P3^5;  定时器 T1
  76   1              temp = Dat8279;
  77   1              return temp;
  78   1      }
  79          
  80          /******************************* 8279读数据*****************************************/
  81          uchar RdData()
  82          {
  83   1              uchar temp;                   //i,num;
  84   1              A1 = 0;
  85   1              A0 = 0;
  86   1              SendCom(0x40);                      //  read FIFO
  87   1              A08279 = 0;                           // 数据
  88   1              temp = Dat8279;
  89   1              return temp;    
  90   1      }
  91          
  92          /******************************* 初始化8279*****************************************/
  93          
  94           Init8279()
  95          {
  96   1              EX1 = 1;                              //外中断1中断允许
  97   1              IE1 = 0;                             //INT1中断请求标志位,有外部中断请求时置1,
  98   1              IT1 = 1;                             //INT1 触发方式控制位   ,为负跳变触发方式
  99   1              A1 = 0;
 100   1              A0 = 0;              
 101   1              SendCom(0);                              //设置键盘工作方式  两键锁定    
 102   1              SendCom(0x20 | 18);                      //设置时钟频率  大约为100KHZ           
 103   1              return 1;       
 104   1      }
 105          
 106          
 107          /******************************* 外中断INT1******************************************/
 108          
 109          
 110          void KeyIsr() interrupt 2 using 0        
 111          {
 112   1              uchar temp;
 113   1              print("int1\r\n");
 114   1              temp = RdData();
 115   1              if(temp == 0)   return ;
 116   1              print("in int data is:");
C51 COMPILER V8.02   KEYBOARD                                                              08/27/2007 12:25:45 PAGE 3   

 117   1              printhex(temp);
 118   1              print("\r\n");
 119   1              print("test 8 :");
 120   1              printhex(0x8);
 121   1              print("\r\n");
 122   1              IE1 = 0;
 123   1      
 124   1      }
 125          
 126          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    321    ----
   CONSTANT SIZE    =     35    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      10
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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