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

📄 panelc.lst

📁 采用1621控制段式液晶的显示,单片机控制乱序显示及实现银行系统的加密功能
💻 LST
字号:
C51 COMPILER V6.12  PANELC                                                                 04/02/2007 09:20:50 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE PANELC
OBJECT MODULE PLACED IN .\panelC.OBJ
COMPILER INVOKED BY: j:\program files\Keil\C51\BIN\C51.EXE .\panelC.c DEBUG OBJECTEXTEND

stmt level    source

   1          #include <panel.h>
   2          #include <1621.h>
   3          #include<stdlib.h>
   4          
   5          void InitSystem ()
   6          {
   7   1       WDT_CONTR = 0x00;//关掉看门狗电路
   8   1       EA = 0;        //关闭中断
   9   1       ES = 0;	
  10   1      //配置串口
  11   1       SCON = 0x50; //8位数据位,无奇偶校验
  12   1      T2CON = 0x34;//由T2作为波特率发生器
  13   1      RCAP2H = 0xff; //时钟11.0592 9600波特率 
  14   1      RCAP2L = 0xdb;	
  15   1      //配置T1,count=909090,TI:16位工作模式
  16   1      
  17   1      //
  18   1      EA = 1;
  19   1      ES = 1;
  20   1      }
  21          
  22          void ReadSwStatus()
  23          {
  24   1        unsigned char sw,sw_copy;
  25   1        sw = P2;
  26   1        sw_copy = sw;
  27   1        if( sw && 0x01)
  28   1        {
  29   2          #define baurate_1200;
  30   2        }
  31   1        else {
  32   2          #define baurate_9600;
  33   2      	}
  34   1      
  35   1        sw = sw_copy;
  36   1        if(sw && 0x02)
  37   1        {
  38   2          #define command2;
  39   2        }
  40   1        else{
  41   2          #define command1; 
  42   2      	}
  43   1      }
  44          
  45          
  46          void delay_ms(unsigned int i)
  47          {
  48   1        unsigned int j;
  49   1        unsigned int n;
  50   1        for(j=0;j<i;j++)
  51   1        {
  52   2         for(n=0;n<255;n++);
  53   2        }
  54   1      }
  55          
C51 COMPILER V6.12  PANELC                                                                 04/02/2007 09:20:50 PAGE 2   

  56          
  57          unsigned char  JudgeKey(void)
  58          {
  59   1      while(1)
  60   1      {
  61   2          P1=0;
  62   2      }	 
  63   1         P0=0x1f;//初始化行列控制端口
  64   1         while(!(PIN6||PIN7||PIN8));
  65   1         //start debug
  66   1         P3=0;
  67   1         //end debug
  68   1                delay_ms(100);
  69   1               if(!(PIN6||PIN7||PIN8))
  70   1      		   return 1;
  71   1         	        else
  72   1      		   return 0;
  73   1      	 
  74   1      	 //LightPanel();
  75   1      }
  76          
  77          void LightPanel(void)
  78           {
  79   1          P0=0x00;
  80   1          LIGHT_PANEL=1;
  81   1          //delay_ms(100);//10ms
  82   1          //LIGHT_PANEL=0;
  83   1       }
  84          
  85          void random()
  86          {
  87   1      int i,j;
  88   1      int num[]={0,1,2,3,4,5,6,7,8,9};
  89   1               //SMG10  SMG1 SMG2 SMG3 SMG4 SMG5 SMG6 SMG7 SMG8 SMG9  
  90   1      int rn[10];
  91   1      //int t;
  92   1      srand((unsigned)t);//time(&t));
  93   1      for(i=0;i<10;i++)
  94   1      {
  95   2        rn[i]=rand()%10;
  96   2        for(j=0;j<i;j++)
  97   2        {
  98   3           if(rn[i]==rn[j]){i--;j=i;}
  99   3        }
 100   2      }
 101   1       for(i=0;i<10;i++)
 102   1       {key_num[i] = num[rn[i]];}
 103   1        t++;
 104   1      
 105   1       } 
 106          
 107          void DisplayNum(void)
 108          {
 109   1         unsigned char ADDr[]={ADDr_SMG10,ADDr_SMG1,ADDr_SMG2,ADDr_SMG3,ADDr_SMG4,
 110   1                               ADDr_SMG5,ADDr_SMG6,ADDr_SMG7,ADDr_SMG8,ADDr_SMG9};
 111   1         unsigned char i;
 112   1         Init_1621();
 113   1         LCDon();
 114   1         random();
 115   1         for(i=0;i<10;i++)
 116   1           {
 117   2              Write_1621(ADDr[i],seg[key_num[i]]);
C51 COMPILER V6.12  PANELC                                                                 04/02/2007 09:20:50 PAGE 3   

 118   2           }
 119   1      }
 120          void DisplaySign(void)
 121          {
 122   1         T1_display(); //显示标志T1(正序,乱序,更正,确认)
 123   1         T4_display();//显示标志T4(请输入密码)
 124   1      }
 125          
 126          /*1 P00 -----10--------11    10:正序键     11:乱序键
 127                       |    |    |    
 128            2 P01 -----1----2----3
 129                       |    |    |   
 130            3 P02 -----4----5----6
 131                       |    |    |    
 132            4 P03 -----7----8----9
 133                       |    |    |    
 134            5 P04 -----12---0----13     12:更正键    13:确认键    
 135                       |    |    |
 136            6 P05 -----     |    |
 137                            |    |
 138            7 P06 ----------     |    
 139                                 | 
 140            8 P07 --------------  */
 141          //unsigned char key_code[]={0x50,0x22,0x42,0x82,0x24,0x44,0x84,0x28,0x48,0x88,0x21,0x81,0x03,0x09};
 142                            //对应键值 0    1    2    3    4     5    6    7   8    9    10   11    12  13
 143          //unsigned char ksp[]={0x01,0x02,0x04,0x08,0x10};
 144          //unsigned char cnt=0;
 145          unsigned char keypad_scan(void)
 146          {
 147   1          unsigned char key,i;
 148   1          P0=0x1f;
 149   1          while (P0==0x1f);
 150   1             for(i=0;i<5;i++)
 151   1             {         
 152   2                 P0=ksp[i];
 153   2                 while(P0==ksp[i]);
 154   2                    delay_ms(10);
 155   2                    key=P0;
 156   2                    if(key!=ksp[i])
 157   2                    {
 158   3                        return(key);
 159   3                    }
 160   2                    P0=0x00;
 161   2                 
 162   2             }
 163   1         
 164   1      }
 165          // 检查是否有按键按下
 166          unsigned char GetKey(void)
 167          {
 168   1           char temp,i;
 169   1           temp=keypad_scan();
 170   1           for (i=0;i<14;i++) 
 171   1            {
 172   2                if(temp==key_code[i]) return(i); 
 173   2            }
 174   1      }
 175          
 176          
 177          void DisplayToken(void)
 178          {
 179   1         unsigned char SIGN_copy;
C51 COMPILER V6.12  PANELC                                                                 04/02/2007 09:20:50 PAGE 4   

 180   1      
 181   1      
 182   1         if(GetKey()>=0&&GetKey()<9)
 183   1         {
 184   2            
 185   2      	   if (cnt==0) 
 186   2      	   {
 187   3      		 SIGN=0x80;
 188   3               SIGN_copy=SIGN;
 189   3      	   }
 190   2      	   else if(cnt>0&&cnt<4) 
 191   2      	   {
 192   3      	     SIGN>>=1;
 193   3               SIGN|=SIGN_copy;
 194   3               SIGN_copy=SIGN;
 195   3      	   }
 196   2             else if (cnt==4) 
 197   2      	   {
 198   3      		 SIGN=0xf1;
 199   3               SIGN_copy=SIGN;
 200   3      	   }
 201   2      	   else
 202   2      	   {
 203   3      	     SIGN<<=1;
 204   3               SIGN|=SIGN_copy;
 205   3               SIGN_copy=SIGN;
 206   3      	   }
 207   2      
 208   2             sbuf[cnt]=key_num[GetKey()];
 209   2      	   cnt++;
 210   2             Write_1621(ADDr_SIGN,SIGN);
 211   2         }
 212   1         else if(GetKey()==10);
 213   1         else if(GetKey()==11);
 214   1         else if(GetKey()==13);
 215   1         else if(GetKey()==12); 
 216   1         {
 217   2           cnt--;
 218   2            if(cnt>=0&&cnt<4) 
 219   2      	   {
 220   3      	     SIGN<<=cnt;
 221   3               SIGN_copy=SIGN;
 222   3      	   }
 223   2             else if (cnt==4) 
 224   2      	   {
 225   3      	     SIGN^=0x01;
 226   3             }
 227   2      	   else if (cnt==5) 
 228   2      	   {
 229   3      	     SIGN^=0x02;
 230   3             }
 231   2      	   else if (cnt==6) 
 232   2      	   {
 233   3      	     SIGN^=0x04;
 234   3             }
 235   2      	   else if (cnt==7) 
 236   2      	   {
 237   3      	     SIGN^=0x08;
 238   3             }
 239   2      
 240   2             Write_1621(ADDr_SIGN,SIGN);
 241   2           }
C51 COMPILER V6.12  PANELC                                                                 04/02/2007 09:20:50 PAGE 5   

 242   1           
 243   1      }
 244             
 245          unsigned char ReEnter(void)
 246          {
 247   1        if (cnt>8)
 248   1         {
 249   2            cnt=0;//清除数组保存过的数据
 250   2      	  Write_1621(ADDr_SIGN,0x00);
 251   2      	  return 1;
 252   2         }
 253   1        else 
 254   1            return 0;
 255   1      }
 256          
 257          void Send_Byte(unsigned char byte)
 258          {
 259   1        TI =0;
 260   1        SBUF = byte;
 261   1        while(TI == 0);
 262   1        TI = 0;
 263   1      }
 264          
 265          void TranReceive(void)
 266          {  
 267   1         unsigned char i;
 268   1         for(i=0;i<(cnt-1);i++)
 269   1         {
 270   2           Send_Byte(sbuf[i]);
 271   2         }
 272   1      }


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