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

📄 jk0061119.lst

📁 Modbus RTU 的C语言程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0140) 				        {
(0141) 						  press_key_value_pc0++;
(0142) 					       if(press_key_value_pc0>9)
(0143) 					         press_key_value_pc0=1;
(0144) 						   if(press_key_value_pc2==1)
(0145) 						      byte_PASSword_1=press_key_value_pc0;
(0146) 							else if(press_key_value_pc2==2)
(0147) 							  byte_PASSword_2=press_key_value_pc0;
(0148) 							else if(press_key_value_pc2==3)
(0149) 							  byte_PASSword_3=press_key_value_pc0;
(0150) 							else if(press_key_value_pc2==4)
(0151) 							  byte_PASSword_4=press_key_value_pc0;
(0152) 						   
(0153) 						 }
(0154) 				        else if(menu_ID==3)
(0155) 				        {
(0156) 						   press_key_value_pc0++;
(0157) 					       if(press_key_value_pc0>3)
(0158) 					         press_key_value_pc0=1;
(0159) 						 }
(0160) 				    }
(0161) 		         break;
(0162) 		   case 4:	
(0163) 		       if(ID_key_pressed==2)
(0164) 			     {
(0165) 				    menu_ID=press_key_value_pc0;
(0166) 					if(menu_ID==17)
(0167) 					 {
(0168) 					    press_key_value_pc2=23;
(0169) 					    //press_key_value_pc0=1;
(0170) 						if(Flag_JC_FC)
(0171) 						  { Flag_JC_FC=0;
(0172) 						   JK_IO[0]&=0xFE;}
(0173) 						else
(0174) 						  {Flag_JC_FC=1;
(0175) 						   JK_IO[0]|=0x01;}
(0176) 					  }
(0177) 					else
(0178) 					 {
(0179) 					   floor_ID=5;
(0180) 				       press_key_value_pc2=1;
(0181) 					   press_key_value_pc0=1;
(0182) 					  }
(0183) 				  }
(0184) 		       else if(ID_key_pressed==3)
(0185) 			     {
(0186) 				    press_key_value_pc0--;
(0187) 					if(press_key_value_pc0<1)
(0188) 					press_key_value_pc0=17;
(0189) 				  }
(0190) 			   else if(ID_key_pressed==1)
(0191) 			     {
(0192) 				    press_key_value_pc0++;
(0193) 					if(press_key_value_pc0>17)
(0194) 				    press_key_value_pc0=1;
(0195) 				  }
(0196) 		         break;
(0197) 		   case 5:	
(0198) 		       if((ID_key_pressed==2)&&(Flag_press_key==0))
(0199) 			     {
(0200) 				    press_key_value_pc2=44;
(0201) 				    Flag_press_key=1;
(0202) 				    if(ASCLL_byte1==0x20)
(0203) 					ASCLL_byte1=0x30;
(0204) 					if(ASCLL_byte2==0x20)
(0205) 					ASCLL_byte2=0x30;
(0206) 					ASCLL_byte1-=0x30;
(0207) 					ASCLL_byte2-=0x30;
(0208) 					ASCLL_byte3-=0x30;
(0209) 					ASCLL_byte4-=0x30;
(0210) 				    key_change_temp=ASCLL_byte1*1000+ASCLL_byte2*100+ASCLL_byte3*10+ASCLL_byte4;
(0211) 					if((menu_ID==5)||(menu_ID==6)||(menu_ID==7)||(menu_ID==8))
(0212) 					  {
(0213) 					         temp_temp=key_change_temp-ASCLL_byte4;
(0214) 							 temp_temp*=4095;
(0215) 							 temp_temp/=3000;
(0216) 							 key_change_temp=temp_temp;
(0217) 					   }
(0218) 					   temp1=key_change_temp&0x00FF;
(0219) 					   temp0=(key_change_temp&0xFF00)>>8;
(0220) 					 JK_Value[11+2*menu_ID]=temp1;
(0221) 					 JK_Value[10+2*menu_ID]=temp0;
(0222) 					 ram_array[menu_ID-1]=key_change_temp;
(0223) 					 EEPROMwrite((int)&EEprom_array[2*menu_ID-2],temp0);
(0224) 				     EEPROMwrite((int)&EEprom_array[2*menu_ID-1],temp1);
(0225) 					 WDR();
(0226) 				  }
(0227) 			   else if(ID_key_pressed==3) 
(0228) 			     {
(0229) 				    Flag_press_key=0;
(0230) 					press_key_value_pc2++;
(0231) 					press_key_value_pc0=1;
(0232) 					if(menu_ID==17)
(0233) 					  {
(0234) 					    press_key_value_pc0--;
(0235) 						 if(press_key_value_pc0<1)
(0236) 						   press_key_value_pc0=2;
(0237) 						}
(0238) 					if((menu_ID==2)||(menu_ID==3)||(menu_ID==4)||(menu_ID==10))
(0239) 					  {
(0240) 					     if(press_key_value_pc2>4)
(0241) 						   press_key_value_pc2=1;
(0242) 					   }
(0243) 					else
(0244) 					  {
(0245) 					     if(press_key_value_pc2>3)
(0246) 						   press_key_value_pc2=1;
(0247) 					   }
(0248) 				  }
(0249) 			   else if(ID_key_pressed==1)
(0250) 			     {
(0251) 				    Flag_press_key=0;
(0252) 					if(menu_ID==17)
(0253) 					  {
(0254) 					    press_key_value_pc0++;
(0255) 						 if(press_key_value_pc0>2)
(0256) 						   press_key_value_pc0=1;
(0257) 						}
(0258) 					else if((menu_ID==1)||(menu_ID==10))
(0259) 					  {
(0260) 					     if(press_key_value_pc2==1)
(0261) 						   ASCLL_byte1=Var_ASCLL_add(ASCLL_byte1);
(0262) 						 else if(press_key_value_pc2==2)
(0263) 						   ASCLL_byte2=Var_ASCLL_add(ASCLL_byte2);
(0264) 						 else if(press_key_value_pc2==3)
(0265) 						   ASCLL_byte3=Var_ASCLL_add(ASCLL_byte3);
(0266) 						 else if(press_key_value_pc2==4)
(0267) 						   ASCLL_byte4=Var_ASCLL_add(ASCLL_byte4);
(0268) 					   }
(0269) 					else if((menu_ID==12)||(menu_ID==11))
(0270) 					  {
(0271) 					     if(press_key_value_pc2==1)
(0272) 						   ASCLL_byte2=Var_ASCLL_add(ASCLL_byte2);
(0273) 						 else if(press_key_value_pc2==2)
(0274) 						   ASCLL_byte3=Var_ASCLL_add(ASCLL_byte3);
(0275) 						 else if(press_key_value_pc2==3)
(0276) 						   ASCLL_byte4=Var_ASCLL_add(ASCLL_byte4);
(0277) 					   }
(0278) 				    else if((menu_ID==2)||(menu_ID==3)||(menu_ID==4))
(0279) 					  {
(0280) 					     if(press_key_value_pc2==1)
(0281) 						   ASCLL_byte2=Var_ASCLL_add(ASCLL_byte2);
(0282) 						 else if(press_key_value_pc2==2)
(0283) 						   ASCLL_byte3=Var_ASCLL_add(ASCLL_byte3);
(0284) 						 else if(press_key_value_pc2==4)
(0285) 						   ASCLL_byte4=Var_ASCLL_add(ASCLL_byte4);
(0286) 					   }
(0287) 					else if(menu_ID>12)
(0288) 					  {
(0289) 					     if(press_key_value_pc2==1)
(0290) 						   ASCLL_byte2=Var_ASCLL_add(ASCLL_byte2);
(0291) 						 else if(press_key_value_pc2==2)
(0292) 						   ASCLL_byte3=Var_ASCLL_add(ASCLL_byte3);
(0293) 						 else if(press_key_value_pc2==3)
(0294) 						   ASCLL_byte4=Var_ASCLL_add(ASCLL_byte4);
(0295) 					   }
(0296) 					else
(0297) 					  {
(0298) 					     if(press_key_value_pc2==1)
(0299) 						   ASCLL_byte1=Var_ASCLL_add(ASCLL_byte1);
(0300) 						 else if(press_key_value_pc2==2)
(0301) 						   ASCLL_byte2=Var_ASCLL_add(ASCLL_byte2);
(0302) 						 else if(press_key_value_pc2==3)
(0303) 						   ASCLL_byte3=Var_ASCLL_add(ASCLL_byte3);
(0304) 					   }
(0305) 				  }
(0306) 		       break;
(0307) 	    }
(0308) 	if(ID_key_pressed==4)
(0309) 	  {
(0310) 	     if(floor_ID>1)
(0311) 		   floor_ID--;
(0312) 		   menu_ID=2;
(0313) 		   press_key_value_pc0=1;
(0314) 		   press_key_value_pc2=1;
(0315) 		   byte_PASSword_1=0;
(0316) 		   byte_PASSword_2=0;
(0317) 		   byte_PASSword_3=0;
(0318) 		   byte_PASSword_4=0;
(0319) 		   Flag_press_key=1;
(0320) 	   }
(0321) 	else if(ID_key_pressed==5)
(0322) 	 {
(0323) 	    press_key_value_pc2=1;
(0324) 		press_key_value_pc0=1;
(0325) 		menu_ID=2;
(0326) 		floor_ID=2;
(0327) 		byte_PASSword_1=0;
(0328) 	    byte_PASSword_2=0;
(0329) 		byte_PASSword_3=0;
(0330) 		byte_PASSword_4=0;
(0331) 		Flag_press_key=1;
(0332) 	  }
(0333) 	Time2_press_key_delay=5;
(0334) 	Time_one_minute=0;
(0335) 	//PORTD^=0x80;
(0336) 	PORTA &= 0xEF;
(0337) 	LCD_light_on_time=2540;*/
(0338)  }
_floor_ID_program:
    0296 9508      RET
_pow2pow:
  c                    --> R20
  i                    --> R22
  X                    --> R16
    0297 940E1BFE  CALL	push_gset2
FILE: F:\单片机\小监控\新的小监控\连瑞宏达C\JK0061119_communication.h
(0001) unsigned int  calcul_value_decimal(unsigned int c,unsigned int a);
(0002) char   change_HEX_to_ASCLL(char *ptr,char len);
(0003) //////////////////////////////////////////////////////////////////
(0004) char pow2pow(char X)
(0005) {
(0006)    char i,c=1;
    0299 E041      LDI	R20,1
(0007)   if(X)
    029A 2300      TST	R16
    029B F041      BEQ	0x02A4
(0008)    {
(0009)     for(i=0; i<X; i++)
    029C 2766      CLR	R22
    029D C004      RJMP	0x02A2
(0010) 	   c*=2;  
    029E E082      LDI	R24,2
    029F 9F84      MUL	R24,R20
    02A0 2D40      MOV	R20,R0
    02A1 9563      INC	R22
    02A2 1760      CP	R22,R16
    02A3 F3D0      BCS	0x029E
(0011) 	 }
(0012)    return c; 
    02A4 2F04      MOV	R16,R20
    02A5 940E1BDB  CALL	pop_gset2
    02A7 9508      RET
_getCRC16:
  i                    --> R22
  crc                  --> R20
  len                  --> R18
  ptr                  --> R16
    02A8 940E1BFE  CALL	push_gset2
(0013)  }
(0014) //////通讯部分程序
(0015) ///////////////////////////////////////////////////////////////////////
(0016) unsigned short getCRC16( char *ptr, char len)
(0017) {
(0018)      char i;
(0019) 	unsigned short crc=0xFFFF;
    02AA EF4F      LDI	R20,0xFF
    02AB EF5F      LDI	R21,0xFF
    02AC C017      RJMP	0x02C4
(0020) 	while(len--) 
(0021) 	  {  
(0022) 	     crc^=*ptr;
    02AD 01F8      MOVW	R30,R16
    02AE 8020      LDD	R2,Z+0
    02AF 2433      CLR	R3
    02B0 2542      EOR	R20,R2
    02B1 2553      EOR	R21,R3
(0023)          for(i=0; i<8; i++) 
    02B2 2766      CLR	R22
    02B3 C00C      RJMP	0x02C0
(0024) 		 {
(0025)            if(crc&1)
    02B4 FF40      SBRS	R20,0
    02B5 C007      RJMP	0x02BD
(0026) 		     {
(0027) 			   crc>>=1; 
    02B6 9556      LSR	R21
    02B7 9547      ROR	R20
(0028) 			   crc^=0xA001;
    02B8 E081      LDI	R24,1
    02B9 EA90      LDI	R25,0xA0
    02BA 2748      EOR	R20,R24
    02BB 2759      EOR	R21,R25
(0029) 			  } 
    02BC C002      RJMP	0x02BF
(0030) 			else
(0031) 			   crc>>=1;
    02BD 9556      LSR	R21
    02BE 9547      ROR	R20
    02BF 9563      INC	R22
    02C0 3068      CPI	R22,0x8
    02C1 F390      BCS	0x02B4
(0032)            }
(0033)          ptr++;
    02C2 5F0F      SUBI	R16,0xFF
    02C3 4F1F      SBCI	R17,0xFF
    02C4 2E22      MOV	R2,R18
    02C5 2433      CLR	R3
    02C6 5021      SUBI	R18,1
    02C7 2022      TST	R2
    02C8 F721      BNE	0x02AD
(0034)        }
(0035)     return(crc);
    02C9 018A      MOVW	R16,R20
    02CA 940E1BDB  CALL	pop_gset2
    02CC 9508      RET
_getCRC12:
  i                    --> R22
  crc                  --> R20
  len                  --> R18
  ptr                  --> R16
    02CD 940E1BFE  CALL	push_gset2
(0036)  }
(0037)  ////////////////////////////////////
(0038) unsigned short getCRC12( char *ptr, char len)
(0039) {
(0040)    char i;
(0041)    unsigned short crc=0x0000;
    02CF 2744      CLR	R20
    02D0 2755      CLR	R21
    02D1 C01B      RJMP	0x02ED
(0042)    while(len--) 
(0043)      {
(0044) 	    
(0045) 	    for(i=0x80;i!=0;i>>=1)
    02D2 E860      LDI	R22,0x80
    02D3 C015      RJMP	0x02E9
(0046) 		   {
(0047) 		      if((crc&0x800)!=0)
    02D4 FF53      SBRS	R21,3
    02D5 C007      RJMP	0x02DD
(0048) 		        {   
(0049) 				   crc<<=1;
    02D6 0F44      LSL	R20
    02D7 1F55      ROL	R21
(0050) 			       crc^=0x80D;
    02D8 E08D      LDI	R24,0xD
    02D9 E098      LDI	R25,0x8
    02DA 2748      EOR	R20,R24
    02DB 2759      EOR	R21,R25
(0051) 				 }
    02DC C002      RJMP	0x02DF
(0052) 				else
(0053) 				   crc<<=1;
    02DD 0F44      LSL	R20
    02DE 1F55      ROL	R21
(0054) 			crc&=0xFFF;
    02DF 705F      ANDI	R21,0xF
(0055) 			   if((*ptr&i)!=0)
    02E0 01F8      MOVW	R30,R16
    02E1 8020      LDD	R2,Z+0
    02E2 2226      AND	R2,R22
    02E3 F021      BEQ	0x02E8
(0056) 			      crc^=0x80D;
    02E4 E08D      LDI	R24,0xD
    02E5 E098      LDI	R25,0x8
    02E6 2748      EOR	R20,R24
    02E7 2759      EOR	R21,R25
    02E8 9566      LSR	R22
    02E9 2366      TST	R22
    02EA F749      BNE	0x02D4
(0057) 		    }
(0058) 		ptr++;
    02EB 5F0F      SUBI	R16,0xFF
    02EC 4F1F      SBCI	R17,0xFF
    02ED 2E22      MOV	R2,R18
    02EE 2433      CLR	R3
    02EF 5021      SUBI	R18,1
    02F0 2022      TST	R2
    02F1 F701      BNE	0x02D2
(0059) 	  }
(0060) 	return(crc);
    02F2 018A      MOVW	R16,R20
    02F3 940E1BDB  CALL	pop_gset2
    02F5 9508      RET
(0061)  }
(0062) //TIMER0 initialisation - prescale:1024
(0063) // WGM: Normal
(0064) // desired value: 13mSec
(0065) // actual value: 12.917mSec (0.6%)
(0066) void timer0_init(void)
(0067) {
(0068)  TCCR0= 0x00; //stop
_timer0_init:
    02F6 2422      CLR	R2
    02F7 BE23      OUT	0x33,R2
(0069)  TCNT0= 0xA3; //set count
    02F8 EA83      LDI	R24,0xA3
    02F9 BF82      OUT	0x32,R24
(0070)  OCR0= 0x2B; //set compare value
    02FA E28B      LDI	R24,0x2B
    02FB BF81      OUT	0x31,R24
(0071)  TCCR0= 0x05; //start timer
    02FC E085      LDI	R24,5
    02FD BF83      OUT	0x33,R24
(0072) }
    02FE 9508      RET
_timer0_ovf_isr:
    02FF 922A      ST	R2,-Y
    0300 938A      ST	R24,-Y
    0301 B62F      IN	R2,0x3F
    0302 922A      ST	R2,-Y

⌨️ 快捷键说明

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