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

📄 serires sub.src

📁 本程序实现通过BDM方式访问MOTOROLA 9S12单片机EEPROM
💻 SRC
📖 第 1 页 / 共 3 页
字号:
	MOV  	?_Tr_write_sequence?BYTE+09H,byte_config?251
	MOV  	?_Tr_write_sequence?BYTE+0AH,byte_config?251+01H
	MOV  	R3,#012H
	MOV  	R2,#00H
	CLR  	A
	MOV  	R5,A
	MOV  	R4,A
	MOV  	R7,#0C0H
	LCALL	_Tr_write_sequence
; 	delay1ms();delay1ms();
			; SOURCE LINE # 134
	LCALL	delay1ms
	LCALL	delay1ms
; 
; 	Tr_write_sequence(0xc0,0x00,0x10,0x00,0x00,byte_config);
			; SOURCE LINE # 136
	CLR  	A
	MOV  	?_Tr_write_sequence?BYTE+05H,A
	MOV  	?_Tr_write_sequence?BYTE+06H,A
	MOV  	?_Tr_write_sequence?BYTE+07H,A
	MOV  	?_Tr_write_sequence?BYTE+08H,A
	MOV  	?_Tr_write_sequence?BYTE+09H,byte_config?251
	MOV  	?_Tr_write_sequence?BYTE+0AH,byte_config?251+01H
	MOV  	R3,#010H
	MOV  	R2,A
	MOV  	R5,A
	MOV  	R4,A
	MOV  	R7,#0C0H
	LCALL	_Tr_write_sequence
; 	delay1ms();delay1ms();
			; SOURCE LINE # 137
	LCALL	delay1ms
	LCALL	delay1ms
; 
; 	Tr_write_sequence(0xc0,0x01,0x10,0x05,0x05,byte_config);	//4a
			; SOURCE LINE # 139
	MOV  	?_Tr_write_sequence?BYTE+05H,#00H
	MOV  	?_Tr_write_sequence?BYTE+06H,#05H
	MOV  	?_Tr_write_sequence?BYTE+07H,#00H
	MOV  	?_Tr_write_sequence?BYTE+08H,#05H
	MOV  	?_Tr_write_sequence?BYTE+09H,byte_config?251
	MOV  	?_Tr_write_sequence?BYTE+0AH,byte_config?251+01H
	MOV  	R3,#010H
	LCALL	L?0041
; 	delay1ms();delay1ms();
			; SOURCE LINE # 140
	LCALL	delay1ms
	LCALL	delay1ms
; 
; 	Tr_write_sequence(0xc0,0x01,0x12,0x00,0x00,byte_config);	
			; SOURCE LINE # 142
	CLR  	A
	MOV  	?_Tr_write_sequence?BYTE+05H,A
	MOV  	?_Tr_write_sequence?BYTE+06H,A
	MOV  	?_Tr_write_sequence?BYTE+07H,A
	MOV  	?_Tr_write_sequence?BYTE+08H,A
	MOV  	?_Tr_write_sequence?BYTE+09H,byte_config?251
	MOV  	?_Tr_write_sequence?BYTE+0AH,byte_config?251+01H
	MOV  	R3,#012H
	MOV  	R2,A
	MOV  	R4,A
	LCALL	L?0042
; 	delay1ms();delay1ms();
			; SOURCE LINE # 143
	LCALL	delay1ms
	LCALL	delay1ms
; 
; 	Tr_write_sequence(0xc0,0x01,0x14,0xff,0xff,byte_config);	
			; SOURCE LINE # 145
	MOV  	?_Tr_write_sequence?BYTE+05H,#00H
	MOV  	?_Tr_write_sequence?BYTE+06H,#0FFH
	MOV  	?_Tr_write_sequence?BYTE+07H,#00H
	MOV  	?_Tr_write_sequence?BYTE+08H,#0FFH
	MOV  	?_Tr_write_sequence?BYTE+09H,byte_config?251
	MOV  	?_Tr_write_sequence?BYTE+0AH,byte_config?251+01H
	MOV  	R3,#014H
	LCALL	L?0041
