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

📄 lcd.lst

📁 继续上传:单片机89C51
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.07   LCD                                                                   11/13/2007 10:31:26 PAGE 1   


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

stmt level    source

   1          /***** LCD 12864 with KS0108B controller display driver *****/
   2          
   3          #define uchar unsigned char
   4          #include<drive_functions.h>
   5          #include<get_keys.h>
   6          bit verify=0;
   7          bit cursor=1;
   8          bit modify_flag=0,modify=0;
   9          
  10          uint time_counter=0;
  11          uchar counter=0,j=0,i,k;
  12          uchar PASS[8]={1,2,3,4,5,6,7,8};
  13          uchar PW[8]={0,0,0,0,0,0,0,0};
  14          uchar PW_NULL[8]={0,0,0,0,0,0,0,0};
  15          uchar MODIFY_BUF[8]={0,0,0,0,0,0,0,0};
  16          
  17          
  18          /****************************verify pw  ************************/
  19          bit VerifyAray(void)
  20          {
  21   1                      uchar i;
  22   1                      bit temp=FAULSE;
  23   1                      for(i=0;i<8;i++)
  24   1                              {
  25   2                              if(PW[i]==PASS[i])temp=TRUE;
  26   2      
  27   2                               else 
  28   2                                 {
  29   3                               temp=FAULSE;
  30   3                                       i=8;                       //end for loop
  31   3                                       }
  32   2                                       }
  33   1                              return(temp);
  34   1              }
  35          
  36          
  37          /*********************** main ************************/
  38          
  39          void main(void)
  40          {
  41   1              E=1;
  42   1              DspOn();
  43   1              ClearLCD();
  44   1      
  45   1      //      IT0=1;
  46   1      //      IT1=1;
  47   1      //      EX0=1;
  48   1      //      EX1=1;
  49   1      
  50   1              TMOD=0x10;
  51   1              ET1=1;
  52   1              EA=1;
  53   1              TH1=0x00;
  54   1              TL1=0x00;
  55   1              TR1=1;
C51 COMPILER V7.07   LCD                                                                   11/13/2007 10:31:26 PAGE 2   

  56   1              
  57   1              while(1)
  58   1              {
  59   2              /******************fist line****************************/
  60   2              uchar i;
  61   2              SetStartLine(0);
  62   2      re_input:
  63   2              
  64   2              for(i=0;i<4;i++)
  65   2              {
  66   3              SetPage(0);
  67   3              SetColumn(i<<4);                           // i*16
  68   3              DspUp(&QING_SHU[i-1][32],1);
  69   3              DspUp(&QING_SHU[i-1+4][32],2);
  70   3      
  71   3              SetPage(1);
  72   3              SetColumn(i<<4);                          // i*16
  73   3              DspDown(&QING_SHU[i-1][32],1);
  74   3              DspDown(&QING_SHU[i-1+4][32],2);
  75   3              }
  76   2              
  77   2          /**************second line***************************/
  78   2      
  79   2              for(i=0;i<4;i++)
  80   2              {
  81   3              SetPage(6);
  82   3              SetColumn(i<<4);                           // i*16
  83   3              DspUp(&QING_CHU[i-1][32],1);
  84   3              DspUp(&QING_CHU[i+4-1][32],2);
  85   3      
  86   3              SetPage(7);
  87   3              SetColumn(i<<4);                          // i*16
  88   3              DspDown(&QING_CHU[i-1][32],1);
  89   3              DspDown(&QING_CHU[i+4-1][32],2);
  90   3              }
  91   2      
  92   2      /***************************光标显示***********************************/
  93   2      if(counter<8)           //如果输入到第8位,光标不再显示
  94   2      {
  95   3      if(cursor)              //由T1中断实现光标闪烁
  96   3      {
  97   4          i=counter;
  98   4              SetPage(2);
  99   4              SetColumn((i<4)?(i*16):((i-4)*16));                           
 100   4              DspUp(&GUANG_BIAO_KONG[-1][32],(i<4)?1:2);
 101   4      
 102   4              SetPage(3);
 103   4              SetColumn((i<4)?(i*16):((i-4)*16));                          
 104   4              DspDown(&GUANG_BIAO_KONG[-1][32],(i<4)?1:2);
 105   4              }
 106   3      
 107   3      else
 108   3      {
 109   4              i=counter;
 110   4              SetPage(2);
 111   4              SetColumn((i<4)?(i*16):((i-4)*16));                           
 112   4              DspUp(&GUANG_BIAO_KONG[0][32],(i<4)?1:2);
 113   4      
 114   4              SetPage(3);
 115   4              SetColumn((i<4)?(i*16):((i-4)*16));                          
 116   4              DspDown(&GUANG_BIAO_KONG[0][32],(i<4)?1:2);
 117   4              }  
C51 COMPILER V7.07   LCD                                                                   11/13/2007 10:31:26 PAGE 3   

 118   3              
 119   3      }
 120   2      
 121   2      /***********************get key's value**************************/
 122   2      
 123   2      if(CheckState())
 124   2                      {
 125   3                              delay();
 126   3                              
 127   3                              if(CheckState())
 128   3                              {
 129   4                                      key=GetKeys();
 130   4                                      
 131   4                                 if(key==0x82)                     //clear input
 132   4                                 {
 133   5                                        if(modify_flag){counter=0;MODIFY_BUF[8]=PW_NULL[8];}
 134   5                                    else {counter=0;PW[8]=PW_NULL[8];}
 135   5                                        
 136   5                                              for(i=0;i<8;i++)               //clear LCD's page 2 and 3  
 137   5                                               {      
 138   6                                                      SetPage(2);
 139   6                                                      SetColumn(i<<4);                           
 140   6                                                      DspUp(&GUANG_BIAO_KONG[0][32],1);
 141   6                                                      DspUp(&GUANG_BIAO_KONG[0][32],2);
 142   6                                                      
 143   6                                                      SetPage(3);
 144   6                                                      SetColumn(i<<4);
 145   6                              DspDown(&GUANG_BIAO_KONG[0][32],1);
 146   6                                                      DspDown(&GUANG_BIAO_KONG[0][32],2);
 147   6                                                                                                                              
 148   6                                                      }
 149   5                                        }
 150   4                                                      
 151   4                                else if(key==0x88)                       //verify password
 152   4                                {     
 153   5                                              if(modify_flag){modify=1;goto modify_operation;}
 154   5                                              else {verify=1;goto verify_password;}
 155   5                                              
 156   5                                              }
 157   4                                      
 158   4                                else if(counter<8)                      //get keys
 159   4                                              {
 160   5                                              switch(key)
 161   5                                                      {
 162   6                                                       case 0x84:
 163   6                                                                              if(modify_flag)MODIFY_BUF[counter]=0;
 164   6                                                                              else PW[counter]=0;
 165   6                                                                              break;
 166   6                                                       case 0x42:
 167   6                                                                              if(modify_flag)MODIFY_BUF[counter]=1;
 168   6                                                                              else PW[counter]=1;
 169   6                                                                              break;
 170   6                                                       case 0x44:
 171   6                                                                              if(modify_flag)MODIFY_BUF[counter]=2;
 172   6                                                                              else PW[counter]=2;
 173   6                                                                              break;
 174   6                                                       case 0x48:
 175   6                                                                              if(modify_flag)MODIFY_BUF[counter]=3;
 176   6                                                                              else PW[counter]=3;
 177   6                                                                              break;
 178   6                                                       case 0x22:
 179   6                                                                              if(modify_flag)MODIFY_BUF[counter]=4;
C51 COMPILER V7.07   LCD                                                                   11/13/2007 10:31:26 PAGE 4   

 180   6                                                                              else PW[counter]=4;
 181   6                                                                              break;
 182   6                                                       case 0x24:
 183   6                                                                              if(modify_flag)MODIFY_BUF[counter]=5;
 184   6                                                                              else PW[counter]=5;
 185   6                                                                              break;
 186   6                                                       case 0x28:
 187   6                                                                              if(modify_flag)MODIFY_BUF[counter]=6;
 188   6                                                                              else PW[counter]=6;
 189   6                                                                              break;
 190   6                                                       case 0x12:
 191   6                                                                              if(modify_flag)MODIFY_BUF[counter]=7;
 192   6                                                                              else PW[counter]=7;
 193   6                                                                              break;
 194   6                                                       case 0x14:
 195   6                                                                              if(modify_flag)MODIFY_BUF[counter]=8;
 196   6                                                                              else PW[counter]=8;
 197   6                                                                              break;
 198   6                                                       case 0x18:
 199   6                                                                              if(modify_flag)MODIFY_BUF[counter]=9;
 200   6                                                                              else PW[counter]=9;
 201   6                                                                              break;
 202   6                                                       default:
 203   6                                                                              break;
 204   6                                  }
 205   5                                                      counter++;
 206   5                                        }
 207   4      
 208   4                              
 209   4                         }
 210   3                         }
 211   2      
 212   2      /************************display password input **************************/
 213   2      
 214   2      for(i=0;i<counter;i++)  
 215   2        {     
 216   3              if(modify_flag==1)j=MODIFY_BUF[i];
 217   3              else j=PW[i];
 218   3              SetPage(2);

⌨️ 快捷键说明

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