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

📄 p_test.s

📁 实现mega8的isp操作
💻 S
📖 第 1 页 / 共 4 页
字号:
	in R2,0xc
	sts _Sbufx,R2
	.dbline 304
	lds R2,_NowSbuf+1
	sts _NowSbuf,R2
	.dbline 305
	lds R2,_NowSbuf+2
	sts _NowSbuf+1,R2
	.dbline 306
	lds R2,_NowSbuf+3
	sts _NowSbuf+2,R2
	.dbline 307
	lds R2,_NowSbuf+4
	sts _NowSbuf+3,R2
	.dbline 308
	lds R2,_NowSbuf+5
	sts _NowSbuf+4,R2
	.dbline 309
	lds R2,_NowSbuf+6
	sts _NowSbuf+5,R2
	.dbline 310
	lds R2,_NowSbuf+7
	sts _NowSbuf+6,R2
	.dbline 311
	lds R2,_NowSbuf+8
	sts _NowSbuf+7,R2
	.dbline 312
	lds R2,_NowSbuf+9
	sts _NowSbuf+8,R2
	.dbline 313
	lds R2,_NowSbuf+10
	sts _NowSbuf+9,R2
	.dbline 314
	lds R2,_NowSbuf+11
	sts _NowSbuf+10,R2
	.dbline 315
	lds R2,_NowSbuf+12
	sts _NowSbuf+11,R2
	.dbline 316
	lds R2,_Sbufx
	sts _NowSbuf+12,R2
	.dbline 326
	lds R24,_NowSbuf
	cpi R24,67
	brne L80
	lds R24,_NowSbuf+1
	cpi R24,70
	brne L80
	lds R24,_NowSbuf+2
	cpi R24,77
	brne L80
	.dbline 327
	.dbline 328
	ldi R24,180
	out 0x23,R24
	.dbline 329
	clr R2
	clr R3
	sts _TimeForSend+1,R3
	sts _TimeForSend,R2
	.dbline 330
	ldi R24,10
	out 0x25,R24
	.dbline 331
L80:
	.dbline -2
	.dbline 366
; 
; //---接收中断--//
; #pragma interrupt_handler Receive_using_interrupt:iv_USART_RX
; void Receive_using_interrupt(void)
; {
;  	 //"SET- "-- AND --"CF"
; 	 char i;
; 	 Sbufx=UDR;
; 	 
; 	NowSbuf[0]=NowSbuf[1];
; 	NowSbuf[1]=NowSbuf[2];
; 	NowSbuf[2]=NowSbuf[3];
; 	NowSbuf[3]=NowSbuf[4];
; 	NowSbuf[4]=NowSbuf[5];
; 	NowSbuf[5]=NowSbuf[6];
; 	NowSbuf[6]=NowSbuf[7];
; 	NowSbuf[7]=NowSbuf[8];
; 	NowSbuf[8]=NowSbuf[9];
; 	NowSbuf[9]=NowSbuf[10];
; 	NowSbuf[10]=NowSbuf[11];
; 	NowSbuf[11]=NowSbuf[12];
; 	NowSbuf[12]=Sbufx;
; 	/*
; 	 if((NowSbuf[0]=='S')&&(NowSbuf[1]=='E')&&(NowSbuf[2]=='T'))
; 	 {
; 	  		SET_flag=1;	
; 			for(i=0;i<13;i++)	
; 			     ReceiveSbuf[i]=NowSbuf[i];								   
; 	 }
; 		*/
; 	 //-SEND SIGNED
; 	 if((NowSbuf[0]=='C')&&(NowSbuf[1]=='F')&&(NowSbuf[2]=='M'))
; 	 {
; 	        OCR2=180;  //90;//0.2ms,
; 			TimeForSend=0;  //30<=>12ms
; 	   		TCCR2=(1<<WGM21)|(1<<CS21); //8分频率 ,TCT比较输出MODE
; 	 }
; 	 
; 	// else  SET_flag=0;
; 	 
; /*	
; 	 if(Sbufx==CF[kr1]){kr1++; kr2+=2;}
; 	 else if(Sbufx==SET[kr1]){kr1++; kr2--;}
; 	 
; 	 if((Sbufx=='C')||(Sbufx=='S'))
; 	    {
; 		   kr1=1;
; 		   krec=0;
; 		   ReceiveSbuf[0]=Sbufx;
; 		   kr2=100;
; 		}
; 	
; 	// if(krec>18)kcr=0;
; 	 if((Sbufx>9)&&(Sbufx<128))
; 	  {
; 	   	 if(krec<19) ReceiveSbuf[krec]=Sbufx;
; 		  krec++;
; 	     // UDR=Sbufx; ///把收到的马上发送给COMPUTER   test only
; 	  }
; */  
; /*
; 	  if((Sbufx=='M')&&(kr2>101))  //--同步定时信号,T2
; 	  {
; 	   		kr2=100;
; 	   		TCNT2=0;
; 			
; 			//--PTR2000 SEND MODE--//
; 		//	PTR2K_SEND();  //启动发送
; 	  }
; */
; 	 
; }
L55:
	ld R2,y+
	out 0x3f,R2
	ld R24,y+
	ld R3,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbsym l i 1 c
	.dbend
	.area vector(rom, abs)
	.org 18
	rjmp _Timer0_interrupt
	.area text(rom, con, rel)
	.dbfile E:\AVR\P_TEST\P_TEST.C
	.dbfunc e Timer0_interrupt _Timer0_interrupt fV
	.even
_Timer0_interrupt::
	st -y,R24
	st -y,R25
	st -y,R30
	in R24,0x3f
	st -y,R24
	.dbline -1
	.dbline 373
	.dbline 374
	ldi R24,238
	out 0x32,R24
	.dbline 375
	lds R24,_T0_Count
	subi R24,255    ; addi 1
	sts _T0_Count,R24
	.dbline 377
	lds R24,_TimeForCall
	subi R24,255    ; addi 1
	sts _TimeForCall,R24
	.dbline 379
	lds R24,_TimeForWDG
	lds R25,_TimeForWDG+1
	cpi R24,136
	ldi R30,19
	cpc R25,R30
	brsh L85
	.dbline 380
	wdr
L85:
	.dbline -2
	.dbline 383
; 
; 
; ///====定时器0中断函数====//
; #pragma interrupt_handler Timer0_interrupt:iv_TIMER0_OVF
; 
; void  Timer0_interrupt(void)
; {
;  	  TCNT0=238;//256-(baud/1024)/200;  //定时0.005s 
; 	  T0_Count++;
; 	  
; 	 TimeForCall++;
; 		
; 	if(	TimeForWDG<5000)
; 																 WDR(); ///看门狗清零	
; 	 			
; 	  
; }
L84:
	ld R24,y+
	out 0x3f,R24
	ld R30,y+
	ld R25,y+
	ld R24,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e Timer2_initial _Timer2_initial fV
	.even
_Timer2_initial::
	.dbline -1
	.dbline 387
; 
; //--定时器2精确定时用---//
; void Timer2_initial()
; {
	.dbline 388
;  	 OCR2=180;//90;//0.2ms--180=>0.4ms
	ldi R24,180
	out 0x23,R24
	.dbline 390
; 	  //=x1;
; 	 TCNT2=0;
	clr R2
	out 0x24,R2
	.dbline 391
; 	 TIMSK|=(1<<OCIE2); //匹配中断使能
	in R24,0x39
	ori R24,128
	out 0x39,R24
	.dbline 393
; 	// TCCR2=(1<<WGM21)|(1<<CS21); //8分频率 ,TCT比较输出MODE
; 	 TimeForSend=0;
	clr R3
	sts _TimeForSend+1,R3
	sts _TimeForSend,R2
	.dbline -2
	.dbline 394
; }
L87:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 6
	rjmp _Timer2_interrupt
	.area text(rom, con, rel)
	.dbfile E:\AVR\P_TEST\P_TEST.C
	.dbfunc e Timer2_interrupt _Timer2_interrupt fV
	.even
_Timer2_interrupt::
	st -y,R2
	st -y,R4
	st -y,R5
	st -y,R24
	st -y,R25
	st -y,R30
	st -y,R31
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 399
	.dbline 403
	lds R24,_TimeForSend
	lds R25,_TimeForSend+1
	adiw R24,1
	sts _TimeForSend+1,R25
	sts _TimeForSend,R24
	.dbline 406
	lds R4,_NowSend
	lds R5,_NowSend+1
	sub R4,R24
	sbc R5,R25
	brne L89
X1:
	.dbline 407
	.dbline 410
	ldi R24,<_SendSbuf
	ldi R25,>_SendSbuf
	sts _SendPoint+1,R25
	sts _SendPoint,R24
	.dbline 411
	movw R30,R24
	ldd R2,z+0
	out 0xc,R2
	.dbline 412
	adiw R24,1
	sts _SendPoint+1,R25
	sts _SendPoint,R24
	.dbline 415
L89:
	.dbline -2
	.dbline 424
; 
; //---定时器2中断--//
; #pragma interrupt_handler Timer2_interrupt:iv_TIMER2_COMP
; void Timer2_interrupt(void)
; {
; 
;    
;  
;  	 TimeForSend++;
; 
; 	
; 	if(!(NowSend-TimeForSend)) //定时时间到
; 	{
; 	   //  
; 		   
; 	 		SendPoint=SendSbuf;
; 	    	UDR=*SendPoint; //启动发送
; 			SendPoint++;								 
; 	   		
; 	 
; 	}
; 	/*
; 	if(!(NowSend-(TimeForSend-400)))
; 	{
; 	              PTR2K_RECEIVE();  //延时100ms启动接收
; 				  TimeForSend=0;
; 				  TCCR2=0;  //关定时器2
; 	}
; 	*/
; }
L88:
	ld R2,y+
	out 0x3f,R2
	ld R31,y+
	ld R30,y+
	ld R25,y+
	ld R24,y+
	ld R5,y+
	ld R4,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e ReadEEPROM _ReadEEPROM fV
;            CRC -> R22
;           temp -> R10
;              k -> R12
;             jk -> R20
	.even
_ReadEEPROM::
	rcall push_gset4
	sbiw R28,2
	.dbline -1
	.dbline 430