; 	delay1ms();delay1ms();
			; SOURCE LINE # 146
	LCALL	delay1ms
	LCALL	delay1ms
; 
; //	Tr_write_sequence(0xc0,0x01,0x15,0x32,0x32,byte_config);	
; 	delay1ms();delay1ms();
			; SOURCE LINE # 149
	LCALL	delay1ms
	LJMP 	delay1ms
; END OF _Config_Eeprom

; }
; 
; void Read_datas()

	RSEG  ?PR?Read_datas?SERIRES_SUB
Read_datas:
	USING	0
			; SOURCE LINE # 152
; {
			; SOURCE LINE # 153
; 	uchar addrll,addrhh;
; 	int r_cycle;
; 	uint Crystal,Crystal_r;
; 	uint Data_Size_Read;
; 	uchar byte_h,byte_l;
; 
; 	Crystal=Baud_Config();
			; SOURCE LINE # 160
	LCALL	Baud_Config
	MOV  	Crystal?355,R6
	MOV  	Crystal?355+01H,R7
; 	Crystal_r=Crystal+1;
			; SOURCE LINE # 161
	MOV  	A,Crystal?355+01H
	ADD  	A,#01H
	MOV  	Crystal_r?356+01H,A
	CLR  	A
	ADDC 	A,Crystal?355
	MOV  	Crystal_r?356,A
; 
; 	addrhh=Instruction[1];
			; SOURCE LINE # 163
	MOV  	addrhh?353,Instruction+01H
; 	addrll=Instruction[2];
			; SOURCE LINE # 164
	MOV  	addrll?352,Instruction+02H
;  	Data_Size_Read=(Instruction[3])*256+Instruction[4];
			; SOURCE LINE # 165
	MOV  	A,Instruction+03H
	MOV  	R6,A
	MOV  	R4,#00H
	CLR  	A
	ADD  	A,Instruction+04H
	MOV  	Data_Size_Read?357+01H,A
	MOV  	A,R4
	ADDC 	A,R6
	MOV  	Data_Size_Read?357,A
; 
; 	//Trbyte(0x90,Crystal,Crystal);
; 	delay10ms();
			; SOURCE LINE # 168
	LCALL	delay10ms
; 	Config_Eeprom(Crystal);
			; SOURCE LINE # 169
	MOV  	R7,Crystal?355+01H
	MOV  	R6,Crystal?355
	LCALL	_Config_Eeprom
; 	delay200ms();delay200ms();delay200ms();delay200ms();delay200ms();
			; SOURCE LINE # 170
	LCALL	delay200ms
	LCALL	delay200ms
	LCALL	delay200ms
	LCALL	delay200ms
	LCALL	delay200ms
; 	for(r_cycle=0;r_cycle<Data_Size_Read;r_cycle+=2)
			; SOURCE LINE # 171
	CLR  	A
	MOV  	r_cycle?354,A
	MOV  	r_cycle?354+01H,A
?C0010:
	CLR  	C
	MOV  	A,r_cycle?354+01H
	SUBB 	A,Data_Size_Read?357+01H
	MOV  	A,r_cycle?354
	SUBB 	A,Data_Size_Read?357
	JNC  	?C0014
; 	{
			; SOURCE LINE # 172
; 		Trbyte(0xe8,Crystal,Crystal);Trbyte(addrhh,Crystal,Crystal);Trbyte(addrll,Crystal,Crystal);
			; SOURCE LINE # 173
	MOV  	R3,Crystal?355+01H
	MOV  	R2,Crystal?355
	MOV  	R5,Crystal?355+01H
	MOV  	R4,Crystal?355
	MOV  	R7,#0E8H
	LCALL	_Trbyte
	MOV  	R3,Crystal?355+01H
	MOV  	R2,Crystal?355
	MOV  	R5,Crystal?355+01H
	MOV  	R4,Crystal?355
	MOV  	R7,addrhh?353
	LCALL	_Trbyte
	MOV  	R3,Crystal?355+01H
	MOV  	R2,Crystal?355
	MOV  	R5,Crystal?355+01H
	MOV  	R4,Crystal?355
	MOV  	R7,addrll?352
	LCALL	_Trbyte
; 		delay10us();delay10us();
			; SOURCE LINE # 174
	LCALL	delay10us
	LCALL	delay10us
; 		byte_h=RecByte(Crystal_r);
			; SOURCE LINE # 175
	MOV  	R7,Crystal_r?356+01H
	LCALL	_RecByte
	MOV  	byte_h?358,R7
; 		byte_l=RecByte(Crystal_r);
			; SOURCE LINE # 176
	MOV  	R7,Crystal_r?356+01H
	LCALL	_RecByte
	MOV  	byte_l?359,R7
; 		output(byte_h);
			; SOURCE LINE # 177
	MOV  	R7,byte_h?358
	LCALL	_output
; 		output(byte_l); 
			; SOURCE LINE # 178
	MOV  	R7,byte_l?359
	LCALL	_output
; 		delay104us();delay104us();
			; SOURCE LINE # 179
	LCALL	delay104us
	LCALL	delay104us
; 
; 		addrll+=2;
			; SOURCE LINE # 181
	INC  	addrll?352
	INC  	addrll?352
; 		if(addrll!=0)
			; SOURCE LINE # 182
	MOV  	A,addrll?352
	JNZ  	?C0012
; 		 	continue;
			; SOURCE LINE # 183
?C0013:
; 		addrhh+=1;
			; SOURCE LINE # 184
	INC  	addrhh?353
; 	}
			; SOURCE LINE # 185
?C0012:
	MOV  	A,#02H
	ADD  	A,r_cycle?354+01H
	MOV  	r_cycle?354+01H,A
	CLR  	A
	ADDC 	A,r_cycle?354
	MOV  	r_cycle?354,A
	SJMP 	?C0010
; }
			; SOURCE LINE # 186
