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

📄 m500auc.lst

📁 奥尔斯公司pxa270试验箱射频卡读写器相关资料
💻 LST
📖 第 1 页 / 共 5 页
字号:
              #else
1133   1          while (_10ms--)
1134   1          {
1135   2      	    delay_50us(19);
1136   2      	    if (CmdValid)
1137   2      	        return;
1138   2      	    delay_50us(20);
1139   2      	    if (CmdValid)
1140   2      	        return;
1141   2      	    delay_50us(20);
1142   2      	    if (CmdValid)
1143   2      	        return;
1144   2      	    delay_50us(20);
1145   2      	    if (CmdValid)
1146   2      	        return;
1147   2      	    delay_50us(20);
1148   2      	    if (CmdValid )
1149   2      	        return;
1150   2      	    delay_50us(20);
1151   2      	    if (CmdValid)
1152   2      	        return;
1153   2      	    delay_50us(20);
1154   2      	    if (CmdValid)
1155   2      	        return;
1156   2      	    delay_50us(20);
1157   2      	    if (CmdValid)
1158   2      	        return;
1159   2      	    delay_50us(20);
1160   2      	    if (CmdValid)
1161   2      	        return;
1162   2      	    delay_50us(19);
1163   2      	    if (CmdValid)
1164   2      	        return;
1165   2          }
1166   1      #endif
1167   1      }
1168          ///////////////////////////////////////////////////////////////////////
1169          ///////////////////////////////////////////////////////////////////////
1170          void RC500ISR (void) interrupt 0 using 1
1171          {
C51 COMPILER V6.02  M500AUC                                                                02/09/2006 13:25:02 PAGE 20  

1172   1          static unsigned char idata irqBits;
1173   1          static unsigned char idata irqMask;
1174   1          static unsigned char idata nbytes;
1175   1          static unsigned char idata cnt;
1176   1      
1177   1          IE0 = 0;
1178   1          WriteRawIO(0,0x80);
1179   1          if (MpIsrInfo && MpIsrOut)
1180   1          {
1181   2              while( ReadRawIO(RegPrimaryStatus) & 0x08)
1182   2              {
1183   3                  irqMask = ReadRawIO(RegInterruptEn);
1184   3                  irqBits = ReadRawIO(RegInterruptRq) & irqMask;
1185   3                  MpIsrInfo->irqSource |= irqBits;
1186   3                  if (irqBits & 0x01)
1187   3                  {
1188   4                      nbytes = 64 - ReadRawIO(RegFIFOLength);
1189   4                      if ((MpIsrInfo->nBytesToSend - MpIsrInfo->nBytesSent) <= nbytes)
1190   4                      {
1191   5                          nbytes = MpIsrInfo->nBytesToSend - MpIsrInfo->nBytesSent;
1192   5                          WriteRawIO(RegInterruptEn,0x01);
1193   5                      }
1194   4                      for ( cnt = 0;cnt < nbytes;cnt++)
1195   4                      {
1196   5                          WriteRawIO(RegFIFOData,MpIsrOut[MpIsrInfo->nBytesSent]);
1197   5                          MpIsrInfo->nBytesSent++;
1198   5                      }
1199   4                      WriteRawIO(RegInterruptRq,0x01);
1200   4                  }
1201   3                  if (irqBits & 0x10)
1202   3                  {
1203   4                      WriteRawIO(RegInterruptRq,0x10);
1204   4                      WriteRawIO(RegInterruptEn,0x82);
1205   4                      if (MpIsrInfo->cmd == PICC_ANTICOLL1)
1206   4      	            {
1207   5                          WriteIO(RegChannelRedundancy,0x02);
1208   5                          WriteRawIO(0,0x80);
1209   5      	            }
1210   4                  }
1211   3                  if (irqBits & 0x0E)
1212   3                  {
1213   4                      nbytes = ReadRawIO(RegFIFOLength);
1214   4                      for ( cnt = 0; cnt < nbytes; cnt++)
1215   4                      {
1216   5                          MpIsrOut[MpIsrInfo->nBytesReceived] = ReadRawIO(RegFIFOData);
1217   5                          MpIsrInfo->nBytesReceived++;
1218   5                      }
1219   4                      WriteRawIO(RegInterruptRq,0x0A & irqBits);
1220   4                  }
1221   3                  if (irqBits & 0x04)
1222   3                  {
1223   4                      WriteRawIO(RegInterruptEn,0x20);
1224   4                      WriteRawIO(RegInterruptRq,0x20);
1225   4                      irqBits &= ~0x20;
1226   4                      MpIsrInfo->irqSource &= ~0x20;
1227   4                      WriteRawIO(RegInterruptRq,0x04);
1228   4                  }
1229   3                  if (irqBits & 0x20)
1230   3                  {
1231   4                      WriteRawIO(RegInterruptRq,0x20);
1232   4                      MpIsrInfo->status = MI_NOTAGERR;
1233   4                  }
C51 COMPILER V6.02  M500AUC                                                                02/09/2006 13:25:02 PAGE 21  

1234   3              }
1235   2          }
1236   1      }
1237          ///////////////////////////////////////////////////////////////////////
1238          // MF RC500 Config
1239          ///////////////////////////////////////////////////////////////////////
1240          char MfConfig(void)
1241          {
1242   1      	char status=MI_OK;
1243   1      
1244   1      	M500PcdConfig();
1245   1      	M500PcdMfOutSelect(2);
1246   1      	return status;
1247   1      }
1248          
1249          ///////////////////////////////////////////////////////////////////////
1250          // 系统初始化
1251          ///////////////////////////////////////////////////////////////////////
1252          void init(void)
1253          {
1254   1      	RC500RST=0;
1255   1      	ET2 = 0;
1256   1      	T2CON = 0x04;
1257   1          //PCON = 0x80;
1258   1      	PCON = 0x80;                                   //SMOD = 0,不加速串口
1259   1              IP   = 0x10;                                   //定义串口为最高优先级
1260   1              SCON = 0x50;                                   //多机模式,串口模式3
1261   1              TMOD = 0x21;                                   //TMOD = 0x22;
1262   1      
1263   1      	TH1   = 0xFD;
1264   1              TL1   = 0xFD;
1265   1      	//TH1   = 0xF3;				// 波特率设为2400
1266   1      	//TL1   = 0xF3;
1267   1      	TR1   = TRUE; 	            // 波特率发生器
1268   1              SM2   = 1;
1269   1      
1270   1      	//TH0 = 0x60;
1271   1              //TL0 = 0x60;
1272   1              TH0 = 0xB1;
1273   1              TL0 = 0xE0;
1274   1              TR0 = TRUE;
1275   1      
1276   1      
1277   1              SPEAKER = 0;
1278   1              RLED = FALSE;
1279   1              GLED = FALSE;
1280   1      
1281   1              ET0=1;
1282   1      	ET1=0;
1283   1      	EA=1;
1284   1      	EX0=1;
1285   1      	IT0 = 1;
1286   1      	TR2=0;
1287   1       	ES = TRUE;
1288   1      	CmdValid=0;
1289   1      
1290   1              RECEIVE = 0;
1291   1      	isSelect = FALSE;
1292   1              haveRead = TRUE;
1293   1      
1294   1      	//RLED=0;
1295   1      
C51 COMPILER V6.02  M500AUC                                                                02/09/2006 13:25:02 PAGE 22  

1296   1      	//delay_10ms(30);
1297   1      	//RLED=1;
1298   1      	//delay_10ms(30);
1299   1      	//RLED=0;
1300   1      
1301   1       	MfConfig();
1302   1              SM2 = 1;
1303   1      }
1304          
1305          ///////////////////////////////////////////////////////////////////////
1306          // IC卡处理函数
1307          ///////////////////////////////////////////////////////////////////////
1308          void cmd_execution(void)
1309          {
1310   1      	//unsigned char cmd;
1311   1              unsigned char checksum = 0;
1312   1      	unsigned char status;
1313   1      
1314   1      	switch(cmd)
1315   1      	{
1316   2      	 	case 1:					// 读卡信息
1317   2      			if(!haveRead && cardtype == mifare1)                        // 正确读取卡号
1318   2      			{
1319   3      				SerBuffer[0] = SLAVEADDR;                           // 从机地址
1320   3                                      SerBuffer[1] = 6;                                   // 返回字节数
1321   3                                      SerBuffer[2] = 1;
1322   3      				memcpy(&SerBuffer[3], &CardInfoBuffer[2], 4);       // 卡序列号
1323   3                                      checksum = checksum ^ SerBuffer[0];
1324   3                                      checksum = checksum ^ SerBuffer[1];
1325   3                                      checksum = checksum ^ SerBuffer[2];
1326   3                                      checksum = checksum ^ SerBuffer[3];
1327   3                                      checksum = checksum ^ SerBuffer[4];
1328   3                                      checksum = checksum ^ SerBuffer[5];
1329   3                                      checksum = checksum ^ SerBuffer[6];
1330   3                                      SerBuffer[7] = checksum;                            // 异或校验和
1331   3                                      RLED = FALSE;
1332   3                                      haveRead = TRUE;
1333   3      			}
1334   2      			else                                                         // 没有卡号或者卡类型不正确
1335   2      			{
1336   3      				SerBuffer[0] = SLAVEADDR;
1337   3      				SerBuffer[1] = 3;
1338   3                                      SerBuffer[2] = 1;
1339   3                                      SerBuffer[3] = 0;
1340   3                                      checksum = checksum ^ SerBuffer[0];
1341   3                                      checksum = checksum ^ SerBuffer[1];
1342   3                                      checksum = checksum ^ SerBuffer[2];
1343   3                                      checksum = checksum ^ SerBuffer[3];
1344   3                                      SerBuffer[4] = checksum;
1345   3      		   	}
1346   2      			break;
1347   2                      case 2:                                 // 蜂鸣器
1348   2      
1349   2                              SerBuffer[0] = SLAVEADDR;
1350   2                              SerBuffer[1] = 3;
1351   2                              SerBuffer[2] = 2;
1352   2                              SerBuffer[3] = 1;
1353   2                              checksum = checksum ^ SerBuffer[0];
1354   2                              checksum = checksum ^ SerBuffer[1];
1355   2                              checksum = checksum ^ SerBuffer[2];
1356   2                              checksum = checksum ^ SerBuffer[3];
1357   2                              SerBuffer[4] = checksum;
C51 COMPILER V6.02  M500AUC                                                                02/09/2006 13:25:02 PAGE 23  

1358   2                              break;
1359   2      		case 3:					// 绿灯开、关
1360   2                              if( RevBuffer[1] == 0)
1361   2                              {
1362   3                                      GLED = FALSE;
1363   3                                      SerBuffer[0] = SLAVEADDR;
1364   3                                      SerBuffer[1] = 3;
1365   3                                      SerBuffer[2] = 3;
1366   3                                      SerBuffer[3] = 1;
1367   3                                      checksum = checksum ^ SerBuffer[0];
1368   3                                      checksum = checksum ^ SerBuffer[1];
1369   3                                      checksum = checksum ^ SerBuffer[2];
1370   3                                      checksum = checksum ^ SerBuffer[3];
1371   3                                      SerBuffer[4] = checksum;
1372   3                              }
1373   2                              else if( RevBuffer[1] == 1)
1374   2                              {
1375   3                                      GLED = TRUE;
1376   3                                      SerBuffer[0] = SLAVEADDR;
1377   3                                      SerBuffer[1] = 3;
1378   3                                      SerBuffer[2] = 3;
1379   3                                      SerBuffer[3] = 1;
1380   3                                      checksum = checksum ^ SerBuffer[0];
1381   3                                      checksum = checksum ^ SerBuffer[1];
1382   3                                      checksum = checksum ^ SerBuffer[2];
1383   3                                      checksum = checksum ^ SerBuffer[3];
1384   3                                      SerBuffer[4] = checksum;
1385   3                              }
1386   2                              else
1387   2                              {
1388   3                                      SerBuffer[0] = SLAVEADDR;
1389   3                                      SerBuffer[1] = 3;
1390   3                                      SerBuffer[2] = 3;
1391   3                                      SerBuffer[3] = 0;
1392   3                                      checksum = checksum ^ SerBuffer[0];
1393   3                                      checksum = checksum ^ SerBuffer[1];
1394   3                                      checksum = checksum ^ SerBuffer[2];
1395   3                                      checksum = checksum ^ SerBuffer[3];
1396   3                                      SerBuffer[4] = checksum;
1397   3                              }
1398   2      			break;
1399   2      	  	case 4:					// 灯闪烁
1400   2                              SerBuffer[0] = SLAVEADDR;
1401   2                              SerBuffer[1] = 3;
1402   2                              SerBuffer[2] = 4;
1403   2                              SerBuffer[3] = 1;
1404   2                              checksum = checksum ^ SerBuffer[0];
1405   2                              checksum = checksum ^ SerBuffer[1];
1406   2                              checksum = checksum ^ SerBuffer[2];
1407   2                              checksum = checksum ^ SerBuffer[3];
1408   2                              SerBuffer[4] = checksum;
1409   2      			break;
1410   2      		case 5:					// 重启状态
1411   2                              SerBuffer[0] = SLAVEADDR;
1412   2                              SerBuffer[1] = 3;
1413   2                              SerBuffer[2] = 5;
1414   2                              SerBuffer[3] = 1;
1415   2                              checksum = checksum ^ SerBuffer[0];
1416   2                              checksum = checksum ^ S

⌨️ 快捷键说明

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