module.lst

来自「程序是智能指纹锁的」· LST 代码 · 共 617 行 · 第 1/3 页

LST
617
字号
C51 COMPILER V8.02   MODULE                                                                12/04/2008 06:31:13 PAGE 1   


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

line level    source

   1          #include "Include.h"
   2          extern uchar FingerRecord[26];//指纹记录数组,每位代表对应编号指纹有无
   3          extern uchar xdata CommBuf[MAX_BUF_NUMBER];//串口缓冲
   4          extern uchar xdata SCC;//串口接收和校验
   5          extern uchar BellTimer;
   6          extern uint Tc;//超时计时器
   7          extern uchar NowKey;//当前按键
   8          extern  bit     ReceiveOK;//数据包接收完成标志位  
   9          /**********************************/
  10          bit     Add_Deal = 0;                           //线程标志位1
  11          bit Add_Deal2 = 0;                      //线程标志位2
  12          bit Add_Deal3 = 0;                      //线程标志位3
  13          /**********************************/
  14          //显示操作成功
  15          //P00,P02和PO4交错闪烁4次
  16          void DisplayOK(void)
  17          {       uchar i = 0;
  18   1              for(i=0;i<4;i++)
  19   1              {       BellOn();
  20   2                      LedBlueOn();
  21   2                                      LedRedOff();
  22   2                      DelayNmS(250);
  23   2                      BellOff();
  24   2                      LedBlueOff();
  25   2                                      LedRedOn();
  26   2                      DelayNmS(250);
  27   2              }
  28   1                      LedRedOff();}
  29          //显示操作失败
  30          //P04闪烁2次
  31          void DisplayFail(void)
  32          {       uchar i = 0;
  33   1              for(i=0;i<2;i++)
  34   1              {       BellOn();
  35   2                      LedRedOff();
  36   2                      DelayNmS(250);
  37   2                      BellOff();
  38   2                      LedRedOn();
  39   2                      DelayNmS(250);}
  40   1                      LedRedOff();}
  41          //显示通讯错误
  42          //P02P04闪烁4次
  43          void DisplayErr(void)
  44          {       uchar i = 0;
  45   1              for(i=0;i<4;i++)
  46   1              {       BellOn();
  47   2                      LedRedOn();
  48   2                      DelayNmS(250);
  49   2                      BellOff();
  50   2                      LedRedOff();
  51   2                      DelayNmS(250);}
  52   1      }
  53          //显示超时
  54          //P00,P02和P04同时闪烁2次
  55          void DisplayOutTime(void)