?C0014:
	RET  	
; END OF Read_datas

; 
; /*********************************************************
; *function name    :void In_datas();
; *function describe:receive datas from the pc
; *********************************************************/
; void In_datas() 

	RSEG  ?PR?In_datas?SERIRES_SUB
In_datas:
	USING	0
			; SOURCE LINE # 192
; {    
			; SOURCE LINE # 193
; 	int j_in;
;  	uint In_size;
; 	In_size=(Instruction[3])*256+Instruction[4];
			; SOURCE LINE # 196
	MOV  	A,Instruction+03H
	MOV  	R6,A
	MOV  	R4,#00H
	CLR  	A
	ADD  	A,Instruction+04H
	MOV  	In_size?461+01H,A
	MOV  	A,R4
	ADDC 	A,R6
	MOV  	In_size?461,A
; 	for(j_in=0;j_in<In_size;j_in++) 
			; SOURCE LINE # 197
	CLR  	A
	MOV  	j_in?460,A
	MOV  	j_in?460+01H,A
?C0015:
	CLR  	C
	MOV  	A,j_in?460+01H
	SUBB 	A,In_size?461+01H
	MOV  	A,j_in?460
	SUBB 	A,In_size?461
	JNC  	?C0018
; 		{
			; SOURCE LINE # 198
;    	  	Eeprom[j_in]=(input());
			; SOURCE LINE # 199
	LCALL	input
	MOV  	A,#LOW (Eeprom)
	ADD  	A,j_in?460+01H
	MOV  	DPL,A
	MOV  	A,#HIGH (Eeprom)
	ADDC 	A,j_in?460
	MOV  	DPH,A
	MOV  	A,R7
	MOVX 	@DPTR,A
;     	}
			; SOURCE LINE # 200
	INC  	j_in?460+01H
	MOV  	A,j_in?460+01H
	JNZ  	?C0015
	INC  	j_in?460
?C0040:
	SJMP 	?C0015
; }
			; SOURCE LINE # 201
?C0018:
	RET  	
; END OF In_datas

; 
; void Write_datas()

	RSEG  ?PR?Write_datas?SERIRES_SUB
Write_datas:
	USING	0
			; SOURCE LINE # 203
