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

📄 ch451.lst

📁 CH451专用键盘扫描
💻 LST
字号:
C51 COMPILER V7.07   CH451                                                                 04/06/2006 10:20:44 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE CH451
OBJECT MODULE PLACED IN ch451.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ch451.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /******************************************************************
   2          * 作    者: Gaoshibing(ceeback@gmail.com)
   3          * 编写日期: 2006/03/07
   4          *----------------------------------------------------------
   5          * 修改记录:
   6          
   7          ********************************************************************/
   8          
   9          #include <intrins.h>
  10          #include <absacc.h>
  11          #include "main.h"
  12          #include "mcs51.h"
  13          #include "io_define.h"
  14          #include "ch451.h"
  15          
  16          /****** CH451 操作命令 *********/
  17          #define CMD_GET_KEY     0X07
  18          #define CMD_SET_MODE_L  0X03  // 此字节 bit7 ~ bit0 与命令 bit7  ~ bit0 对应;
  19          #define CMD_SET_MODE_H  0X04  // 此字节 bit3 ~ bit0 与命令 bit11 ~ bit8 对应;
  20          #define CMD_DISPLAY_L   0X7F  // 显示参数;
  21          #define CMD_DISPLAY_H   0X05  // 设置显示命令字;
  22          
  23          #define CMD_LOAD_DAT_H  0X08  // 加载显示内容命令字高字节;
  24          
  25          
  26          /* CH451 说明:
  27          /* DIN 引脚输入数据低位在前,高位在后.操作命令为12位; bit0 ~ bit11.
  28          /* ch451 在 DCLK 上升沿从 DIN 引脚输入数据,在其下降沿从 DOUT 输出数据
  29          /* CH451 在 LOAD 引脚上升沿加载命令数据处理.*/
  30          
  31          /*************************************************
  32          * 函数功能:
  33          * 对CH451设置命令
  34          * cmd_high: 命令高字节;  此字节 bit3 ~ bit0 与命令 bit11 ~ bit8 对应;
  35          * cmd_low : 命令低字节;  此字节 bit7 ~ bit0 与命令 bit7  ~ bit0 对应;
  36          **************************************************/
  37          void ch451_set_cmd(uchar cmd_low,uchar cmd_high)
  38          {
  39   1              uchar i;
  40   1              
  41   1              for(i=0;i<8;i++)  //设定 CH451 系统参数命令低八位;
  42   1              {   
  43   2                      CH451_CLK=0;
  44   2                      if(0x01&cmd_low)
  45   2                              CH451_DIN = 1;
  46   2                      else
  47   2                              CH451_DIN = 0;
  48   2                      cmd_low >>= 1;
  49   2                      CH451_CLK=1;
  50   2                      _nop_();
  51   2              }
  52   1              
  53   1              for(i=0;i<4;i++)  //设定 CH451 系统参数命令高四位;
  54   1              {    
  55   2                      CH451_CLK = 0;
C51 COMPILER V7.07   CH451                                                                 04/06/2006 10:20:44 PAGE 2   

  56   2                      if(0x01&cmd_high)
  57   2                              CH451_DIN = 1;
  58   2                      else CH451_DIN = 0;
  59   2                      cmd_high >>= 1;
  60   2                      CH451_CLK = 1;
  61   2                      _nop_();
  62   2              }
  63   1              
  64   1              CH451_LOAD = 0;
  65   1              _nop_();
  66   1              CH451_LOAD = 1; // LOAD 上升沿加载命令;
  67   1              
  68   1      }
  69          
  70          /*************************************************
  71          * 函数功能:
  72          * 初始化设定芯片工作模式:关看门狗;开键盘扫描;开显示驱动;
  73          **************************************************/
  74          void init_ch451(void)
  75          {       
  76   1              CH451_DIN=0;
  77   1              DOUT=1;
  78   1              CH451_LOAD=1;
  79   1              CH451_DIN=1;
  80   1              ch451_set_cmd(CMD_SET_MODE_L,CMD_SET_MODE_H);
  81   1      }
  82          
  83          /*************************************************
  84          * 函数功能:
  85          * 加载 CH451 显示内容:
  86          * num:     数码管或者八只LED 的序号,0~7;
  87          * content: 显示内容;
  88          **************************************************/
  89          void display_led(uchar num,uchar content)
  90          {
  91   1              num &= 0x07;  // 只取低三位;
  92   1              ch451_set_cmd(content,CMD_LOAD_DAT_H|num);
  93   1      }
  94          
  95          /*************************************************
  96          * 函数功能:
  97          * 获取7位按键代码;
  98          **************************************************/
  99          uchar get_key(void)
 100          {       
 101   1              uchar i ,temp = CMD_GET_KEY;
 102   1              
 103   1              DOUT=1;
 104   1      
 105   1              for(i=0;i<4;i++)  // 写入读取按键值命令;
 106   1              {    
 107   2                      CH451_CLK = 0;
 108   2                      if(0x01&temp)
 109   2                              CH451_DIN = 1;
 110   2                      else 
 111   2                              CH451_DIN = 0;
 112   2                      temp >>= 1;
 113   2                      CH451_CLK = 1;
 114   2                      _nop_();
 115   2              }
 116   1              
 117   1              CH451_LOAD = 0;
C51 COMPILER V7.07   CH451                                                                 04/06/2006 10:20:44 PAGE 3   

 118   1              _nop_();
 119   1              temp = 0;
 120   1              CH451_DIN = 1;
 121   1              CH451_LOAD = 1;
 122   1              _nop_();
 123   1      
 124   1              if(DOUT)            // 获取7位按键代码
 125   1                      temp += 1;
 126   1      
 127   1              for(i=0;i<6;i++)
 128   1              {
 129   2                      temp <<= 1;
 130   2                      CH451_CLK = 0;
 131   2                      _nop_();
 132   2                      if(DOUT)
 133   2                              temp += 1;
 134   2                      CH451_CLK = 1;
 135   2                      _nop_();
 136   2              }
 137   1              
 138   1              //DOUT=1;
 139   1      
 140   1              return(temp);
 141   1      }
 142          
 143          /*************************************************
 144          * 函数功能:
 145          * 获取7位按键代码;
 146          **************************************************/
 147          uchar get_key1(void)
 148          {       
 149   1              uchar i ,temp = CMD_GET_KEY;
 150   1              
 151   1              DOUT=1;
 152   1      
 153   1              for(i=0;i<4;i++)  // 写入读取按键值命令;
 154   1              {    
 155   2                      CH451_CLK = 0;
 156   2                      if(0x01&temp)
 157   2                              CH451_DIN = 1;
 158   2                      else 
 159   2                              CH451_DIN = 0;
 160   2                      temp >>= 1;
 161   2                      CH451_CLK = 1;
 162   2                      _nop_();
 163   2              }
 164   1              
 165   1              CH451_LOAD = 0;
 166   1              _nop_();
 167   1              temp = 0;
 168   1              CH451_DIN = 1;
 169   1              CH451_LOAD = 1;
 170   1              _nop_();
 171   1      
 172   1              if(DOUT)            // 获取7位按键代码
 173   1                      temp += 1;
 174   1      
 175   1              for(i=0;i<6;i++)
 176   1              {
 177   2                      temp <<= 1;
 178   2                      CH451_CLK = 0;
 179   2                      _nop_();
C51 COMPILER V7.07   CH451                                                                 04/06/2006 10:20:44 PAGE 4   

 180   2                      if(DOUT)
 181   2                              temp += 1;
 182   2                      CH451_CLK = 1;
 183   2                      _nop_();
 184   2              }
 185   1              
 186   1              //DOUT=1;
 187   1      
 188   1              return(temp);
 189   1      }
 190          
 191          void clear_led(void)
 192          {
 193   1              uchar i;
 194   1      
 195   1              for(i=3;i<8;i++)
 196   1                      display_led(i,LED_NONE);
 197   1      
 198   1      }
 199          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    227    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -