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

📄 jk0061119.lst

📁 Modbus RTU 的C语言程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
__start:
__text_start:
    0068 EFCF      LDI	R28,0xFF
    0069 E0D4      LDI	R29,4
    006A BFCD      OUT	0x3D,R28
    006B BFDE      OUT	0x3E,R29
    006C 52C0      SUBI	R28,0x20
    006D 40D0      SBCI	R29,0
    006E EA0A      LDI	R16,0xAA
    006F 8308      STD	Y+0,R16
    0070 2400      CLR	R0
    0071 E3EE      LDI	R30,0x3E
    0072 E0F1      LDI	R31,1
    0073 E013      LDI	R17,3
    0074 37ED      CPI	R30,0x7D
    0075 07F1      CPC	R31,R17
    0076 F011      BEQ	0x0079
    0077 9201      ST	R0,Z+
    0078 CFFB      RJMP	0x0074
    0079 8300      STD	Z+0,R16
    007A E9E2      LDI	R30,0x92
    007B E0F0      LDI	R31,0
    007C E0A0      LDI	R26,0
    007D E0B1      LDI	R27,1
    007E E010      LDI	R17,0
    007F 3DE0      CPI	R30,0xD0
    0080 07F1      CPC	R31,R17
    0081 F021      BEQ	0x0086
    0082 95C8      LPM
    0083 9631      ADIW	R30,1
    0084 920D      ST	R0,X+
    0085 CFF9      RJMP	0x007F
    0086 940E19C0  CALL	_main
_exit:
    0088 CFFF      RJMP	_exit
_init_Variables_0:
  temp1                --> R20
  temp0                --> R22
  i                    --> R10
    0089 940E1C02  CALL	push_gset3
FILE: F:\单片机\小监控\新的小监控\连瑞宏达C\JK0061119_ram.h
(0001) /////////////////////////Var  of   communication
(0002)  //char  Time0_10ms_com0=0;
(0003)  char   Time0_Ovf_com0_ProgramBranch=0;
(0004)  char   Com0_R_Cout=0,Com0_R_CRCcouter;
(0005)  char   Com0_R_Complete=0;
(0006)  //char   Com0_S_Data_flag=0;
(0007)  char   Com0_R_Data[20]; 
(0008)  char   Com0_S_Data[60];
(0009)  char   Com0_S_DataByte;
(0010)  char   *Com0_S_Pointer;
(0011)  //char   Com0_S_Data_times=0;////此变量纯粹是为发均充浮充控制命令时重复发3次
(0012)  //char   Com0_S_Data_FC_JC=0;////此变量纯粹是为记录均充浮充标志
(0013) //////////////////////////////////////////////////////////
(0014)  //char  Time0_13ms_com1=0;
(0015)  //char   Time0_Ovf_com1_ProgramBranch=0;
(0016)  char   Com1_R_Cout;
(0017)  char   Com1_R_Complete=0;
(0018)  char   Com1_R_Data[40]; 
(0019)  char   Com1_S_Data_flag=0;
(0020)  char   Master_Com1_S_Data_flag=0;
(0021)  //char   Master_Com1_S_Data_delay=0;
(0022)  char   Master_Com1_S_Data_flag_ID=10;
(0023)  //char   Com1_S_Data_FC_JC=0;////此变量纯粹是为记录均充浮充标志
(0024)  char   Com1_S_Data1[15]={0xFF,0x53,0x0C,0x00,0x07,0x1A,0x00,0x00,0x00,0x00};//设置模块输出电压电流
(0025)  char   Com1_S_Data2[6]={0x01,0x41,0x00,0x00};//读取模块模拟量
(0026)  char   Com1_S_Data3[6]={0x01,0x43,0x00,0x00};//读模块的告警状态
(0027)  char   Com1_S_Data[30];
(0028)  char   Com1_S_DataByte;
(0029)  char   Com1_S_Byte_UCSR1B;
(0030)  char   *Com1_S_Pointer;
(0031) /////////////////////////////////////////////////////////
(0032)  char   JK_Value[70];
(0033)  char   JK_IO[4]={0x01};
(0034)  char   MK_error[2];//最大只能接16个模块
(0035)  char   MK_Communication_Error[16];
(0036) ///////////////////////////////////////////////////////////////////
(0037) char          Flag_JC_FC=0;  //0:FC   1:JC
(0038) /////////////////////////////////////////////////////////////
(0039) unsigned int  v_HM_Voltage;/// 合母电压有效值
(0040) unsigned int  v_KM_Voltage;////控母电压有效值
(0041) unsigned int  v_MK_Voltage;/////模块电压有效值
(0042) unsigned int  v_BAT_Voltage;///电池电压有效值
(0043) unsigned int  A_CD_Current;//// 充电电流有效值
(0044) unsigned int  A_KM_Load_Current;///控母负载电流
(0045) ////////////////////////////////////////////////////////////////
(0046) unsigned int  v_HM_Voltage_process[10];
(0047) unsigned int  v_KM_Voltage_process[10];
(0048) unsigned int  v_MK_Voltage_process[10];
(0049) unsigned int  v_BAT_Voltage_process[10];
(0050) unsigned int  A_CD_Current_process[10];
(0051) unsigned int  A_KM_Load_Current_process[10];
(0052) char          portc_temp[6]={0x1F,0x9F,0x5F,0xDF,0x3F,0xBF};
(0053) char          Get_Data=0;
(0054) //////////////////////////////////////////////////////////////
(0055) unsigned int  Voltage_GL_Join;
(0056) unsigned int  Voltage_GL_Quit;
(0057)         char  GL_Join_Quit_Count=5;
(0058) unsigned int  *Voltage_HM_High_Alarm;
(0059) unsigned int  *Voltage_HM_Low_Alarm;
(0060) unsigned int  *Voltage_KM_High_Alarm;
(0061) unsigned int  *Voltage_KM_Low_Alarm;
(0062) ////////////////////////////////////////////////
(0063) unsigned int  *A_Current_Sensor;  ///霍尔传感器量称
(0064) unsigned int  *A_Current_BypassSensor;///分流器量程
(0065) unsigned int  *A_Current_JC; //均充电流值
(0066) unsigned int  *A_Current_FC;///浮充电流值
(0067) unsigned int  *A_Current_FC_Change_JC;//浮充转均充电流值
(0068) unsigned int  *Time_Interval_JC;////均充间隔设置值
(0069) unsigned int  *Time_Limited_JC;////均充限时设置值
(0070) unsigned int  *Time_Delay_JC;////均充延时设置值
(0071) unsigned int  Time_Interval_JC_register;////均充间隔
(0072) unsigned int  Time_Limited_JC_register;////均充限时
(0073) unsigned int  Time_Delay_JC_register;////////均充延时
(0074) // char   data_cout;//数据微调
(0075)  long          temp_temp;
(0076) unsigned int  *v_HM_data_potentiometer;
(0077) unsigned int  *v_KM_data_potentiometer;
(0078) unsigned int  *v_MK_data_potentiometer;
(0079) unsigned int  *v_Bat_data_potentiometer;
(0080) unsigned int  *A_KM_Load_Current_potentiometer;
(0081) unsigned int  *A_CD_Current_potentiometer;
(0082) ////////////////////////////////////////////
(0083) unsigned int  ram_array[22];
(0084) //////////////////////////////////////////////////////
(0085)         char  Time_five_second;//5 秒钟定时
(0086) unsigned int  Time_one_minute;	//1 分钟定时
(0087) unsigned int  Time_one_hour;//1小时定时
(0088) unsigned int  Password_Level_2;
(0089) ///////////////////////////////////AD采集
(0090) char          AD_Channels;
(0091) char          AD_collect_cout=0;
(0092) char          data_collect_flag=0;
(0093) unsigned int   Var_temp_int;
(0094) /////////////////////////////////////////
(0095) unsigned int  *v_MK_JC_Voltage;//此变量为设置模块输出电压时使用
(0096) unsigned int  *v_MK_FC_Voltage;//此变量为设置模块输出电压时使用
(0097) float          A_MK_OUTPUT ;    //此变量为后来加的模块的输出电流
(0098) union num_float
(0099)    {
(0100)      float a;
(0101)      char num[4];
(0102) 	}MK_float_num;
(0103) //////////////////////
(0104) //////////////Display  LCD
(0105) char   LCD_Display_ram[66];
(0106) char   *P_LCD_display;
(0107) unsigned int LCD_light_on_time=0;
(0108) unsigned char   ASCLL_byte1,ASCLL_byte2,ASCLL_byte3,ASCLL_byte4;
(0109) unsigned char   ASCLL_byte1_potentiometer,ASCLL_byte2_potentiometer,ASCLL_byte3_potentiometer,ASCLL_byte4_potentiometer;
(0110) /////////键盘延时
(0111) char   Time2_press_key_delay=0; //延时12ms
(0112) char   ID_key_pressed=0;
(0113) unsigned int  Password_Level_2;
(0114) unsigned char     byte_PASSword_1=0;
(0115) unsigned char    byte_PASSword_2=0;
(0116) unsigned char    byte_PASSword_3=0;
(0117) unsigned char     byte_PASSword_4=0;
(0118) unsigned int  Password_input;
(0119) ///////////
(0120) char   press_key_value_pc0=1;
(0121) char   press_key_value_pc2=1;
(0122) char   menu_ID=1;
(0123) char   floor_ID=1;
(0124) char   Flag_press_key=0;
(0125) unsigned int  key_change_temp; 
(0126) /////////////////////////////////////////////////////////////////
(0127) void init_Variables_0(void)
(0128) {
(0129)    char  i,temp0,temp1;
(0130)   
(0131)          Com0_S_Data[0]=EEPROMread((int)&Address_JK); 
    008B E001      LDI	R16,1
    008C E010      LDI	R17,0
    008D 940E1C63  CALL	_EEPROMread
    008F 9300032C  STS	_Com0_S_Data,R16
(0132) 		 JK_Value[56]=0;
    0091 2422      CLR	R2
    0092 922002D0  STS	0x2D0,R2
(0133) 		 JK_Value[57]=Com0_S_Data[0];
    0094 2E20      MOV	R2,R16
    0095 922002D1  STS	0x2D1,R2
(0134) 		 //Com0_S_Data[0]=02;
(0135) 	     temp0=EEPROMread((int)&Voltage_GL_Join_110_Hbyte);
    0097 E002      LDI	R16,2
    0098 E010      LDI	R17,0
    0099 940E1C63  CALL	_EEPROMread
    009B 2F60      MOV	R22,R16
(0136) 		 temp1=EEPROMread((int)&Voltage_GL_Join_110_Lbyte);
    009C E003      LDI	R16,3
    009D E010      LDI	R17,0
    009E 940E1C63  CALL	_EEPROMread
    00A0 2F40      MOV	R20,R16
(0137) 		 Voltage_GL_Join=(int)temp0<<8;
    00A1 2E26      MOV	R2,R22
    00A2 2433      CLR	R3
    00A3 2C32      MOV	R3,R2
    00A4 2422      CLR	R2
    00A5 92300201  STS	_Voltage_GL_Join+1,R3
    00A7 92200200  STS	_Voltage_GL_Join,R2
(0138) 		 Voltage_GL_Join|=(int)temp1;
    00A9 2E24      MOV	R2,R20
    00AA 2433      CLR	R3
    00AB 90400200  LDS	R4,_Voltage_GL_Join
    00AD 90500201  LDS	R5,_Voltage_GL_Join+1
    00AF 2842      OR	R4,R2
    00B0 2853      OR	R5,R3
    00B1 92500201  STS	_Voltage_GL_Join+1,R5
    00B3 92400200  STS	_Voltage_GL_Join,R4
(0139) 		 ////
(0140) 		 temp0=EEPROMread((int)&Voltage_GL_Quit_110_Hbyte);
    00B5 E004      LDI	R16,4
    00B6 E010      LDI	R17,0
    00B7 940E1C63  CALL	_EEPROMread
    00B9 2F60      MOV	R22,R16
(0141) 		 temp1=EEPROMread((int)&Voltage_GL_Quit_110_Lbyte);
    00BA E005      LDI	R16,5
    00BB E010      LDI	R17,0
    00BC 940E1C63  CALL	_EEPROMread
    00BE 2F40      MOV	R20,R16
(0142) 		 Voltage_GL_Quit=(int)temp0<<8;
    00BF 2E26      MOV	R2,R22
    00C0 2433      CLR	R3
    00C1 2C32      MOV	R3,R2
    00C2 2422      CLR	R2
    00C3 923001FF  STS	_Voltage_GL_Quit+1,R3
    00C5 922001FE  STS	_Voltage_GL_Quit,R2
(0143) 		 Voltage_GL_Quit|=(int)temp1;
    00C7 2E24      MOV	R2,R20
    00C8 2433      CLR	R3
    00C9 904001FE  LDS	R4,_Voltage_GL_Quit
    00CB 905001FF  LDS	R5,_Voltage_GL_Quit+1
    00CD 2842      OR	R4,R2
    00CE 2853      OR	R5,R3
    00CF 925001FF  STS	_Voltage_GL_Quit+1,R5
    00D1 924001FE  STS	_Voltage_GL_Quit,R4
(0144) 		 ////
(0145) 		  temp0=EEPROMread((int)&Password_Level_2_Hbyte);
    00D3 E308      LDI	R16,0x38
    00D4 E010      LDI	R17,0
    00D5 940E1C63  CALL	_EEPROMread
    00D7 2F60      MOV	R22,R16
(0146) 	      temp1=EEPROMread((int)&Password_Level_2_Lbyte);
    00D8 E309      LDI	R16,0x39
    00D9 E010      LDI	R17,0
    00DA 940E1C63  CALL	_EEPROMread
    00DC 2F40      MOV	R20,R16
(0147) 	      Password_Level_2=(int)temp0<<8;
    00DD 2E26      MOV	R2,R22
    00DE 2433      CLR	R3
    00DF 2C32      MOV	R3,R2
    00E0 2422      CLR	R2
    00E1 9230019E  STS	_Password_Level_2+1,R3
    00E3 9220019D  STS	_Password_Level_2,R2
(0148) 	      Password_Level_2|=(int)temp1;	
    00E5 2E24      MOV	R2,R20
    00E6 2433      CLR	R3
    00E7 9040019D  LDS	R4,_Password_Level_2
    00E9 9050019E  LDS	R5,_Password_Level_2+1
    00EB 2842      OR	R4,R2
    00EC 2853      OR	R5,R3
    00ED 9250019E  STS	_Password_Level_2+1,R5
    00EF 9240019D  STS	_Password_Level_2,R4
(0149) 		 ///
(0150) 	for(i=0; i<22; i++)	
    00F1 24AA      CLR	R10
    00F2 C042      RJMP	0x0135
(0151) 	   {
(0152) 	       temp0=EEPROMread((int)&EEprom_array[2*i]);
    00F3 E082      LDI	R24,2
    00F4 9D8A      MUL	R24,R10
    00F5 0180      MOVW	R16,R0
    00F6 E086      LDI	R24,6
    00F7 E090      LDI	R25,0
    00F8 0F08      ADD	R16,R24
    00F9 1F19      ADC	R17,R25
    00FA 940E1C63  CALL	_EEPROMread
    00FC 2F60      MOV	R22,R16
(0153) 		   temp1=EEPROMread((int)&EEprom_array[2*i+1]);
    00FD E082      LDI	R24,2
    00FE 9D8A      MUL	R24,R10
    00FF 0180      MOVW	R16,R0
    0100 E087      LDI	R24,7
    0101 E090      LDI	R25,0
    0102 0F08      ADD	R16,R24
    0103 1F19      ADC	R17,R25
    0104 940E1C63  CALL	_EEPROMread
    0106 2F40      MOV	R20,R16
(0154) 		   JK_Value[2*i+12]=temp0;
    0107 E082      LDI	R24,2
    0108 9D8A      MUL	R24,R10
    0109 01F0      MOVW	R30,R0
    010A EA84      LDI	R24,0xA4
    010B E092      LDI	R25,2
    010C 0FE8      ADD	R30,R24
    010D 1FF9      ADC	R31,R25
    010E 8360      STD	Z+0,R22
(0155) 		   JK_Value[2*i+13]=temp1;
    010F E082      LDI	R24,2
    0110 9D8A      MUL	R24,R10
    0111 01F0      MOVW	R30,R0
    0112 EA85      LDI	R24,0xA5
    0113 E092      LDI	R25,2
    0114 0FE8      ADD	R30,R24
    0115 1FF9      ADC	R31,R25
    0116 8340      STD	Z+0,R20
(0156) 		    ram_array[i]=(int)temp0<<8;
    0117 E082      LDI	R24,2
    0118 9D8A      MUL	R24,R10
    0119 01F0      MOVW	R30,R0
    011A EA84      LDI	R24,0xA4
    011B E091      LDI	R25,1
    011C 0FE8      ADD	R30,R24
    011D 1FF9      ADC	R31,R25
    011E 2E26      MOV	R2,R22
    011F 2433      CLR	R3
    0120 2C32      MOV	R3,R2
    0121 2422      CLR	R2
    0122 8231      STD	Z+1,R3
    0123 8220      STD	Z+0,R2
(0157) 			ram_array[i]|=(int)temp1;
    0124 E082      LDI	R24,2
    0125 9D8A      MUL	R24,R10
    0126 0110      MOVW	R2,R0
    0127 EA84      LDI	R24,0xA4
    0128 E091      LDI	R25,1
    0129 0E28      ADD	R2,R24
    012A 1E39      ADC	R3,R25
    012B 2E44      MOV	R4,R20
    012C 2455      CLR	R5
    012D 01F1      MOVW	R30,R2
    012E 8060      LDD	R6,Z+0
    012F 8071      LDD	R7,Z+1
    0130 2864      OR	R6,R4
    0131 2875      OR	R7,R5
    0132 8271      STD	Z+1,R7
    0133 8260      STD	Z+0,R6
    0134 94A3      INC	R10
    0135 2D8A      MOV	R24,R10
    0136 3186      CPI	R24,0x16
    0137 F408      BCC	0x0139
    0138 CFBA      RJMP	0x00F3
(0158) 	    }
(0159)  
(0160) 	 //////////
(0161) 	A_Current_BypassSensor=ram_array;
    0139 EA84      LDI	R24,0xA4
    013A E091      LDI	R25,1
    013B 939001F3  STS	_A_Current_BypassSensor+1,R25
    013D 938001F2  STS	_A_Current_BypassSensor,R24
(0162) 	A_Current_JC=ram_array+1;
    013F EA86      LDI	R24,0xA6
    0140 E091      LDI	R25,1
    0141 939001F1  STS	_A_Current_JC+1,R25
    0143 938001F0  STS	_A_Current_JC,R24
(0163) 	A_Current_FC=ram_array+2;
    0145 EA88      LDI	R24,0xA8
    0146 E091      LDI	R25,1
    0147 939001EF  STS	_A_Current_FC+1,R25
    0149 938001EE  STS	_A_Current_FC,R24
(0164) 	A_Current_FC_Change_JC=ram_array+3;
    014B EA8A      LDI	R24,0xAA
    014C E091      LDI	R25,1
    014D 939001ED  STS	_A_Current_FC_Change_JC+1,R25
    014F 938001EC  STS	_A_Current_FC_Change_JC,R24
(0165) 	Voltage_HM_High_Alarm=ram_array+4;
    0151 EA8C      LDI	R24,0xAC
    0152 E091      LDI	R25,1
    0153 939001FD  STS	_Voltage_HM_High_Alarm+1,R25
    0155 938001FC  STS	_Voltage_HM_High_Alarm,R24
(0166) 	Voltage_HM_Low_Alarm=ram_array+5;
    0157 EA8E      LDI	R24,0xAE
    0158 E091      LDI	R25,1
    0159 939001FB  STS	_Voltage_HM_Low_Alarm+1,R25
    015B 938001FA  STS	_Voltage_HM_Low_Alarm,R24
(0167) 	Voltage_KM_High_Alarm=ram_array+6;
    015D EB80      LDI	R24,0xB0
    015E E091      LDI	R25,1
    015F 939001F9  STS	_Voltage_KM_High_Alarm+1,R25
    0161 938001F8  STS	_Voltage_KM_High_Alarm,R24
(0168) 	Voltage_KM_Low_Alarm=ram_array+7;
    0163 EB82      LDI	R24,0xB2
    0164 E091      LDI	R25,1
    0165 939001F7  STS	_Voltage_KM_Low_Alarm+1,R25
    0167 938001F6  STS	_Voltage_KM_Low_Alarm,R24
(0169) 	A_Current_Sensor=ram_array+8;
    0169 EB84      LDI	R24,0xB4
    016A E091      LDI	R25,1
    016B 939001F5  STS	_A_Current_Sensor+1,R25
    016D 938001F4  STS	_A_Current_Sensor,R24
(0170) 	Time_Interval_JC=ram_array+9;
    016F EB86      LDI	R24,0xB6

⌨️ 快捷键说明

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