; {
			; SOURCE LINE # 204
; 	uchar addrll,addrhh;
; 	int w_cycle;
; 	uint Crystal,Crystal_r;
; 	uint Data_Size_Write;
; //	uchar byte_h,byte_l;
; 	uchar back_byte_h,back_byte_l;
; 
; 	Crystal=Baud_Config();
			; SOURCE LINE # 212
	LCALL	Baud_Config
	MOV  	Crystal?565,R6
	MOV  	Crystal?565+01H,R7
; 
; 	In_datas();
			; SOURCE LINE # 214
	LCALL	In_datas
; 	output(0xee);
			; SOURCE LINE # 215
	MOV  	R7,#0EEH
	LCALL	_output
; 
; 	Crystal_r=Crystal+1;
			; SOURCE LINE # 217
	MOV  	A,Crystal?565+01H
	ADD  	A,#01H
	MOV  	Crystal_r?566+01H,A
	CLR  	A
	ADDC 	A,Crystal?565
	MOV  	Crystal_r?566,A
;  
; 	addrhh=Instruction[1];
			; SOURCE LINE # 219
	MOV  	addrhh?563,Instruction+01H
; 	addrll=Instruction[2];
			; SOURCE LINE # 220
	MOV  	addrll?562,Instruction+02H
;  	Data_Size_Write=(Instruction[3])*256+Instruction[4];
			; SOURCE LINE # 221
	MOV  	A,Instruction+03H
	MOV  	R6,A
	MOV  	R4,#00H
	CLR  	A
	ADD  	A,Instruction+04H
	MOV  	Data_Size_Write?567+01H,A
	MOV  	A,R4
	ADDC 	A,R6
	MOV  	Data_Size_Write?567,A
; 
; 	//Trbyte(0x90,Crystal,Crystal);
; 	delay10ms();
			; SOURCE LINE # 224
	LCALL	delay10ms
; 	Config_Eeprom(Crystal);
			; SOURCE LINE # 225
	MOV  	R7,Crystal?565+01H
	MOV  	R6,Crystal?565
	LCALL	_Config_Eeprom
; 	delay100ms();
			; SOURCE LINE # 226
	LCALL	delay100ms
; 
; 	for(w_cycle=0;w_cycle<Data_Size_Write;w_cycle+=4)
			; SOURCE LINE # 228
	CLR  	A
	MOV  	w_cycle?564,A
	MOV  	w_cycle?564+01H,A
?C0019:
	CLR  	C
	MOV  	A,w_cycle?564+01H
	SUBB 	A,Data_Size_Write?567+01H
	MOV  	A,w_cycle?564
	SUBB 	A,Data_Size_Write?567
	JC   	$ + 5H
	LJMP 	?C0020
; 		{
			; SOURCE LINE # 229
; 		Trbyte(0xC8,Crystal,Crystal);Trbyte(addrhh,Crystal,Crystal);Trbyte(addrll,Crystal,Crystal);
			; SOURCE LINE # 230
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	MOV  	R7,#0C8H
	LCALL	_Trbyte
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	MOV  	R7,addrhh?563
	LCALL	_Trbyte
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	MOV  	R7,addrll?562
	LCALL	_Trbyte
; 		Trbyte(0xff,Crystal,Crystal);Trbyte(0xff,Crystal,Crystal);
			; SOURCE LINE # 231
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	MOV  	R7,#0FFH
	LCALL	_Trbyte
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	MOV  	R7,#0FFH
	LCALL	_Trbyte
; 		delay104us();
			; SOURCE LINE # 232
	LCALL	delay104us
; 		Trbyte(0xC0,Crystal,Crystal);Trbyte(0x01,Crystal,Crystal);Trbyte(0x16,Crystal,Crystal);Trbyte(0x40,Crystal,Crystal);Trbyte(0x40,Crystal,Crystal);//C0 01 16 40 40 		Erase two words(fore bytes)
			; SOURCE LINE # 233
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	MOV  	R7,#0C0H
	LCALL	_Trbyte
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	MOV  	R7,#01H
	LCALL	_Trbyte
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	MOV  	R7,#016H
	LCALL	_Trbyte
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	MOV  	R7,#040H
	LCALL	_Trbyte
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	MOV  	R7,#040H
	LCALL	_Trbyte
; 		delay104us();
			; SOURCE LINE # 234
	LCALL	delay104us
; 		Trbyte(0xC0,Crystal,Crystal);Trbyte(0x01,Crystal,Crystal);Trbyte(0x15,Crystal,Crystal);Trbyte(0x80,Crystal,Crystal);Trbyte(0x80,Crystal,Crystal);//C0 01 15 80 80       Programme a word(two bytes)		
			; SOURCE LINE # 235
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	MOV  	R7,#0C0H
	LCALL	_Trbyte
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	MOV  	R7,#01H
	LCALL	_Trbyte
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	MOV  	R7,#015H
	LCALL	_Trbyte
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	MOV  	R7,#080H
	LCALL	_Trbyte
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	MOV  	R7,#080H
	LCALL	_Trbyte
; 		delay104us();
			; SOURCE LINE # 236
	LCALL	delay104us
?C0024:
; 	do
; 		{
			; SOURCE LINE # 238
; 		delay104us();
			; SOURCE LINE # 239
	LCALL	delay104us
; 		Trbyte(0xE0,Crystal,Crystal);Trbyte(0x01,Crystal,Crystal);Trbyte(0x15,Crystal,Crystal);back_byte_h=RecByte(Crystal_r);back_byte_l=RecByte(Crystal_r);
			; SOURCE LINE # 240
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	MOV  	R7,#0E0H
	LCALL	_Trbyte
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	MOV  	R7,#01H
	LCALL	_Trbyte
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	MOV  	R7,#015H
	LCALL	_Trbyte
	MOV  	R7,Crystal_r?566+01H
	LCALL	_RecByte
	MOV  	back_byte_h?568,R7
	MOV  	R7,Crystal_r?566+01H
	LCALL	_RecByte
	MOV  	back_byte_l?569,R7
; 		}
			; SOURCE LINE # 241
; 		while((back_byte_l & 0x80)!=0x80);					//Erase 4 bytes
			; SOURCE LINE # 242
	MOV  	A,back_byte_l?569
	JNB  	ACC.7,?C0024
; 		delay10ms();
			; SOURCE LINE # 243
	LCALL	delay10ms
; 
; 	//	delay52us();
; 		// start to write byte1
; 		Trbyte(0xC8,Crystal,Crystal);Trbyte(addrhh,Crystal,Crystal);Trbyte(addrll,Crystal,Crystal);
			; SOURCE LINE # 247
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	MOV  	R7,#0C8H
	LCALL	_Trbyte
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	MOV  	R7,addrhh?563
	LCALL	_Trbyte
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	MOV  	R7,addrll?562
	LCALL	_Trbyte
; 		Trbyte(Eeprom[w_cycle],Crystal,Crystal);Trbyte(Eeprom[w_cycle+1],Crystal,Crystal);
			; SOURCE LINE # 248
	MOV  	A,#LOW (Eeprom)
	ADD  	A,w_cycle?564+01H
	MOV  	DPL,A
	MOV  	A,#HIGH (Eeprom)
	ADDC 	A,w_cycle?564
	MOV  	DPH,A
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	LCALL	_Trbyte
	MOV  	A,#LOW (Eeprom+01H)
	ADD  	A,w_cycle?564+01H
	MOV  	DPL,A
	MOV  	A,#HIGH (Eeprom+01H)
	ADDC 	A,w_cycle?564
	MOV  	DPH,A
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	R3,Crystal?565+01H
	MOV  	R2,Crystal?565
	MOV  	R5,Crystal?565+01H
	MOV  	R4,Crystal?565
	LCALL	_Trbyte
; 		delay104us();
			; SOURCE LINE # 249
	LCALL	delay104us
; 		Trbyte(0xC0,Crystal,Crystal);Trbyte(0x01,Crystal,Crystal);Trbyte(0x16,Crystal,Crystal);Trbyte(0x20,Crystal,Crystal);Trbyte(0x20,Crystal,Crystal);//C0 01 16 20 20 		Programme a word(two bytes)

⌨️ 快捷键说明

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