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

📄 keyboard451.lst

📁 这是一称的项目原文件,包括T9汉字输入,打印机,24C512,已经引用到产品上
💻 LST
字号:
C51 COMPILER V7.08   KEYBOARD451                                                           03/05/2007 16:38:04 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE KEYBOARD451
OBJECT MODULE PLACED IN keyboard451.OBJ
COMPILER INVOKED BY: D:\程序\keil c\C51\BIN\C51.EXE keyboard451.c LARGE INCDIR(c:|keil) DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************************************
   2          *  标题:  蓝海微芯LJD-SY-5100单片机开发系统演示程序                            *
   3          *  文件:  keyboard451.c                                                              *
   4          *  日期:  2006-7-22                                                             *
   5          *  版本:  1.0                                                                  *
   6          *  作者:  Pillar                                                             *
   7          ********************************************************************************
   8          *  描述:                                                                       *
   9          *              键盘管理                                         *     
  10          *                                                                              *
  11          
  12          ********************************************************************************
  13          * 【版权】 Copyright(C) belongs to 天宇蓝翔科技有限公司     All Rights Reserved *          
  14          * 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                  *
  15          *******************************************************************************/
  16          #include <keyboard451.h>
  17          
  18          BYTE   ch451_key;                                  // 存放键盘中断中读取的键值
  19          BOOL   renew_key_id;
  20          //*************************************************
  21          
  22          void ch451_init()                          //初始化
  23          { 
  24   1        P1 = 0x60;
  25   1        
  26   1        ch451_din =0;
  27   1        ch451_dclk=1;                            //先低后高,选择4线输入
  28   1        ch451_din =1;
  29   1        ch451_load=1;
  30   1        ch451_dout=1;
  31   1      
  32   1      
  33   1        IT1=0;                                               //设置低电平触发
  34   1        IE1=0;                                               //清中断标志
  35   1        PX1=1;                                               //设置中断1为高优先级
  36   1        EX1=1;                                               //开外部中断1
  37   1        //ch451_write(0x201);                    //451 reset
  38   1        ch451_write(0x402);                      //set keyboard mode
  39   1      
  40   1      }
  41          //*****************************************************
  42          //used in num key
  43          BYTE get_num_address_from_key_value(BYTE key_value)  //读键值
  44          {
  45   1         switch (key_value){
  46   2            case ZONGQING_KEY:                   //6
  47   2               return 5;
  48   2            case DANQING_KEY:                    //7
  49   2               return 6;
  50   2            case HUIZONG_KEY:                    //8
  51   2               return 7;
  52   2            case ZIDONG_KEY:                     //9
  53   2               return 8;
  54   2                case JIUCUO_KEY:                     //
  55   2               return 'e';
C51 COMPILER V7.08   KEYBOARD451                                                           03/05/2007 16:38:04 PAGE 2   

  56   2            case ZONGZHONG_KEY:                  //
  57   2               return 1;
  58   2            case CHAXUN_KEY:                     //
  59   2               return 2;
  60   2            case ZOUZHI_KEY:                     //
  61   2               return 3;
  62   2            case BEIGUANG_KEY:   
  63   2                       return 4;
  64   2            case CUNRU_KEY:                     //
  65   2               return 'f';
  66   2            case GUILING_KEY:                   //0
  67   2               return 0;      
  68   2            case ZONGCI_KEY:                    //1
  69   2               return 9;
  70   2            case LEIBIE_KEY:                    //2
  71   2               return 'a';
  72   2            case SHEPI_KEY:                     //3
  73   2               return 'b';
  74   2            case RIQI_KEY:                      //4
  75   2               return 'c';
  76   2            case SHIJIAN_KEY:                   //5
  77   2               return 'd';
  78   2                case GUANJI_KEY:                    //5
  79   2               return 'g';
  80   2            default :
  81   2               return 17;
  82   2         }
  83   1      
  84   1      }
  85          
  86           void ch451_write(WORD command)               
  87          {
  88   1        BYTE i;
  89   1        WORD tem;
  90   1        
  91   1        tem = command;
  92   1        EX1=0;                                               //禁止键盘中断
  93   1        //tem1 = command&0xff;
  94   1        ch451_load=0;                            //命令开始       
  95   1        for(i=0;i<12;i++){                       //送入12位数据,低位在前
  96   2          
  97   2          ch451_din = (tem &1);                               
  98   2          ch451_dclk=0;
  99   2          tem = (tem >> 1);
 100   2          ch451_dclk =1;                         //上升沿有效
 101   2        }
 102   1        ch451_load =1;                           //加载数据
 103   1        EX1=1;
 104   1      }
 105          
 106          
 107          
 108          //*************************************************
 109          //输入命令子程序,MCU从451读一字节
 110          BYTE ch451_read()
 111          {
 112   1        BYTE i;
 113   1        BYTE command,keycode;                   //定义命令字,和数据存储器
 114   1        EX1=0;                                              //关中段  
 115   1        command=0x07;                                   //输入读451命令字     
 116   1        ch451_load=0;
 117   1        for(i=0;i<4;i++){
C51 COMPILER V7.08   KEYBOARD451                                                           03/05/2007 16:38:04 PAGE 3   

 118   2       
 119   2          ch451_din=command&1;                         //送入最低位
 120   2          ch451_dclk=0;                        
 121   2          command>>=1;                                     //往右移一位
 122   2          ch451_dclk=1;                                    //产生时钟上升沿锁通知CH451输入位数据
 123   2       }
 124   1        ch451_load=1;                                      //产生加载上升沿通知CH451处理命令数据
 125   1        keycode=0;                                         //清除keycode
 126   1        for(i=0;i<7;i++){
 127   2          keycode<<=1;                                     //数据移入keycode,高位在前,低位在后
 128   2          keycode|=ch451_dout;                         //从高到低读入451的数据
 129   2          ch451_dclk=0;                                    //产生时钟下升沿通知CH451输出下一位
 130   2          ch451_dclk=1;
 131   2       }
 132   1        IE1=0;                                                 //清中断标志
 133   1        EX1=1;
 134   1        return(keycode);                                   //反回键值
 135   1      }
 136          
 137          
 138          //*************************************************
 139          //中断子程序  使用中断2,寄存器组1
 140          
 141          void ch451_inter(void) interrupt 2 using 1
 142          {                                        
 143   1        BYTE i,keycode;
 144   1        BYTE command;  
 145   1      
 146   1        EX1 = 0;                              //关中断
 147   1        command=0x07;                         //读取键值命令的高4位0111B
 148   1        ch451_load=0;                         //命令开始
 149   1        for(i=0;i<4;i++){
 150   2          ch451_din=command&1;                //低位在前,高位在后
 151   2          ch451_dclk=0;
 152   2          command>>=1;                        //右移一位
 153   2          ch451_dclk=1;                       //产生时钟上升沿锁通知CH451输入位数据
 154   2       }
 155   1        ch451_load=1;                         //产生加载上升沿通知CH451处理命令数据
 156   1        keycode=0;                            //清除keycode
 157   1        for(i=0;i<7;i++){
 158   2          keycode<<=1;                        //数据作移一位,高位在前,低位在后
 159   2          keycode|=ch451_dout;                //从高到低读入451的数据
 160   2          ch451_dclk=0;                       //产生时钟下升沿通知CH451输出下一位
 161   2          ch451_dclk=1;
 162   2       }
 163   1        ch451_key=keycode;                    //保存上次的键值 
 164   1        renew_key_id = 1;
 165   1         EX1 = 1;                             //开中断
 166   1         IE1 = 0;                                             //清中断标志,可由cpu自动进行
 167   1      }
 168          
 169          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    306    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =      1    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
C51 COMPILER V7.08   KEYBOARD451                                                           03/05/2007 16:38:04 PAGE 4   

END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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