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

📄 zhu19200.lst

📁 动力环境监控系统 动力环境监控系统
💻 LST
📖 第 1 页 / 共 5 页
字号:
1204   1      	#ifdef TestDO
              	controlFlag=1;
              	DotType = 0x83;
              	DotModule = 0;
              	DotChunnel = 0;
              	Dotparam = 0;
              	#endif
1211   1      	_nop_();
1212   1      }
1213          
1214          void BaoCunZhengCh()	//保存曲线历史记录
1215          {
1216   1      	uint data kk,kk0;	//曲线历史记录保存768条记录,0x40000-0xFFFFF;
1217   1      	uchar data RamRam;
1218   1      	uchar xdata temp_a[MaxSend],YYMMDD[6];
1219   1      //组织正常历史记录
1220   1      	temp_a[0] = 0x7E;	//起始符
1221   1      	temp_a[1] = VERh;	//版本号
1222   1      	temp_a[2] = VERl;	//版本号
1223   1      	temp_a[3] = 0x30;	//扩展地址(随意)
C51 COMPILER V6.02  ZHU19200                                                               07/05/2004 14:20:33 PAGE 21  

1224   1      	temp_a[4] = 0x30;
1225   1      	temp_a[7] = 0x34;	//命令类型
1226   1      	temp_a[8] = 0x38;
1227   1      	temp_a[9] = 0x30;	//返回状态
1228   1      	temp_a[10]= 0x30;
1229   1      	hex2asc0( temp_a + 5, Read_ID() );	//采集箱地址
1230   1      	hex2asc1( temp_a + 11, AIDIsum+12);	//数据块长度
1231   1      	clock_read(YYMMDD);			//读取日期时间
1232   1      	hex2asc0( temp_a + 15, YYMMDD[0]);	//年//日期时间
1233   1      	hex2asc0( temp_a + 17, YYMMDD[1]);	//月
1234   1      	hex2asc0( temp_a + 19, YYMMDD[2]);	//日
1235   1      	hex2asc0( temp_a + 21, YYMMDD[3]);	//时
1236   1      	hex2asc0( temp_a + 23, YYMMDD[4]);	//分
1237   1      	hex2asc0( temp_a + 25, YYMMDD[5]);	//秒
1238   1      	memcpy(temp_a+27,RealTimeData,AIDIsum);	//实时数据
1239   1      	kk=CrcCheck(temp_a+1,26+AIDIsum);	//计算CRC
1240   1      	hex2asc1(temp_a+27+AIDIsum,kk);		//CRC校验
1241   1      	temp_a[31+AIDIsum] = '\r';		//结束符
1242   1      	temp_a[32+AIDIsum] = '\n';		//停止发送符
1243   1      //保存正常历史记录
1244   1      	AddLed=ZhengChZhi/64+4+(AddLed&0xF0);//确定扇区//选通扇区
1245   1      	ledled = AddLed;		//选通扇区
1246   1      	kk0 = ZhengChZhi%64*0x400;		//第几条,哪k
1247   1      	if(ZhengChZhi%64<8)
1248   1      	{
1249   2      		for(kk=0;kk<33+AIDIsum;kk++)	//628128存到628512RAM
1250   2      		{
1251   3      			RamRom_Convert= 1;//选通628128RAM
1252   3      			RamIO_Convert = 1;
1253   3      			RamRam = temp_a[kk];
1254   3      			RamRom_Convert= 0;
1255   3      			RamIO_Convert = 0;//选通628512RAM
1256   3      			XBYTE[kk0+kk]=RamRam;
1257   3      		}
1258   2      	}
1259   1      	else
1260   1      	{
1261   2      		RamRom_Convert= 1;
1262   2      		RamIO_Convert = 0;//选通628512RAM
1263   2      		for(kk=0;kk<33+AIDIsum;kk++)	//628128存到628512RAM
1264   2      		{
1265   3      			XBYTE[kk0+kk]=temp_a[kk];
1266   3      		}
1267   2      	}
1268   1      	RamRom_Convert= 1;//选通628128RAM
1269   1      	RamIO_Convert = 1;
1270   1      	if(ZhengChZhi<ZhengChRongL-1)	//调整正常历史记录第n条;
1271   1      	{
1272   2      		ZhengChZhi++;
1273   2      	}
1274   1      	else if(ZhengChZhi==ZhengChRongL-1)	//调整正常历史记录第n条加1;
1275   1      	{				//方便读取
1276   2      		ZhengChZhi=0;
1277   2      	}
1278   1      	else				//地址乱了
1279   1      	{
1280   2      		ZhengChZhi=0;
1281   2      		ZhengChTiao=0;
1282   2      	}
1283   1      	if(ZhengChTiao<ZhengChRongL)	//调整保存的断开历史记录条数
1284   1      	{
1285   2      		ZhengChTiao++;
C51 COMPILER V6.02  ZHU19200                                                               07/05/2004 14:20:33 PAGE 22  

1286   2      	}
1287   1      	else if(ZhengChTiao==ZhengChRongL)	//保存的断开历史记录条数
1288   1      	{
1289   2      		;
1290   2      	}
1291   1      	else					//指针出错
1292   1      	{
1293   2      		ZhengChZhi=0;
1294   2      		ZhengChTiao=0;
1295   2      	}
1296   1      }
1297          
1298          void BaoCunDuanKai()	//保存断开历史记录
1299          {
1300   1      	uint data kk,kk0;	//断开历史记录保存256条记录,0x00000-0x3FFFF;
1301   1      	uchar data RamRam;
1302   1      	uchar xdata temp_a[MaxSend],YYMMDD[6];
1303   1      	JiaoTiFlag = 0;	//断开后先发送实时记录
1304   1      //组织断开历史记录
1305   1      	temp_a[0] = 0x7E;	//起始符
1306   1      	temp_a[1] = VERh;	//版本号
1307   1      	temp_a[2] = VERl;	//版本号
1308   1      	temp_a[3] = 0x30;	//扩展地址(随意)
1309   1      	temp_a[4] = 0x30;
1310   1      	temp_a[7] = 0x34;	//命令类型
1311   1      	temp_a[8] = 0x32;
1312   1      	temp_a[9] = 0x30;	//返回状态
1313   1      	temp_a[10]= 0x30;
1314   1      	hex2asc0( temp_a + 5, Read_ID() );	//采集箱地址
1315   1      	hex2asc1( temp_a + 11, AIDIsum+12);	//数据块长度
1316   1      	clock_read(YYMMDD);			//读取日期时间
1317   1      	hex2asc0( temp_a + 15, YYMMDD[0]);	//年//日期时间
1318   1      	hex2asc0( temp_a + 17, YYMMDD[1]);	//月
1319   1      	hex2asc0( temp_a + 19, YYMMDD[2]);	//日
1320   1      	hex2asc0( temp_a + 21, YYMMDD[3]);	//时
1321   1      	hex2asc0( temp_a + 23, YYMMDD[4]);	//分
1322   1      	hex2asc0( temp_a + 25, YYMMDD[5]);	//秒
1323   1      	memcpy(temp_a+27,RealTimeData,AIDIsum);	//实时数据
1324   1      	kk0=CrcCheck(temp_a+1,26+AIDIsum);	//计算CRC
1325   1      	hex2asc1( temp_a+27+AIDIsum,kk0);	//CRC校验
1326   1      	temp_a[31+AIDIsum] = '\r';		//结束符
1327   1      	temp_a[32+AIDIsum] = '\n';		//停止发送符
1328   1      //保存断开历史记录
1329   1      	if(DuanKaiZhi==DuanKaiRongL-1)	//调整断开历史记录第n条;
1330   1      	{				//方便读取
1331   2      		DuanKaiZhi=0;
1332   2      	}
1333   1      	else if(DuanKaiZhi<DuanKaiRongL-1)	//断开历史记录第n条加1;
1334   1      	{				//方便读取
1335   2      		DuanKaiZhi++;
1336   2      	}
1337   1      	else				//地址乱了
1338   1      	{
1339   2      		DuanKaiZhi=0;
1340   2      		DuanKaiTiao=0;
1341   2      	}
1342   1      	AddLed = (AddLed&0xF0)+DuanKaiZhi/64;	//存放到什么扇区?//选通扇区
1343   1      	ledled = AddLed;		//选通扇区
1344   1      	kk0 = DuanKaiZhi%64*0x400;		//第几条,哪k
1345   1      	if(DuanKaiZhi%64<8)
1346   1      	{
1347   2      		for(kk=0;kk<33+AIDIsum;kk++)	//628128存到628512RAM
C51 COMPILER V6.02  ZHU19200                                                               07/05/2004 14:20:33 PAGE 23  

1348   2      		{
1349   3      			RamRom_Convert= 1;//选通628128RAM
1350   3      			RamIO_Convert = 1;
1351   3      			RamRam = temp_a[kk];
1352   3      			RamRom_Convert= 0;
1353   3      			RamIO_Convert = 0;//选通628512RAM
1354   3      			XBYTE[kk0+kk]=RamRam;
1355   3      		}
1356   2      	}
1357   1      	else
1358   1      	{
1359   2      		RamRom_Convert= 1;
1360   2      		RamIO_Convert = 0;//选通628512RAM
1361   2      		for(kk=0;kk<33+AIDIsum;kk++)	//628128存到628512RAM
1362   2      		{
1363   3      			XBYTE[kk0+kk]=temp_a[kk];
1364   3      		}
1365   2      	}
1366   1      	RamRom_Convert= 1;//选通628128RAM
1367   1      	RamIO_Convert = 1;
1368   1      	if(DuanKaiTiao<DuanKaiRongL)	//调整保存的断开历史记录条数
1369   1      	{
1370   2      		DuanKaiTiao++;
1371   2      	}
1372   1      	else if(DuanKaiTiao==DuanKaiRongL)	//保存的断开历史记录条数
1373   1      	{
1374   2      		;
1375   2      	}
1376   1      	else
1377   1      	{
1378   2      		DuanKaiZhi=0;
1379   2      		DuanKaiTiao=0;
1380   2      	}
1381   1      //2003.12.05 duan kai 18 minutes reset
1382   1      	//if(DuanKaiCount++>20)	//断开历史纪录保存20条后,系统重起
1383   1      	//{
1384   1      		//DuanKaiCount=0;
1385   1      		while(1);
1386   1      	//}
1387   1      }
1388          void Test512()
1389          {
1390   1      	uchar data test0c;
1391   1      	uint  data test0i;
1392   1      	bit testFlag=0;
1393   1      	FeedDogFlag=0;	//喂狗
1394   1      	_nop_();
1395   1      	FeedDogFlag=1;
1396   1      	for(test0c=0;test0c<16;test0c++)
1397   1      	{
1398   2      		RamRom_Convert= 1;
1399   2      		RamIO_Convert = 1;	//选通628512RAM
1400   2      		Feed_watchdog();
1401   2      		AddLed=(AddLed&0xF0)+test0c;	//选择扇区
1402   2      		ledled=AddLed;
1403   2      		RamRom_Convert= 0;
1404   2      		RamIO_Convert = 0;	//选通628512RAM
1405   2      		for(test0i=0;test0i<0x1FFF;test0i++)	//test 512 0x0000-0x1FFF
1406   2      		{
1407   3      			XBYTE[test0i]=0x55;
1408   3      			if(XBYTE[test0i]!=0x55)
1409   3      			{
C51 COMPILER V6.02  ZHU19200                                                               07/05/2004 14:20:33 PAGE 24  

1410   4      				testFlag=1;
1411   4      				break;
1412   4      			}
1413   3      			XBYTE[test0i]=0xAA;
1414   3      			if(XBYTE[test0i]!=0xAA)
1415   3      			{
1416   4      				testFlag=1;
1417   4      				break;
1418   4      			}
1419   3      		}
1420   2      		if(testFlag)
1421   2      		{
1422   3      			break;
1423   3      		}
1424   2      		RamRom_Convert= 1;
1425   2      		RamIO_Convert = 0;//选通628512RAM
1426   2      		for(test0i=0x2000;test0i<0xFFFF;test0i++)//test 512 0x2000-0xFFFF
1427   2      		{
1428   3      			XBYTE[test0i]=0x55;
1429   3      			if(XBYTE[test0i]!=0x55)
1430   3      			{
1431   4      				testFlag=1;
1432   4      				break;
1433   4      			}
1434   3      			XBYTE[test0i]=0xAA;
1435   3      			if(XBYTE[test0i]!=0xAA)
1436   3      			{
1437   4      				testFlag=1;
1438   4      				break;
1439   4      			}
1440   3      			FeedDogFlag=0;	//喂狗
1441   3      			_nop_();
1442   3      			FeedDogFlag=1;
1443   3      		}
1444   2      		if(testFlag)
1445   2      		{
1446   3      			break;
1447   3      		}
1448   2      	}
1449   1      	RamRom_Convert= 1;
1450   1      	RamIO_Convert = 1;	//选通628512RAM
1451   1      	if(testFlag)
1452   1      	{
1453   2      		KuaiShFlag=1;	//512坏,快闪
1454   2      		memcpy(SendSbuf1,"SRAM test Fail\r\n\0",18);
1455   2      	}
1456   1      	else
1457   1      	{
1458   2      		ManShFlag=1;	//512好,慢闪
1459   2      		memcpy(SendSbuf1,"SRAM test Pass\r\n\0",18);
1460   2      	}
1461   1      	SendPermit1();
1462   1      }
1463          void KaiJiRengZhen()		//开机认证
1464          {
1465   1      	uchar data iii0;
1466   1      	bit   KaiJiFlag=0;
1467   1      	for(iii0=0;iii0<8;iii0++)
1468   1      	{
1469   2      		if(iii0!=KaiJiRZh[iii0])
1470   2      		{
1471   3      			KaiJiFlag=1;
C51 COMPILER V6.02  ZHU19200                                                               07/05/2004 14:20:33 PAGE 25  

1472   3      			break;
1473   3      		}
1474   2      	}
1475   1      	if(KaiJiFlag)
1476   1      	{
1477   2      		Test512();
1478   2      		for(iii0=0;iii0<8;iii0++)
1479   2      		{
1480   3      			KaiJiRZh[iii0]=iii0;
1481   3      		}
1482   2      		DuanKaiTiao=0;
1483   2      		DuanKaiZhi=0;
1484   2      		ZhengChTiao=0;
1485   2      		ZhengChZhi=0;
1486   2      	}
1487   1      	if(DuanKaiTiao>DuanKaiRongL||DuanKaiZhi>=DuanKaiRongL)
1488   1      	{
1489   2      		DuanKaiTiao=0;
1490   2      		DuanKaiZhi=0;
1491   2      	}
1492   1      	if(ZhengChTiao>ZhengChRongL||DuanKaiZhi>=ZhengChRongL)
1493   1      	{
1494   2      		ZhengChTiao=0;
1495   2      		ZhengChZhi=0;
1496   2      	}
1497   1      }
1498          
1499          void System_init()		//系统初始化
1500          {
1501   1              uchar xdata ii3;
1502   1      	TMOD = 0x10;	SCON = 0x90;//串行方式2,波特率为172.8k;定时器0:计数,1:定时
1503   1      	PCON = 0x00;	TCON = 0x40;//1:波特率增大一倍;0:INT0/1为电平触发;1:为边沿触发
1504   1      	TL0  = 0xFF;	TH0  = 0xFF;//上层中断3准备
1505   1      	TL1  = 0xFA;	TH1  = 0x3C;//定时50ms:0x1000-0x3cfa=49926
1506   1      	IP   = 0x10;	IE   = 0x1D;//串行中

⌨️ 快捷键说明

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