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

📄 boot128.lst

📁 AVR16源代码 ICC编译器
💻 LST
📖 第 1 页 / 共 5 页
字号:
    F12C 81FD      LDD	R31,Y+5
    F12D 0FE8      ADD	R30,R24
    F12E 1FF9      ADC	R31,R25
    F12F 8020      LDD	R2,Z+0
    F130 E086      LDI	R24,6
    F131 E091      LDI	R25,1
    F132 81EC      LDD	R30,Y+4
    F133 81FD      LDD	R31,Y+5
    F134 0FE8      ADD	R30,R24
    F135 1FF9      ADC	R31,R25
    F136 8220      STD	Z+0,R2
    F137 818C      LDD	R24,Y+4
    F138 819D      LDD	R25,Y+5
    F139 9601      ADIW	R24,1
    F13A 839D      STD	Y+5,R25
    F13B 838C      STD	Y+4,R24
    F13C 3080      CPI	R24,0
    F13D E0E1      LDI	R30,1
    F13E 079E      CPC	R25,R30
    F13F F34C      BLT	0xF129
(0169) 				        	write_one_page();
    F140 DF51      RCALL	_write_one_page
(0170) 				        	address += SPM_PAGESIZE;
    F141 E040      LDI	R20,0
    F142 E051      LDI	R21,1
    F143 E060      LDI	R22,0
    F144 E070      LDI	R23,0
    F145 90400104  LDS	R4,address+2
    F147 90500105  LDS	R5,address+3
    F149 90200102  LDS	R2,address
    F14B 90300103  LDS	R3,address+1
    F14D 0E24      ADD	R2,R20
    F14E 1E35      ADC	R3,R21
    F14F 1E46      ADC	R4,R22
    F150 1E57      ADC	R5,R23
    F151 92300103  STS	address+1,R3
    F153 92200102  STS	address,R2
    F155 92500105  STS	address+3,R5
    F157 92400104  STS	address+2,R4
(0171) 				        	bPiont = 0;
    F159 2400      CLR	R0
    F15A 2411      CLR	R1
    F15B 821D      STD	Y+5,R1
    F15C 820C      STD	Y+4,R0
(0172) 		            		}
(0173) 		             		PC_Send_Ok(SendData,0x00,SendBuf,0);	//请求下一包命令				
    F15D 2422      CLR	R2
    F15E 2433      CLR	R3
    F15F 823B      STD	Y+3,R3
    F160 822A      STD	Y+2,R2
    F161 E98C      LDI	R24,0x9C
    F162 E092      LDI	R25,2
    F163 8399      STD	Y+1,R25
    F164 8388      STD	Y+0,R24
    F165 2722      CLR	R18
    F166 E000      LDI	R16,0
    F167 E013      LDI	R17,3
    F168 940EF3CD  CALL	_PC_Send_Ok
(0174) 	          		}
    F16A C00B      RJMP	0xF176
(0175)             			else
(0176) 	          		{
(0177) 	          			Wrong_Cnt++;
    F16B 94C3      INC	R12
(0178) 	          			if(Wrong_Cnt == 3)
    F16C 2D8C      MOV	R24,R12
    F16D 3083      CPI	R24,3
    F16E F411      BNE	0xF171
(0179) 	           				return ERR_OVERTIME;
    F16F E103      LDI	R16,0x13
    F170 C01E      RJMP	0xF18F
(0180) 	          			PC_Send_Err(ERR_DATACRC,SendBuf);	//接收数据错误,需重发
    F171 E92C      LDI	R18,0x9C
    F172 E032      LDI	R19,2
    F173 E102      LDI	R16,0x12
    F174 940EF3A8  CALL	_PC_Send_Err
    F176 2D8C      MOV	R24,R12
    F177 3083      CPI	R24,3
    F178 F408      BCC	0xF17A
    F179 CF64      RJMP	0xF0DE
(0181) 	          		}
(0182) 	          	}
(0183) 		}
(0184)     	}
(0185) 	if(bPiont)
    F17A 800C      LDD	R0,Y+4
    F17B 801D      LDD	R1,Y+5
    F17C 2000      TST	R0
    F17D F411      BNE	0xF180
    F17E 2011      TST	R1
    F17F F009      BEQ	0xF181
(0186) 		write_one_page();
    F180 DF11      RCALL	_write_one_page
