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

📄 modbus.lst

📁 PIC16F917开发的modbus-RTU协议
💻 LST
📖 第 1 页 / 共 5 页
字号:
  1040  05F0  1383               	bcf	3,7
  1041  05F1  0800               	movf	0,w
  1042  05F2  00F3               	movwf	btemp+3
  1043  05F3  01F2               	clrf	btemp+2
  1044  05F4  0349               	decf	?a_checkComm0Modbus+2,w
  1045  05F5  3E21               	addlw	_receBuf
  1046  05F6  0084               	movwf	4
  1047  05F7  1383               	bcf	3,7
  1048  05F8  0800               	movf	0,w
  1049  05F9  00F0               	movwf	btemp
  1050  05FA  01F1               	clrf	btemp+1
  1051  05FB  0872               	movf	btemp+2,w
  1052  05FC  07F0               	addwf	btemp
  1053  05FD  1803               	btfsc	3,0
  1054  05FE  0AF1               	incf	btemp+1
  1055  05FF  0873               	movf	btemp+3,w
  1056  0600  07F1               	addwf	btemp+1
  1057  0601  0848               	movf	?a_checkComm0Modbus+1,w
  1058  0602  0671               	xorwf	btemp+1,w
  1059  0603  1D03               	btfss	3,2
  1060  0604  2E07               	goto	u265
  1061  0605  0847               	movf	?a_checkComm0Modbus,w
  1062  0606  0670               	xorwf	btemp,w
  1063  0607                     u265
  1064  0607  1D03               	btfss	3,2
  1065  0608  2E0C               	goto	l60
  1066                           ;modbus.c: 383: {
  1067  0609  27AE  120A  118A   	fcall	_presetMultipleRegisters
  1068  060C                     l60
  1069                           ;modbus.c: 385: }
  1070  060C  01C1               	clrf	_receCount
  1071                           ;modbus.c: 388: }
  1072                           ;modbus.c: 390: default:
  1073                           ;modbus.c: 391: break;
  1074  060D  2E22               	goto	l39
  1075  060E                     l40
  1076  060E  1283               	bcf	3,5
  1077  060F  0822               	movf	_receBuf+1,w
  1078  0610  3A01               	xorlw	1
  1079  0611  1903               	btfsc	3,2
  1080  0612  2D3A               	goto	l44
  1081  0613  3A02               	xorlw	2
  1082  0614  1903               	btfsc	3,2
  1083  0615  2D3A               	goto	l44
  1084  0616  3A06               	xorlw	6
  1085  0617  1903               	btfsc	3,2
  1086  0618  2D3A               	goto	l44
  1087  0619  3A03               	xorlw	3
  1088  061A  1903               	btfsc	3,2
  1089  061B  2D3A               	goto	l44
  1090  061C  3A09               	xorlw	9
  1091  061D  1903               	btfsc	3,2
  1092  061E  2D85               	goto	l54
  1093  061F  3A1F               	xorlw	31
  1094  0620  1903               	btfsc	3,2
  1095  0621  2DC4               	goto	l58
  1096  0622                     l39
  1097                           ;modbus.c: 394: g_bRcvedOK = 0;
  1098  0622  1703               	bsf	3,6
  1099  0623  01A1               	clrf	_g_bRcvedOK^(0+256)
  1100                           ;modbus.c: 395: receCount = 0;
  1101  0624  1303               	bcf	3,6	;carry unused
  1102  0625  01C1               	clrf	_receCount
  1103                           ;modbus.c: 396: TXIE = 0;
  1104  0626  1683               	bsf	3,5
  1105  0627  120C               	bcf	12,4
  1106                           ;modbus.c: 397: TXEN = 0;
  1107  0628  1298               	bcf	24,5
  1108                           ;modbus.c: 398: RCIE = 1;
  1109  0629  168C               	bsf	12,5
  1110                           ;modbus.c: 399: TMR2IE = 1;
  1111  062A  148C               	bsf	12,1
  1112                           ;modbus.c: 400: }
  1113  062B                     l35
  1114  062B  0183               	clrf	3	;select bank 0
  1115  062C  0008               	return	;W free
  1116  062D                     _getCoilVal
  1117                           ;	_tempAddr assigned to ?a_getCoilVal+0
  1118  0000                     _getCoilVal$tempAddr	set	?a_getCoilVal
  1119                           ;	_result assigned to ?a_getCoilVal+2
  1120  0000                     _getCoilVal$result	set	?a_getCoilVal+2
  1121                           ;modbus.c: 402: uint16 getCoilVal(uint16 addr,u
      +                          int16 *tempData)
  1122  062D  0183               	clrf	3	;select bank 0
  1123  062E  01DE               	clrf	?a_getCoilVal+2
  1124  062F  01DF               	clrf	?a_getCoilVal+3
  1125                           ;modbus.c: 405: uint16 tempAddr;
  1126  0630  30FF               	movlw	255
  1127  0631  0559               	andwf	?_getCoilVal,w
  1128  0632  00DC               	movwf	?a_getCoilVal
  1129  0633  300F               	movlw	15
  1130  0634  055A               	andwf	?_getCoilVal+1,w
  1131  0635  00DD               	movwf	?a_getCoilVal+1
  1132                           ;modbus.c: 409: switch(tempAddr & 0xff)
  1133  0636  2E3B               	goto	l65
  1134                           ;modbus.c: 410: {
  1135                           ;modbus.c: 412: result = 0x01;
  1136                           ;modbus.c: 413: break;
  1137                           ;modbus.c: 414: case 131:
  1138                           ;modbus.c: 415: result = 0x01;
  1139                           ;modbus.c: 416: break;
  1140                           ;modbus.c: 417: case 132:
  1141                           ;modbus.c: 418: result = 0x01;
  1142                           ;modbus.c: 419: break;
  1143                           ;modbus.c: 420: case 133:
  1144                           ;modbus.c: 421: result = 0x01;
  1145                           ;modbus.c: 422: break;
  1146                           ;modbus.c: 423: case 134:
  1147                           ;modbus.c: 424: result = 0x01;
  1148                           ;modbus.c: 425: break;
  1149  0637                     l71
  1150                           ;modbus.c: 426: case 135:
  1151                           ;modbus.c: 427: result = 0x01;
  1152  0637  01DE               	clrf	?a_getCoilVal+2
  1153  0638  0ADE               	incf	?a_getCoilVal+2
  1154  0639  01DF               	clrf	?a_getCoilVal+3
  1155                           ;modbus.c: 428: break;
  1156                           ;modbus.c: 432: default:
  1157                           ;modbus.c: 433: break;
  1158  063A  2E58               	goto	l64
  1159  063B                     l65
  1160  063B  085D               	movf	?a_getCoilVal+1,w
  1161  063C  00F3               	movwf	btemp+3
  1162  063D  085C               	movf	?a_getCoilVal,w
  1163  063E  00F2               	movwf	btemp+2
  1164  063F  01F3               	clrf	btemp+3
  1165  0640  2E55               	goto	l30003
  1166  0641                     l30004
  1167  0641  0872               	movf	btemp+2,w
  1168  0642  3A82               	xorlw	130
  1169  0643  1903               	btfsc	3,2
  1170  0644  2E37               	goto	l71
  1171  0645  3A01               	xorlw	1
  1172  0646  1903               	btfsc	3,2
  1173  0647  2E37               	goto	l71
  1174  0648  3A07               	xorlw	7
  1175  0649  1903               	btfsc	3,2
  1176  064A  2E37               	goto	l71
  1177  064B  3A01               	xorlw	1
  1178  064C  1903               	btfsc	3,2
  1179  064D  2E37               	goto	l71
  1180  064E  3A03               	xorlw	3
  1181  064F  1903               	btfsc	3,2
  1182  0650  2E37               	goto	l71
  1183  0651  3A01               	xorlw	1
  1184  0652  1903               	btfsc	3,2
  1185  0653  2E37               	goto	l71
  1186  0654  2E58               	goto	l64
  1187  0655                     l30003
  1188  0655  0873               	movf	btemp+3,w
  1189  0656  1903               	btfsc	3,2
  1190  0657  2E41               	goto	l30004
  1191  0658                     l64
  1192                           ;modbus.c: 436: return result;
  1193  0658  085F               	movf	?a_getCoilVal+3,w
  1194  0659  00F1               	movwf	btemp+1
  1195  065A  085E               	movf	?a_getCoilVal+2,w
  1196  065B  00F0               	movwf	btemp
  1197                           ;modbus.c: 437: }
  1198  065C  0008               	return	;W free
  1199  065D                     _readCoil
  1200                           ;	_addr assigned to ?a_readCoil+0
  1201  0000                     _readCoil$addr	set	?a_readCoil
  1202                           ;	_exit assigned to ?a_readCoil+1
  1203  0000                     _readCoil$exit	set	?a_readCoil+1
  1204                           ;	_position assigned to ?a_readCoil+2
  1205  0000                     _readCoil$position	set	?a_readCoil+2
  1206                           ;	_bitCount assigned to ?a_readCoil+3
  1207  0000                     _readCoil$bitCount	set	?a_readCoil+3
  1208                           ;	_i assigned to ?a_readCoil+4
  1209  0000                     _readCoil$i	set	?a_readCoil+4
  1210                           ;	_k assigned to ?a_readCoil+5
  1211  0000                     _readCoil$k	set	?a_readCoil+5
  1212                           ;	_tempAddr assigned to ?a_readCoil+6
  1213  0000                     _readCoil$tempAddr	set	?a_readCoil+6
  1214                           ;	_byteCount assigned to ?a_readCoil+7
  1215  0000                     _readCoil$byteCount	set	?a_readCoil+7
  1216                           ;	_tempData assigned to ?a_readCoil+8
  1217  0000                     _readCoil$tempData	set	?a_readCoil+8
  1218                           ;	_crcData assigned to ?a_readCoil+10
  1219  0000                     _readCoil$crcData	set	?a_readCoil+10
  1220                           ;	_tempData1 assigned to ?a_readCoil+12
  1221  0000                     _readCoil$tempData1	set	?a_readCoil+12
  1222                           ;modbus.c: 100: void readCoil(void)
  1223  065D  0183               	clrf	3	;select bank 0
  1224  065E  01D7               	clrf	?a_readCoil+12
  1225  065F  01D8               	clrf	?a_readCoil+13
  1226                           ;modbus.c: 112: uint8 exit = 0;
  1227  0660  01CC               	clrf	?a_readCoil+1
  1228                           ;modbus.c: 116: addr = receBuf[3];
  1229  0661  0824               	movf	_receBuf+3,w
  1230  0662  00CB               	movwf	?a_readCoil
  1231                           ;modbus.c: 117: tempAddr = addr;
  1232  0663  00D1               	movwf	?a_readCoil+6
  1233                           ;modbus.c: 120: bitCount = receBuf[5];
  1234  0664  0826               	movf	_receBuf+5,w
  1235  0665  00CE               	movwf	?a_readCoil+3
  1236                           ;modbus.c: 122: byteCount = bitCount / 8;
  1237  0666  00F0               	movwf	btemp
  1238  0667  1003               	bcf	3,0
  1239  0668  0CF0               	rrf	btemp
  1240  0669  1003               	bcf	3,0
  1241  066A  0CF0               	rrf	btemp
  1242  066B  1003               	bcf	3,0
  1243  066C  0C70               	rrf	btemp,w
  1244  066D  00D2               	movwf	?a_readCoil+7
  1245                           ;modbus.c: 123: if(bitCount%8 != 0)
  1246  066E  084E               	movf	?a_readCoil+3,w
  1247  066F  3907               	andlw	7
  1248  0670  1D03               	btfss	3,2
  1249                           ;modbus.c: 124: byteCount++;
  1250  0671  0AD2               	incf	?a_readCoil+7
  1251                           ;modbus.c: 126: for(k=0;k<byteCount;k++)
  1252  0672  01D0               	clrf	?a_readCoil+5
  1253  0673                     l11
  1254  0673  0852               	movf	?a_readCoil+7,w
  1255  0674  0250               	subwf	?a_readCoil+5,w
  1256  0675  1803               	btfsc	3,0
  1257  0676  2EBF               	goto	l9
  1258                           ;modbus.c: 127: {
  1259  0677  0850               	movf	?a_readCoil+5,w
  1260  0678  3E03               	addlw	3
  1261  0679  00CD               	movwf	?a_readCoil+2
  1262                           ;modbus.c: 129: sendBuf[position] = 0;
  1263  067A  3E31               	addlw	_sendBuf
  1264  067B  0084               	movwf	4
  1265  067C  1383               	bcf	3,7
  1266  067D  0180               	clrf	0
  1267                           ;modbus.c: 130: for(i=0;i<8;i++)
  1268  067E  01CF               	clrf	?a_readCoil+4
  1269  067F                     l12
  1270                           ;modbus.c: 131: {
  1271  067F  0851               	movf	?a_readCoil+6,w
  1272  0680  00D9               	movwf	?_getCoilVal
  1273  0681  01DA               	clrf	?_getCoilVal+1
  1274  0682  3053               	movlw	?a_readCoil+8
  1275  0683  00DB               	movwf	?_getCoilVal+2
  1276  0684  262D               	fcall	_getCoilVal
  1277  0685  0870               	movf	btemp,w
  1278  0686  00D7               	movwf	?a_readCoil+12
  1279  0687  0871               	movf	btemp+1,w
  1280  0688  00D8               	movwf	?a_readCoil+13
  1281                           ;modbus.c: 134: sendBuf[position] |= tempData1<
      +                          < i;
  1282  0689  084D               	movf	?a_readCoil+2,w
  1283  068A  3E31               	addlw	_sendBuf
  1284  068B  0084               	movwf	4
  1285  068C  1383               	bcf	3,7
  1286  068D  0857               	movf	?a_readCoil+12,w
  1287  068E  00F0               	movwf	btemp
  1288  068F  084F               	movf	?a_readCoil+4,w
  1289  0690  00F1               	movwf	btemp+1
  1290  0691  0AF1               	incf	btemp+1
  1291  0692  2E95               	goto	u34
  1292  0693                     u35
  1293  0693  1003               	bcf	3,0
  1294  0694  0DF0               	rlf	btemp
  1295  0695                     u34
  1296  0695  0BF1               	decfsz	btemp+1
  1297  0696  2E93               	goto	u35
  1298  0697  0870               	movf	btemp,w
  1299  0698  0480               	iorwf	0
  1300                    

⌨️ 快捷键说明

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