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 + -
显示快捷键?