C51 COMPILER V8.02   MODULE                                                                12/04/2008 06:31:13 PAGE 2   

  56          {       uchar i = 0;
  57   1              for(i=0;i<2;i++)
  58   1              {       BellOn();
  59   2                                      LedBlueOn();
  60   2                      LedRedOn();
  61   2                      DelayNmS(250);
  62   2                      BellOff();
  63   2                                      LedBlueOff();
  64   2                      LedRedOff();
  65   2                      DelayNmS(250);}}
  66          //显示一次操作成功
  67          //P00,P02和P04流水一次
  68          void DisplayWater(void)
  69          {               LedBlueOn();
  70   1                      DelayNmS(250);//1
  71   1                      LedBlueOff();
  72   1                      BellOn();
  73   1                      DelayNmS(250);//2
  74   1                      BellOff();
  75   1                      LedRedOn();
  76   1              DelayNmS(250);//3
  77   1                      LedRedOff();
  78   1      }                                                
  79          //显示提示按下指纹
  80          //P02先闪烁一次,P00,P02和P04闪烁一次
  81          void DisplayFinger(void)
  82          {               BellOn();
  83   1                      DelayNmS(250);//1
  84   1                      BellOff();
  85   1                      DelayNmS(250);//2
  86   1                      BellOn();
  87   1                      LedRedOn();             
  88   1                      LedBlueOn();
  89   1                      DelayNmS(250);//3
  90   1                      BellOff();
  91   1                      LedRedOff();
  92   1                      LedBlueOff();}
  93          //清空指纹库
  94          //1号键,将指纹与现有指纹库对比,成功开门,否则不动作。
  95          void SearchFingerModule(void)
  96          {               if(!Add_Deal)
  97   1                      {   FingerOn();
  98   2                              BellOn();
  99   2                      DelayNmS(200);
 100   2                              BellOff();
 101   2                      CommBuf[0] = C_SEARCH_FINGER;
 102   2                      CommBuf[1] = 0;
 103   2                      CommBuf[2] = 0;
 104   2                      CommBuf[3] = 0;
 105   2                      CommBuf[4] = MAX_FINGER;//最大指纹数
 106   2                              Clear_Uart_Variable();
 107   2                      SendCommand(C_COMMAND,5,CommBuf);//发送搜索命令 
 108   2                              //等待接收返回
 109   2                              Tc = 2;
 110   2                              while(!ReceiveOK&&Tc);
 111   2                              Clear_Uart_Variable();
 112   2                              if((SCC==CommBuf[CommBuf[3]+4])&&Tc)    //数据包和校验判断 和 接收超时判断
 113   2                              {       if((C_ANSWER==CommBuf[2])&&(0x01==CommBuf[4]))
 114   3                                      {       Add_Deal = 1;Add_Deal2 = 1;}
 115   3                                      else{Add_Deal = 0;
 116   4                                              Add_Deal2 = 0;
 117   4                                              DisplayErr();
C51 COMPILER V8.02   MODULE                                                                12/04/2008 06:31:13 PAGE 3   

 118   4                              FingerOff();
 119   4                                              NowKey = NO_KEY;
 120   4                                              return;}}
 121   2                              else{
 122   3                                      Add_Deal = 0;
 123   3                                      Add_Deal2 = 0;
 124   3                                      DisplayErr();
 125   3                      FingerOff();
 126   3                                      NowKey = NO_KEY;
 127   3                                      return;}}
 128   1                      //探测手指
 129   1                      if(Add_Deal2&&ReceiveOK){
 130   2                              Clear_Uart_Variable();
 131   2                              if(SCC==CommBuf[CommBuf[3]+4]){//数据包和校验判断               
 132   3                      if((C_ANSWER == CommBuf[2])&&(0x02 == CommBuf[3])&&(C_SEARCH_FINGER == CommBuf[4]))
 133   3                      {      //接收正确
 134   4                                                      switch(CommBuf[5])
 135   4                                                      {       //指纹处理成功
 136   5                                                              case ANSWER_OK:
 137   5                                      BellOn();
 138   5                                      BellTimer = 6;//中断中关闭Bell
 139   5                                                                      Add_Deal2 = 0;
 140   5                                                                      Add_Deal3 = 1;
 141   5                                                                      break;
 142   5                                                              case ANSWER_OUT_TIME:
 143   5                                                                      DisplayOutTime();
 144   5                                              break;
 145   5                                                              case ANSWER_FAIL:
 146   5                                                              case ANSWER_NUMBER_E:
 147   5                                                                      DisplayFail();//增加失败
 148   5                                                                      break; 
 149   5                                                      }
 150   4                                                      if(Add_Deal2)
 151   4                                                      {       Add_Deal = 0;
 152   5                                                              Add_Deal2 = 0;
 153   5                                      FingerOff();
 154   5                                                              NowKey = NO_KEY;                                                        
 155   5                                                              return;}}
 156   3                      else{   Add_Deal = 0;
 157   4                                                      Add_Deal2 = 0;
 158   4                                                      DisplayErr();
 159   4                                          FingerOff();
 160   4                                                      NowKey = NO_KEY;
 161   4                                                      return;}}
 162   2                              else{
 163   3                                      Add_Deal = 0;
 164   3                                      Add_Deal2 = 0;
 165   3                                      DisplayErr();
 166   3                          FingerOff();
 167   3                                      NowKey = NO_KEY;
 168   3                                      return;}}
 169   1                      //等待搜索结果
 170   1                      if(Add_Deal3&&ReceiveOK)
 171   1                      {       Add_Deal3 = 0;
 172   2                              Add_Deal = 0;
 173   2                              if(SCC==CommBuf[CommBuf[3]+4])//数据包和校验判断
 174   2                              {   if((C_ANSWER == CommBuf[2])&&(C_SEARCH_FINGER == CommBuf[4]))
 175   3                      {   //接收正确
 176   4                                              switch(CommBuf[5])
 177   4                                              {       //指纹处理成功
 178   5                                                      case ANSWER_SEARCH_OK:
 179   5                                                              leftmotor();
C51 COMPILER V8.02   MODULE                                                                12/04/2008 06:31:13 PAGE 4   

 180   5                                                              DisplayOK();
 181   5                                                              INITmotor();
 182   5                                                              break;
 183   5                                                      case ANSWER_OUT_TIME:
 184   5                                                              DisplayOutTime();
 185   5                                      break;
 186   5                                                      case ANSWER_FAIL:
 187   5                                                      case ANSWER_SEARCH_FAIL:
 188   5                                                              DisplayFail();//增加失败
 189   5                                                              break;}}
 190   3                      else DisplayErr();}
 191   2                              else DisplayErr();

⌨️ 快捷键说明

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