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

📄 de.lst

📁 本程序是按键程序,通过RS232串口显示按键值,按键扫描是用定时器T0来实现的,特别适合初学者学习学习
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.04   DE                                                                    11/02/2007 13:39:47 PAGE 1   


C51 COMPILER V8.04, COMPILATION OF MODULE DE
OBJECT MODULE PLACED IN de.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE de.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /**********************************************************************
   2          /* 文件名称: de.C                                                                                                                                                      
   3          /* 文件标识: none
   4          /* 适用器件: C8051F120 
   5          /* 摘 要: 本文件是键盘子程序;使用外部22.1184MHz晶振. 
   6          /* 当前版本:1.0
   7          /* 作 者:李国涛
   8          /* 完成日期:2007年11月2日
   9          /***********************************************************************/
  10          
  11          /**********************************************************************/
  12          //INCLUDE引用外部头文件 
  13          
  14          #include <c8051f120_VarantReg.h> 
  15          #include <ABSACC.H>             
  16          #include "da-i.c"
  17          
  18          /**********************************************************************/
  19          
  20          /************************************************************************
  21          // 常量及全局变量定义
  22          ************************************************************************/
  23          /***********************************************************************/
  24          
  25          unsigned char Key_Value_Table[48]={ 0x53,0x30,0x31,0x53,0x30,0x32,0x53,0x30,0x33,0x53,0x30,0x34, //S01,S02
             -,S03,S04
  26                                              0x53,0x30,0x35,0x53,0x30,0x36,0x53,0x30,0x37,0x53,0x30,0x38, //S05,S06
             -,S07,S08
  27                                              0x53,0x30,0x39,0x53,0x31,0x30,0x53,0x31,0x31,0x53,0x31,0x32, //S09,S10
             -,S11,S12
  28                                              0x53,0x31,0x33,0x53,0x31,0x34,0x53,0x31,0x35,0x53,0x31,0x36};//S13,S14
             -,S15,S16                 
  29                                            
  30          uchar rs232_send_size;
  31          uchar key;    //key 是执行keyscan读取的值 
  32          uchar temp;  //temp是执行KeySPI的结果
  33          
  34          /*      TIMER0 INI      */
  35          bit time_1ms_flag;
  36          bit time_10ms_flag;
  37          bit time_50ms_flag;
  38          bit time_100ms_flag;
  39          bit time_500ms_flag;
  40          bit time_1s_flag;
  41          bit time_60s_flag;
  42          sbit P3_5=P3^5;
  43          sbit P2_4=P2^4;
  44          sbit P2_5=P2^5;
  45          sbit P2_6=P2^6;
  46          uchar time_1ms;
  47          uchar time_10ms;
  48          uchar time_50ms;
  49          uchar time_100ms;
  50          uchar time_500ms;       
  51          uchar time_1s;
C51 COMPILER V8.04   DE                                                                    11/02/2007 13:39:47 PAGE 2   

  52          uchar time_60s;
  53          bit send_flag ;
  54          /************************************************************************/ 
  55          
  56          /************************************************************************
  57          
  58          * 函数名称:send_232;
  59          
  60          * 函数功能描述:向232发送字符到SBUF0;
  61          
  62          ************************************************************************/
  63          
  64          void send_232(send_232_end,uchar send_232_code[])  
  65          {       
  66   1        if(rs232_send_size<send_232_end)
  67   1      
  68   1              {
  69   2                SBUF0=send_232_code[rs232_send_size];
  70   2                rs232_send_size++;
  71   2          }
  72   1      }
  73          
  74          /******************************************************
  75          * 函数名称:serial_0();
  76          *
  77          * 函数功能描述:UART0采用定时中断的方式通过串0口发送字符,字符个数为3个
  78          *              
  79          * 输入参数:none
  80          *
  81          * 返回数据:none;
  82          ******************************************************/
  83          
  84          void serial_0(void) interrupt 4
  85          {                        
  86   1        if ( TI0 )                
  87   1         {                                                                            
  88   2                send_232(3,&Key_Value_Table[3*temp-3]);  
  89   2                TI0=0;
  90   2              }
  91   1           if ( RI0 )                   
  92   1                {
  93   2                   RI0=0;
  94   2                 }              
  95   1      }
  96          
  97          /*********************************************************
  98          
  99          * 函数名称:delay();
 100          *
 101          * 函数功能描述:是一个延时程序;
 102          *              
 103          * 输入参数:x1
 104          *
 105          * 返回数据:none;
 106          
 107          ********************************************************/
 108          
 109          void delay(int x1)
 110          {
 111   1        unsigned int y1;
 112   1        for (y1=1;y1<x1;y1++);
 113   1      }
C51 COMPILER V8.04   DE                                                                    11/02/2007 13:39:47 PAGE 3   

 114          
 115          /**********************************************************
 116          *将按键的原代码转化为1--16
 117          
 118          * 函数名称:char KeySPI();
 119          *
 120          * 函数功能描述:执行keyscan函数出来的编码原则是  {11 21 41 81}  如果要显示1--16的数值.那么就用case语句.再返
             -回数值;
 121                                                                                       {12 22 42 82}
 122                                                                                       {14 24 44 84}
 123                                                                                       {18 28 48 88}                   
 124          * 输入参数:key;
 125          *
 126          * 返回数据:temp;
 127          ***********************************************************/
 128          unsigned char KeySPI(unsigned char key)
 129          {
 130   1              switch(key)
 131   1              {
 132   2                      case 0x11:              return 1;//0x01            
 133   2                      break;
 134   2                      case 0x21:              return 2;//0x02
 135   2                      break;
 136   2                      case 0x41:              return 3;//0x03
 137   2                      break;
 138   2                      case 0x81:              return 4;//0x04
 139   2                      break;
 140   2                      case 0x12:              return 5;//0x05
 141   2                      break;
 142   2                      case 0x22:              return 6;//0x06
 143   2                      break;
 144   2                      case 0x42:              return 7;//0x07
 145   2                      break;
 146   2                      case 0x82:              return 8;//0x08
 147   2                      break;
 148   2                      case 0x14:              return 9;//0x09
 149   2                      break;
 150   2                      case 0x24:              return 10;//0x0a
 151   2                      break;
 152   2                      case 0x44:              return 11;//0x0b
 153   2                      break;
 154   2                      case 0x84:              return 12;//0x0c
 155   2                      break;
 156   2                      case 0x18:              return 13;//0x0d
 157   2                      break;
 158   2                      case 0x28:              return 14;//0x0e
 159   2                      break;
 160   2                      case 0x48:              return 15;//0x0f

⌨️ 快捷键说明

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