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

📄 main.lst

📁 单片机与液晶屏接口程序
💻 LST
字号:
C51 COMPILER V7.50   MAIN                                                                  11/21/2007 12:21:47 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: f:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <stdio.h>
   2          //#include <reg51.h>
   3          #include <absacc.h> 
   4          #include <intrins.h>
   5          #include "me.h" 
   6          #include "LCD1602.h"
   7          unsigned char code ASCII[] ="0123456789ABCDEF";
   8          
   9          #define key0    0x12
  10          #define key1    0x81
  11          #define key2    0x82
  12          #define key3    0x84
  13          #define key4    0x41
  14          #define key5    0x42
  15          #define key6    0x44
  16          #define key7    0x21
  17          #define key8    0x22
  18          #define key9    0x24
  19          #define keym1   0x88
  20          #define keym2   0x48
  21          #define keym3   0x28
  22          #define keym4   0x18                                    //确定
  23          #define keymx   0x11    //*     
  24          #define keym_   0x14    //#
  25          
  26          void Delay(int x)
  27          {
  28   1              int i,j;
  29   1              for(j=0;j<x;j++)
  30   1              {
  31   2                      for(i=0;i<250;i++);
  32   2              }
  33   1      }
  34          
  35          /*键盘扫描函数*/
  36          uchar keyscan(void)
  37          {
  38   1              uchar scancode ,tmpcode;
  39   1              P1=0xf0;
  40   1              if((P1&0xf0)!=0xf0)
  41   1              {
  42   2                      Delay(20);
  43   2                      if((P1&0xf0)!=0xf0)
  44   2                      {
  45   3                              scancode=0xfe;
  46   3                              while((scancode&0x10)!=0)
  47   3                              {
  48   4                                      P1=scancode;
  49   4                                      if((P1&0xf0)!=0xf0)
  50   4                                      {
  51   5                                              tmpcode=(P1&0xf0)|0x0f;
  52   5                                              return((~scancode)+(~tmpcode));
  53   5                                      }
  54   4                                      else
  55   4                                      {
C51 COMPILER V7.50   MAIN                                                                  11/21/2007 12:21:47 PAGE 2   

  56   5                                              scancode=(scancode<<1)|0x01;
  57   5                                      }       
  58   4                              }
  59   3                      }
  60   2              }
  61   1              return (0);
  62   1      }
  63          uchar newKey;
  64          bit KeyFlag=0;
  65          
  66          void Key_proess(void)
  67          {
  68   1      
  69   1      //      static unsigned char dispbit=0;                         //显示的位置
  70   1              static unsigned char funset=0; 
  71   1              unsigned char inkeyascii; 
  72   1      //      uchar i;
  73   1                                LCD_write_char(1,0,ASCII[newKey>>4]);
  74   1                                LCD_write_char(1,1,ASCII[newKey & 0x0f]);
  75   1                      switch( newKey ) 
  76   1                      {
  77   2                              case key0:      inkeyascii=0;           break;
  78   2                              case key1:      inkeyascii=1;           break;
  79   2                              case key2:      inkeyascii=2;           break;
  80   2                              case key3:      inkeyascii=3;           break;
  81   2                              case key4:      inkeyascii=4;           break;
  82   2                              case key5:      inkeyascii=5;           break;
  83   2                              case key6:      inkeyascii=6;           break;
  84   2                              case key7:      inkeyascii=7;           break;
  85   2                              case key8:      inkeyascii=8;           break;
  86   2                              case key9:      inkeyascii=9;           break;
  87   2                              case keym1:     inkeyascii=0xff;        break;
  88   2                              case keym2:     inkeyascii=0xff;        break;
  89   2                              case keymx:     inkeyascii=0xff;        break;
  90   2                              case keym_:     inkeyascii=0xff;        break;
  91   2                              case keym3:     inkeyascii=0xff;        break;
  92   2                              case keym4:     
  93   2                              default:        inkeyascii=0xff;        break;
  94   2                      } 
  95   1                      if (inkeyascii!=0xff)
  96   1                      {
  97   2      //                      for(j=0;j<14;j++)
  98   2                              //{
  99   2                                LCD_write_char(0,0,ASCII[inkeyascii]);
 100   2      //                      }
 101   2      
 102   2                              //送显示
 103   2                              switch( funset ) 
 104   2                              {
 105   3                                      case 0: 
 106   3                                              break;
 107   3                                      case 1: 
 108   3                                              break;
 109   3                                      default:        inkeyascii=0xff;        break;
 110   3                              }
 111   2                      }
 112   1                      
 113   1      }
 114          
 115          void main(void)
 116          {
 117   1              unsigned char key;
C51 COMPILER V7.50   MAIN                                                                  11/21/2007 12:21:47 PAGE 3   

 118   1              LCD_init();
 119   1              LCD_write_string(LINE1,0,"Add");
 120   1      
 121   1              while(1)
 122   1              {
 123   2                      key=keyscan();
 124   2                      if (key)
 125   2                      {
 126   3                              newKey=key;
 127   3                              KeyFlag=1;
 128   3                      }
 129   2                      if(!key&&KeyFlag==1)
 130   2                      {
 131   3                              KeyFlag=0;
 132   3                              Key_proess();
 133   3                      }
 134   2              }
 135   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    313    ----
   CONSTANT SIZE    =     21    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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