📄 main.lst
字号:
143 1 ET0=1; //开定时中断
144 1 overtime=0; //清超时标志
145 1 Time_count=0; //1S计时器(Time_count=5264的时候为1S)
146 1 rr=0;
147 1 if(receive_cardno( )==CardNoRight) //发送寻卡信息,接收卡号,如果有卡则校验接收的卡号
148 1 {
149 2 #ifdef DEBUG
150 2
151 2 // printf("RxBuf is: %bu ,", RxBuf[0]);
152 2 printf("%bu", RxBuf[1]);
153 2 printf("%bu", RxBuf[2]);
154 2 printf("%bu", RxBuf[3]);
155 2 printf("%bu", RxBuf[4]);
156 2 printf("%bu", RxBuf[5]);
157 2 printf("%bu", RxBuf[6]);
158 2 printf("%bu", RxBuf[7]);
159 2 printf("%bu", RxBuf[8]);
160 2 printf("%bu", RxBuf[9]);
161 2 printf("%bu", RxBuf[10]);
162 2 printf("%bu", RxBuf[11]);
163 2 printf("%bu,\n", RxBuf[12]);
164 2
165 2
166 2
167 2 /* PutChar(RxBuf[1]);
168 2 PutChar(RxBuf[2]);
169 2 PutChar(RxBuf[3]);
170 2 PutChar(RxBuf[4]);
171 2 PutChar(RxBuf[5]);
172 2 PutChar(RxBuf[6]);
173 2 PutChar(RxBuf[7]);
174 2 PutChar(RxBuf[8]);
175 2 PutChar(RxBuf[9]);
176 2 PutChar(RxBuf[10]);
177 2 PutChar(RxBuf[11]);
C51 COMPILER V7.02a MAIN 01/19/2006 15:39:29 PAGE 4
178 2 PutChar(RxBuf[12]);
179 2 //PutChar(TIME); */
180 2 #endif
181 2 }
182 1 ET0=0;//关闭定时器
183 1 LED_green=1;
184 1 }
185
186
187
188 /****************************************************************************************
189 Function: receive_cardno
190 Description: 发送寻卡信息,并接收卡号
191 Calls:
192 Called By: void main(void);
193 Input:
194 Output:
195 Return:
196 如果有卡号且正确则返回0x01, 否则返回0x00
197 Others:
198 ****************************************************************************************/
199
200 unsigned char receive_cardno()
201 {
202 1 unsigned char cardright_err;
203 1 unsigned char RNum,Rnum;
204 1 //准备接收卡号
205 1 Init_Receiver(); //接收数据初始化
206 1 //清空接收区
207 1 for(Rnum=0;Rnum<RNUM;Rnum++)
208 1 {
209 2 RxBuf[Rnum]=0;
210 2 }
211 1 RNum=0;
212 1 do{
213 2 RNum++;
214 2 Receiver(RxBuf);
215 2 //判断发送过来的是否是正确的卡号
216 2 if((RxBuf[0]==ReceiveCardNo)&&((RxBuf[1]^RxBuf[2]^RxBuf[3]^RxBuf[4]^RxBuf[5]^RxBuf[6]^RxBuf[7]^RxBuf[8]^
-RxBuf[9]^RxBuf[10]^RxBuf[11]^RxBuf[12])==RxBuf[13]))RNum=53;
217 2 Delayms( RCdelaytime);
218 2 }while(RNum<50); //连续接收50次
219 1 if(RNum==53)cardright_err=CardNoRight;//有卡号且正确
220 1 else cardright_err=CardNoErr;//没卡或者卡号错误
221 1 return (cardright_err);
222 1 }
223
224 /*********************************************************************************************
225 Function: Init
226 Description: CPU的初始化
227 1,I/O口的方向初始化
228 2,I/O口的输出初始化
229 3,SPI初始化
230 3,串口初始化
231 4,发送接收缓冲区初始化
232 Calls:
233 Called By: void main(void);
234 Input:
235 Output:
236 Return:
237 Others:
238 *********************************************************************************************/
C51 COMPILER V7.02a MAIN 01/19/2006 15:39:29 PAGE 5
239
240 void Init(void)
241 {
242 1 // unsigned char i;
243 1 // Port ini
244 1 P0_ALT = 0x06; // Select alternate functions on pins P0.1 and P0.2, TXD RXD
245 1 P0_DIR = 0x09; // P0.0, P0.3 is input(S1, S2), the rest output
246 1 P0 = 0xF0; // P0.7-P0.4 = 1 for OFF LED_red,green,DATA0,DATA1
247 1 P1_DIR = 0x03; // P0.0, P0.3 is input(S3, S4),
248 1
249 1 LED_red=1;
250 1 LED_green=1;
251 1 // LED3=1;
252 1 // LED4=1;
253 1
254 1 PWR_UP = 1; // Turn on Radio
255 1 Delay100us(30); // Wait > 3ms
256 1 SPICLK = 0; // Max SPI clock (XTAL/8)
257 1 SPI_CTRL = 0x02; // Connect internal SPI controller to Radio
258 1
259 1 // serial communication ini
260 1 TH1 = 230; // 19200@16MHz (when T1M=1 and SMOD=1)
261 1 CKCON |= 0x10; // T1M=1 (/4 timer clock)
262 1 PCON = 0x80; // SMOD=1 (double baud rate)
263 1 SCON = 0x52; // Serial mode1, enable receiver
264 1 //TMOD = 0x20; // Timer1 8bit auto reload
265 1 TMOD = 0x22; // //定时器0,1工作在方式2
266 1 TCON = 0x40; // Start timer1
267 1
268 1 //定时器0初始化
269 1 TH0 = 2; //192us
270 1 TL0 = TH0;
271 1 TR0 = 1; //允许定时器0计数
272 1 EA=1; //打开总中断控制位
273 1 ET0=0; //关闭定时中断
274 1
275 1 TRCOUNT=0;
276 1 RxBuf[0]=0;
277 1 RxBuf[1]=0;
278 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 361 ----
CONSTANT SIZE = 10 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 4
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -