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

📄 1210_key_disp.lst

📁 320*240点阵液晶(sed1335)驱动程序,keil c调试通过,io连接方式
💻 LST
字号:
C51 COMPILER V7.50   1210_KEY_DISP                                                         11/17/2005 00:02:00 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 1210_KEY_DISP
OBJECT MODULE PLACED IN 1210_key_disp.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 1210_key_disp.c COMPACT BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "1210_Key_Disp.h"
   2          #include "MSC1210.H"
   3          
   4          #define uchar unsigned char
   5          #define uint unsigned int
   6          
   7          sbit P2_2 = P2^2;
   8          sbit P2_3 = P2^3;
   9          sbit P2_4 = P2^4;
  10          
  11          unsigned char key_buff = 0;
  12          unsigned char dis_buffer[] = {0, 1, 2, 3, 0xf, 5, 7, 8};
  13          unsigned char seg[] = { 0x3f,   0x06,   0x5b,   0x4f,
  14                                                          0x66,   0x6d,   0x7d,   0x07,
  15                                                          0x7f,   0x6f,   0x77,   0x7c,
  16                                                          0x39,   0x5e,   0x79,   0x71,
  17                                                          0xbf,   0x86,   0xdb,   0xcf,
  18                                                          0xe6,   0xed,   0xfd,   0x87,
  19                                                          0xff,   0xef,   0xf7,   0xfc,
  20                                                          0xb9,   0xde,   0xf9,   0xf1,
  21          
  22                                                          0x80,   0x40,   0x00,   0x73,   0xc0};
  23          //delay
  24          void delay(int v)
  25          {
  26   1              while(v != 0)   v --;
  27   1      }
  28          
  29          
  30          //dispunsigned char *disp_buffer
  31          void disp(void)
  32          {
  33   1              unsigned char i = 0,            j = 0;
  34   1              unsigned char temp_wei = 0x0,   temp_duan = 0;
  35   1              
  36   1              for(i = 0; i < 8; i ++)
  37   1              {
  38   2                   P2_3 = 0;                                                                  //138---NO
  39   2                   temp_duan = seg[ *(dis_buffer + i) ] ;
  40   2                   for(j = 0; j < 8; j ++)
  41   2                      {
  42   3                              P2_2 = temp_duan & 0x80;
  43   3                              temp_duan = temp_duan << 1;
  44   3                              P2_4 =0;   P2_4 =1;                                     //时钟
  45   3                      }
  46   2                      P2_3 = 1;
  47   2                      P2 = (P2 & 0xf8) | temp_wei;
  48   2                      temp_wei ++;
  49   2                      delay(100);
  50   2              }
  51   1      }
  52          
  53          
  54          uchar key_enter(void)
  55          {
C51 COMPILER V7.50   1210_KEY_DISP                                                         11/17/2005 00:02:00 PAGE 2   

  56   1              uchar conter = 0xfe;
  57   1              P2 = 0;
  58   1              while( conter != 0xdf )
  59   1              {
  60   2                      P2 = conter;
  61   2                      if( conter != P2 )                                                      //如果不等,则有按键按下
  62   2                      {                                                                       //如果等,本行没有按键,考察其他行
  63   3                               return( 0xff );                                        //有
  64   3                      }
  65   2                      conter =~ conter;
  66   2                      conter =  conter << 1;
  67   2                      conter =~ conter;
  68   2              }
  69   1             return(0x00);                                            //没有
  70   1      }
  71          
  72          
  73          unsigned char key4_12code(void)                                 //扫描键码值
  74             {
  75   1         unsigned char hang = 0xfe, i, temp = 0;
  76   1         for(i = 0; i < 4; i ++)
  77   1           {
  78   2                   P2 = hang;                                                                 //扫描信号
  79   2                   if( P2 != hang)
  80   2                    {
  81   3                        if( -( P2 - hang ) == 1)
  82   3                          return( 3 + temp );
  83   3                          else
  84   3                            if(-(P2-hang) == 2)
  85   3                            return( 2+temp );
  86   3                            else
  87   3                               if(-(P2-hang) == 4)
  88   3                               return( 1+temp );
  89   3                               else
  90   3                                  if(-(P2-hang) == 8)
  91   3                        //          return(1+temp);
  92   3                          //        else
  93   3                            //         if(-(P1-hang)==0x10)
  94   3                                    return( 0+temp );
  95   3                   }
  96   2                   hang = ~hang;
  97   2                   hang =  hang << 1 ;
  98   2                   hang = ~hang;
  99   2                   temp =  temp + 4;
 100   2           }
 101   1         }
 102             
 103             
 104          //键盘程序,开始等待按键,有了之后判断,判断之后等待松开,返回键值与印刷板一样。
 105          uchar get_key(void)    
 106          {
 107   1              uchar code keytemp_tab[] = {0xb, 7, 0xa, 0xff, 9, 6, 0xff, 2, 8, 0xff, 4, 1, 0xff, 5, 3, 0};
 108   1              uchar           key_buffer = 0xff;
 109   1              while( key_enter() == 0)
 110   1                 disp();
 111   1                 {
 112   2                         key_buffer = key4_12code();
 113   2                         while(key_enter() != 0);
 114   2      //                              dis_buffer[0] = keytemp_tab[key_buffer];
 115   2                                              return( keytemp_tab[key_buffer] );
 116   2                 }
 117   1      }
C51 COMPILER V7.50   1210_KEY_DISP                                                         11/17/2005 00:02:00 PAGE 3   

 118          
 119          
 120          
 121          
 122          
 123          
 124          


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