; /*---***********************************
; 	 		读EEPROM
; ***********************************
; */
; void ReadEEPROM()
; {
	.dbline 432
;  	 unsigned char jk,k,CRC,temp;
; 	 CLI();
	cli
	.dbline 433
; 	EEPROMReadBytes(0, SendSbuf, 18);
	ldi R24,18
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_SendSbuf
	ldi R19,>_SendSbuf
	clr R16
	clr R17
	rcall _EEPROMReadBytes
	.dbline 434
; 	CRC=0;
	clr R22
	.dbline 436
; 	
; 	if(SendSbuf[0]=='S')
	lds R24,_SendSbuf
	cpi R24,83
	breq X2
	rjmp L92
X2:
	.dbline 437
; 	{
	.dbline 438
; 	 		if(!(SendSbuf[12]-0x31)) //频率选择
	lds R24,_SendSbuf+12
	subi R24,49
	brne L94
	.dbline 439
; 			{
	.dbline 440
; 			    PORTD|=(1<<PD4);  //CS=1;
	sbi 0x12,4
	.dbline 441
; 			}
	rjmp L95
L94:
	.dbline 443
; 			else
; 			    PORTD&=0XEF; //PD4=0;CS=0';
	in R24,0x12
	andi R24,239
	out 0x12,R24
L95:
	.dbline 446
; 			 
; 			
; 			if(SendSbuf[14]=='G')SendSbuf[15]='G';//最后的
	lds R24,_SendSbuf+14
	cpi R24,71
	brne L97
	.dbline 446
	ldi R24,71
	sts _SendSbuf+15,R24
	rjmp L98
L97:
	.dbline 447
; 			else  SendSbuf[15]=0;   //停止
	clr R2
	sts _SendSbuf+15,R2
L98:
	.dbline 451
; 			
; 			//发送:T-001-015<CRC> /\: T-001-015<CRC>G  --最后车发送
; 			//--求车辆等待时间 ---
; 			NowSend=SendSbuf[4]-0x30;
	lds R24,_SendSbuf+4
	clr R25
	sbiw R24,48
	sts _NowSend+1,R25
	sts _NowSend,R24
	.dbline 452
; 			NowSend*=10;
	movw R18,R24
	ldi R16,10
	ldi R17,0
	rcall empy16s
	sts _NowSend+1,R17
	sts _NowSend,R16
	.dbline 453
; 			NowSend+=(SendSbuf[5]-0x30);
	lds R24,_SendSbuf+5
	clr R25
	sbiw R24,48
	movw R2,R16
	add R2,R24
	adc R3,R25
	sts _NowSend+1,R3
	sts _NowSend,R2
	.dbline 455
; 			//NowSend*=10;
; 			NowSend+=(SendSbuf[6]-0x30);
	lds R24,_SendSbuf+6
	clr R25
	sbiw R24,48
	add R2,R24
	adc R3,R25
	sts _NowSend+1,R3
	sts _NowSend,R2
	.dbline 457
; 			
; 			NowSend*=36;
	movw R18,R2
	ldi R16,36
	ldi R17,0
	rcall empy16s
	sts _NowSend+1,R17
	sts _NowSend,R16
	.dbline 458
; 			NowSend+=1000;
	movw R24,R16
	subi R24,24  ; offset = 1000
	sbci R25,252
	sts _NowSend+1,R25
	sts _NowSend,R24
	.dbline 459
; 			NowSend2=NowSend;
	movw R2,R24
	sts _NowSend2+1,R3
	sts _NowSend2,R2
	.dbline 461
; 			
; 	 		for(jk=2;jk<5;jk++)  //把要发送的放在发送上
	ldi R20,2
	rjmp L108
L105:
	.dbline 462
	.dbline 465
	ldi R24,<_SendSbuf+6
	ldi R25,>_SendSbuf+6
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R10,z+0
	.dbline 466
	ldi R24,2
	mul R24,R20
	mov R24,R0
	subi R24,2
	mov R12,R24
	.dbline 467
	ldi R24,<_SendSbuf
	ldi R25,>_SendSbuf
	mov R30,R12
	clr R31
	add R30,R24
	adc R31,R25
	mov R24,R10
	swap R24
	andi R24,#0x0F
	subi R24,208    ; addi 48
	std z+0,R24
	.dbline 468
	ldi R24,<_SendSbuf
	ldi R25,>_SendSbuf
	mov R30,R12
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	eor R22,R2
	.dbline 469
	ldi R24,<_SendSbuf+1
	ldi R25,>_SendSbuf+1
	mov R30,R12
	clr R31
	add R30,R24
	adc R31,R25
	mov R24,R10
	andi R24,15
	subi R24,208    ; addi 48
	std z+0,R24
	.dbline 470
	ldi R24,<_SendSbuf+1
	ldi R25,>_SendSbuf+1
	mov R30,R12
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	eor R22,R2
	.dbline 472
L106:
	.dbline 461
	inc R20
L108:
	.dbline 461
	cpi R20,5
	brsh X3
	rjmp L105
X3:
	.dbline 474
; 			{
; 			  // SendSbuf[jk]=SendSbuf[jk+2];
; 			   //CRC^=SendSbuf[jk];
; 			   temp=SendSbuf[jk+6];
; 			   k=2*(jk-1);
; 			   SendSbuf[k]=(temp>>4)+0x30;
; 			   CRC^=SendSbuf[k];
; 			   SendSbuf[k+1]=(temp&0x0f)+0x30;
; 			   CRC^=SendSbuf[k+1];
; 			   
; 			 }
; 			 
; 			SendSbuf[10]=CRC;  //jk=9;
	sts _SendSbuf+10,R22
	.dbline 475
; 			SendSbuf[11]=SendSbuf[15];
	lds R2,_SendSbuf+15
	sts _SendSbuf+11,R2
	.dbline 476
; 			SendSbuf[12]=0;
	clr R2
	sts _SendSbuf+12,R2
	.dbline 478
; 			//-----
; 			SendSbuf[0]='T';
	ldi R24,84
	sts _SendSbuf,R24
	.dbline 479
; 			SendSbuf[1]='-';
	ldi R24,45
	sts _SendSbuf+1,R24
	.dbline 483
; 			
; 			
; 			
; 	}//end  if(SendSbuf[0]=='S')
	rjmp L93
L92:
	.dbline 484
; 	else{  //没有时候的默认值SET-001-000-0,1号车
	.dbline 485
; 	       jk=0;
	clr R20
	.dbline 486
; 	        SendSbuf[jk++]='T';
	mov R2,R20
	clr R3
	subi R20,255    ; addi 1
	ldi R24,<_SendSbuf
	ldi R25,>_SendSbuf
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,84
	std z+0,R24
	.dbline 487
; 			SendSbuf[jk++]='-';
	mov R2,R20
	clr R3
	subi R20,255    ; addi 1
	ldi R24,<_SendSbuf
	ldi R25,>_SendSbuf
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,45
	std z+0,R24
	.dbline 488
; 			SendSbuf[jk++]='0';
	mov R2,R20
	clr R3
	subi R20,255    ; addi 1
	ldi R24,<_SendSbuf
	ldi R25,>_SendSbuf
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,48
	std z+0,R24
	.dbline 489
; 			SendSbuf[jk++]='0';
	mov R2,R20
	clr R3
	subi R20,255    ; addi 1
	ldi R24,<_SendSbuf
	ldi R25,>_SendSbuf
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,48
	std z+0,R24
	.dbline 490
; 			SendSbuf[jk++]='1';
	mov R2,R20
	clr R3
	subi R20,255    ; addi 1
	ldi R24,<_SendSbuf
	ldi R25,>_SendSbuf
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,49
	std z+0,R24
	.dbline 491
; 			SendSbuf[jk++]='-';
	mov R2,R20
	clr R3
	subi R20,255    ; addi 1
	ldi R24,<_SendSbuf
	ldi R25,>_SendSbuf
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,45
	std z+0,R24
	.dbline 492
; 			SendSbuf[jk++]='0';
	mov R2,R20
	clr R3
	subi R20,255    ; addi 1
	ldi R24,<_SendSbuf
	ldi R25,>_SendSbuf
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,48
	std z+0,R24
	.dbline 493
; 			SendSbuf[jk++]='0';
	mov R2,R20
	clr R3
	subi R20,255    ; addi 1
	ldi R24,<_SendSbuf
	ldi R25,>_SendSbuf
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,48
	std z+0,R24
	.dbline 494
; 			SendSbuf[jk++]='0';
	mov R2,R20
	clr R3
	subi R20,255    ; addi 1
	ldi R24,<_SendSbuf
	ldi R25,>_SendSbuf
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,48
	std z+0,R24
	.dbline 495
; 			SendSbuf[jk++]='-';
	mov R2,R20
	clr R3
	subi R20,255    ; addi 1
	ldi R24,<_SendSbuf
	ldi R25,>_SendSbuf
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,45
	std z+0,R24
	.dbline 496
; 			SendSbuf[jk++]='0';
	mov R2,R20
	clr R3
	subi R20,255    ; addi 1
	ldi R24,<_SendSbuf
	ldi R25,>_SendSbuf
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,48
	std z+0,R24
	.dbline 497
; 			SendSbuf[jk++]='N';
	mov R2,R20
	clr R3
	subi R20,255    ; addi 1
	ldi R24,<_SendSbuf
	ldi R25,>_SendSbuf
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25

⌨️ 快捷键说明

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