(0187) 	PC_Send_Ok(SendData,0x00,SendBuf,0);	//向上位机发送下载成功命令
    F181 2422      CLR	R2
    F182 2433      CLR	R3
    F183 823B      STD	Y+3,R3
    F184 822A      STD	Y+2,R2
    F185 E98C      LDI	R24,0x9C
    F186 E092      LDI	R25,2
    F187 8399      STD	Y+1,R25
    F188 8388      STD	Y+0,R24
    F189 2722      CLR	R18
    F18A E000      LDI	R16,0
    F18B E013      LDI	R17,3
    F18C 940EF3CD  CALL	_PC_Send_Ok
(0188) 	
(0189) 	return 0x00;
    F18E 2700      CLR	R16
    F18F 9626      ADIW	R28,6
    F190 940EF5F5  CALL	pop_gset5
    F192 9508      RET
_Setting_Param:
  ReceiveBuf           --> R20
    F193 940EF5FF  CALL	push_gset1
    F195 01A8      MOVW	R20,R16
    F196 9724      SBIW	R28,4
(0190) }
(0191) 
(0192) //============================================================
(0193) //函	数:void Setting_Param(unsigned char *ReceiveBuf)
(0194) //功	能:设置参数
(0195) //入口参数:接收到的数据
(0196) //返 回 值:执行结果
(0197) //设 计 者:覃道堂 
(0198) //创作时间:2006-03-16
(0199) //修改时间:
(0200) //修改目的:
(0201) //============================================================
(0202) unsigned char Setting_Param(unsigned char *ReceiveBuf)
(0203) {
(0204) 	Write_EEPROM(&ReceiveBuf[5],2,EE_WT_ID);//设置节点地址
    F197 E081      LDI	R24,1
    F198 E090      LDI	R25,0
    F199 8399      STD	Y+1,R25
    F19A 8388      STD	Y+0,R24
    F19B E022      LDI	R18,2
    F19C 018A      MOVW	R16,R20
    F19D 5F0B      SUBI	R16,0xFB
    F19E 4F1F      SBCI	R17,0xFF
    F19F 940EF433  CALL	_Write_EEPROM
(0205) 	
(0206) 	Write_EEPROM(&ReceiveBuf[7],1,EE_WT_GD);//设置组地址
    F1A1 E083      LDI	R24,3
    F1A2 E090      LDI	R25,0
    F1A3 8399      STD	Y+1,R25
    F1A4 8388      STD	Y+0,R24
    F1A5 E021      LDI	R18,1
    F1A6 018A      MOVW	R16,R20
    F1A7 5F09      SUBI	R16,0xF9
    F1A8 4F1F      SBCI	R17,0xFF
    F1A9 940EF433  CALL	_Write_EEPROM
(0207) 	
(0208) 	if(Write_Time_Data(&ReceiveBuf[8],Time_Address,7))//设置系统时钟
    F1AB E087      LDI	R24,7
    F1AC 8388      STD	Y+0,R24
    F1AD 2722      CLR	R18
    F1AE 018A      MOVW	R16,R20
    F1AF 5F08      SUBI	R16,0xF8
    F1B0 4F1F      SBCI	R17,0xFF
    F1B1 940EF589  CALL	_Write_Time_Data
    F1B3 2300      TST	R16
    F1B4 F031      BEQ	0xF1BB
(0209) 		PC_Send_Err(ERR_SETTING,SendBuf);
    F1B5 E92C      LDI	R18,0x9C
    F1B6 E032      LDI	R19,2
    F1B7 E105      LDI	R16,0x15
    F1B8 940EF3A8  CALL	_PC_Send_Err
    F1BA C00D      RJMP	0xF1C8
(0210) 	else
(0211) 		PC_Send_Ok(SendData,0x00,SendBuf,0);	//向上位机发送设置表具信息结果
    F1BB 2422      CLR	R2
    F1BC 2433      CLR	R3
    F1BD 823B      STD	Y+3,R3
    F1BE 822A      STD	Y+2,R2
    F1BF E98C      LDI	R24,0x9C
    F1C0 E092      LDI	R25,2
    F1C1 8399      STD	Y+1,R25
    F1C2 8388      STD	Y+0,R24
    F1C3 2722      CLR	R18
    F1C4 E000      LDI	R16,0
    F1C5 E013      LDI	R17,3
    F1C6 940EF3CD  CALL	_PC_Send_Ok
(0212) 	
(0213) 	return 0;
    F1C8 2700      CLR	R16
    F1C9 9624      ADIW	R28,4
    F1CA 940EF602  CALL	pop_gset1
    F1CC 9508      RET
_Read_Param:
  SendData             --> R20
    F1CD 940EF5FF  CALL	push_gset1
    F1CF 01A8      MOVW	R20,R16
    F1D0 9724      SBIW	R28,4
(0214) }
(0215) 
(0216) //============================================================
(0217) //函	数:unsigned char Read_Param(unsigned char *SendData)
(0218) //功	能:读取参数
(0219) //入口参数:读取存放的地址
(0220) //返 回 值:执行结果
(0221) //设 计 者:覃道堂 
(0222) //创作时间:2006-03-16
(0223) //修改时间:
(0224) //修改目的:
(0225) //============================================================
(0226) unsigned char Read_Param(unsigned char *SendData)
(0227) {
(0228) 	Read_EEPROM(SendData,2,EE_WT_ID);	//读取节点地址
    F1D1 E081      LDI	R24,1
    F1D2 E090      LDI	R25,0
    F1D3 8399      STD	Y+1,R25
    F1D4 8388      STD	Y+0,R24
    F1D5 E022      LDI	R18,2
    F1D6 018A      MOVW	R16,R20
    F1D7 940EF44D  CALL	_Read_EEPROM
(0229) 	
(0230) 	Read_EEPROM(&SendData[2],1,EE_WT_GD);	//读取组地址
    F1D9 E083      LDI	R24,3
    F1DA E090      LDI	R25,0
    F1DB 8399      STD	Y+1,R25
    F1DC 8388      STD	Y+0,R24
    F1DD E021      LDI	R18,1
    F1DE 018A      MOVW	R16,R20
    F1DF 5F0E      SUBI	R16,0xFE
    F1E0 4F1F      SBCI	R17,0xFF
    F1E1 940EF44D  CALL	_Read_EEPROM
(0231) 	
(0232) 	PC_Send_Ok(SendData,0,SendBuf,3);	//向上位机发送读取表具信息结果
    F1E3 E083      LDI	R24,3
    F1E4 E090      LDI	R25,0
    F1E5 839B      STD	Y+3,R25
    F1E6 838A      STD	Y+2,R24
    F1E7 E98C      LDI	R24,0x9C
    F1E8 E092      LDI	R25,2
    F1E9 8399      STD	Y+1,R25
    F1EA 8388      STD	Y+0,R24
    F1EB 2722      CLR	R18
    F1EC 018A      MOVW	R16,R20
    F1ED 940EF3CD  CALL	_PC_Send_Ok
(0233) 	
(0234) 	return 0;
    F1EF 2700      CLR	R16
    F1F0 9624      ADIW	R28,4
    F1F1 940EF602  CALL	pop_gset1
    F1F3 9508      RET
_Read_SystemTime:
  SendData             --> R20
    F1F4 940EF5FF  CALL	push_gset1
    F1F6 01A8      MOVW	R20,R16
    F1F7 9724      SBIW	R28,4
(0235) }
(0236) 
(0237) //============================================================
(0238) //函	数:unsigned char Read_SystemTime(unsigned char *SendData)
(0239) //功	能:读取参数
(0240) //入口参数:读取存放的地址
(0241) //返 回 值:执行结果
(0242) //设 计 者:覃道堂 
(0243) //创作时间:2006-03-16
(0244) //修改时间:
(0245) //修改目的:
(0246) //============================================================
(0247) unsigned char Read_SystemTime(unsigned char *SendData)
(0248) {
(0249) 	if(Read_Time_Data(SendData,Time_Address,7))
    F1F8 E087      LDI	R24,7
    F1F9 8388      STD	Y+0,R24
    F1FA 2722      CLR	R18
    F1FB 018A      MOVW	R16,R20
    F1FC 940EF556  CALL	_Read_Time_Data
    F1FE 2300      TST	R16
    F1FF F031      BEQ	0xF206
(0250) 		PC_Send_Err(ERR_READTIME,SendBuf);
    F200 E92C      LDI	R18,0x9C
    F201 E032      LDI	R19,2
    F202 E106      LDI	R16,0x16
    F203 940EF3A8  CALL	_PC_Send_Err
    F205 C00C      RJMP	0xF212
(0251) 	else
(0252) 		PC_Send_Ok(SendData,0,SendBuf,7);	//向上位机发送读取表具信息结果
    F206 E087      LDI	R24,7
    F207 E090      LDI	R25,0
    F208 839B      STD	Y+3,R25
    F209 838A      STD	Y+2,R24
    F20A E98C      LDI	R24,0x9C
    F20B E092      LDI	R25,2
    F20C 8399      STD	Y+1,R25
    F20D 8388      STD	Y+0,R24
    F20E 2722      CLR	R18
    F20F 018A      MOVW	R16,R20
    F210 940EF3CD  CALL	_PC_Send_Ok
(0253) 	
(0254) 	return 0;
    F212 2700      CLR	R16
    F213 9624      ADIW	R28,4
    F214 940EF602  CALL	pop_gset1
    F216 9508      RET
_main:
  Crc_Value            --> Y+5
  Ret_Value            --> R22
  Rec_Len              --> R20
    F217 9724      SBIW	R28,4
(0255) }
(0256) 
(0257) //============================================================
(0258) //函	数:void main(void)
(0259) //功	能:主函数
(0260) //入口参数:无
(0261) //返 回 值:无
(0262) //设 计 者:覃道堂 
(0263) //创作时间:2006-03-16
(0264) //修改时间:
(0265) //修改目的:
(0266) //============================================================
(0267) void main(void)
(0268) {
(0269) 	int		Rec_Len = 0;
    F218 2744      CLR	R20
    F219 2755      CLR	R21
(0270) 	unsigned char 	Ret_Value = 0;
    F21A 2766      CLR	R22
(0271) 	unsigned short 	Crc_Value;
(0272) 
(0273) 	Init_Com();
    F21B 940EF335  CALL	_Init_Com
(0274) 	Reset_R8025();
    F21D 940EF5B2  CALL	_Reset_R8025
(0275) 	
(0276) 	PC_Send_Ok(SendData,0x00,SendBuf,1);				//向PC 发送接收握手信号
    F21F E081      LDI	R24,1
    F220 E090      LDI	R25,0
    F221 839B      STD	Y+3,R25
    F222 838A      STD	Y+2,R24
    F223 E98C      LDI	R24,0x9C
    F224 E092      LDI	R25,2
    F225 8399      STD	Y+1,R25
    F226 8388      STD	Y+0,R24
    F227 2722      CLR	R18
    F228 E000      LDI	R16,0
    F229 E013      LDI	R17,3
    F22A 940EF3CD  CALL	_PC_Send_Ok
(0277) 
(0278) 	Rec_Len = Uart_Receive_Frame(ReceiveBuf, 100);	//等待接收握手信号
    F22C E624      LDI	R18,0x64
    F22D E030      LDI	R19,0
    F22E E006      LDI	R16,6
    F22F E012      LDI	R17,2
    F230 940EF36B  CALL	_Uart_Receive_Frame
    F232 2F40      MOV	R20,R16
    F233 2755      CLR	R21
(0279) 	if(Rec_Len)  					//如果没收到数据,跳到0x00处运行程序
    F234 3040      CPI	R20,0
    F235 0745      CPC	R20,R21
    F236 F0C9      BEQ	0xF250
(0280)   	{
(0281)    		if(Verify_Command(ReceiveBuf,Rec_Len))
    F237 019A      MOVW	R18,R20
    F238 E006      LDI	R16,6
    F239 E012      LDI	R17,2
    F23A 940EF306  CALL	_Verify_Command
    F23C 2300      TST	R16
    F23D F031      BEQ	0xF244
(0282) 	 	{
(0283) 	 		PC_Send_Err(ERR_COMMANDCRC,SendBuf);	//命令CRC校验错误
    F23E E92C      LDI	R18,0x9C
    F23F E032      LDI	R19,2
    F240 E101      LDI	R16,0x11
    F241 940EF3A8  CALL	_PC_Send_Err
(0284) 	  		quit();
    F243 DE89      RCALL	_quit
(0285) 	  	} 	
(0286) 		if((ReceiveBuf[2] != 0x00))		//不是联机命令
    F244 90200208  LDS	R2,ReceiveBuf+2
    F246 2022      TST	R2
    F247 F409      BNE	0xF249
    F248 C084      RJMP	0xF2CD
(0287) 		{		
(0288) 			PC_Send_Err(ERR_CONNECT,SendBuf);					
    F249 E92C      LDI	R18,0x9C
    F24A E032      LDI	R19,2
    F24B E100      LDI	R16,0x10
    F24C 940EF3A8  CALL	_PC_Send_Err
(0289) 			quit();  	    		//验证错误		
    F24E DE7E      RCALL	_quit
(0290) 		}
(0291) 	}
    F24F C07D      RJMP	0xF2CD
(0292) 	else
(0293) 		quit(); 

⌨️ 快捷键说明

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