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

📄 mainbd.s

📁 实现mega8的isp操作
💻 S
📖 第 1 页 / 共 3 页
字号:
	.dbline 496
;      while(k--);
	mov R2,R16
	clr R3
	subi R16,1
	tst R2
	brne L100
	.dbline -2
	.dbline 497
; }
L99:
	.dbline 0 ; func end
	ret
	.dbsym r k 16 c
	.dbend
	.dbfunc e I2C_Reset _I2C_Reset fV
	.even
_I2C_Reset::
	.dbline -1
	.dbline 499
; void I2C_Reset()
; {
	.dbline 500
;  	 CSL();
	in R24,0x15
	andi R24,251
	out 0x15,R24
	.dbline 501
; 	 RSTL();
	in R24,0x15
	andi R24,223
	out 0x15,R24
	.dbline 502
; 	 SCLL();
	in R24,0x15
	andi R24,239
	out 0x15,R24
	.dbline 503
; 	 sdelay(100);
	ldi R16,100
	rcall _sdelay
	.dbline 504
; 	 RSTH();
	sbi 0x15,5
	.dbline 506
; 	 
; 	 sdelay(100);
	ldi R16,100
	rcall _sdelay
	.dbline 507
; 	 SCLH();
	sbi 0x15,4
	.dbline 508
; 	 sdelay(100);
	ldi R16,100
	rcall _sdelay
	.dbline 509
; 	 SCLL();
	in R24,0x15
	andi R24,239
	out 0x15,R24
	.dbline 510
; 	 sdelay(100);
	ldi R16,100
	rcall _sdelay
	.dbline 511
; 	 RSTL();
	in R24,0x15
	andi R24,223
	out 0x15,R24
	.dbline -2
	.dbline 512
; }
L103:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e I2C_Start _I2C_Start fV
	.even
_I2C_Start::
	.dbline -1
	.dbline 514
; void I2C_Start() //9
; {
	.dbline 515
;  	 DDRC=0Xff;
	ldi R24,255
	out 0x14,R24
	.dbline 516
;  	 SDAH();
	sbi 0x15,1
	.dbline 518
; 	//  sdelay(10);
; 	 SCLH();
	sbi 0x15,4
	.dbline 520
; 	 //---------
; 	  sdelay(100);
	ldi R16,100
	rcall _sdelay
	.dbline 521
; 	  SDAL();
	in R24,0x15
	andi R24,253
	out 0x15,R24
	.dbline 522
; 	  sdelay(100);
	ldi R16,100
	rcall _sdelay
	.dbline 524
; 	   //----
; 	   SCLL();
	in R24,0x15
	andi R24,239
	out 0x15,R24
	.dbline 525
; 	   sdelay(10);
	ldi R16,10
	.dbline -2
	.dbline 527
; 	 
; }
L104:
	.dbline 0 ; func end
	rjmp _sdelay
	.dbend
	.dbfunc e I2C_Stop _I2C_Stop fV
	.even
_I2C_Stop::
	.dbline -1
	.dbline 530
; 
; void I2C_Stop() //8
; {
	.dbline 532
;     //DDRC=0Xff;
; 	SDAL();
	in R24,0x15
	andi R24,253
	out 0x15,R24
	.dbline 533
; 	SCLH();
	sbi 0x15,4
	.dbline 534
; 	sdelay(100);
	ldi R16,100
	rcall _sdelay
	.dbline 535
; 	SDAH();
	sbi 0x15,1
	.dbline 536
; 	sdelay(100);
	ldi R16,100
	rcall _sdelay
	.dbline 537
; 	SCLL();
	in R24,0x15
	andi R24,239
	out 0x15,R24
	.dbline 538
; 	SDAL();
	in R24,0x15
	andi R24,253
	out 0x15,R24
	.dbline 539
; 	sdelay(10);
	ldi R16,10
	.dbline -2
	.dbline 541
; 	
; }
L105:
	.dbline 0 ; func end
	rjmp _sdelay
	.dbend
	.dbfunc e I2C_ACK _I2C_ACK fV
	.even
_I2C_ACK::
	.dbline -1
	.dbline 544
; 
; void I2C_ACK() //7
; {
	.dbline 545
;    SDAL();
	in R24,0x15
	andi R24,253
	out 0x15,R24
	.dbline 546
;    SCLH();
	sbi 0x15,4
	.dbline 547
;    sdelay(100);
	ldi R16,100
	rcall _sdelay
	.dbline 548
;    SCLL();
	in R24,0x15
	andi R24,239
	out 0x15,R24
	.dbline 549
;    SDAH();
	sbi 0x15,1
	.dbline 550
;    sdelay(10);
	ldi R16,10
	.dbline -2
	.dbline 551
; }
L106:
	.dbline 0 ; func end
	rjmp _sdelay
	.dbend
	.dbfunc e I2C_NACK _I2C_NACK fV
	.even
_I2C_NACK::
	.dbline -1
	.dbline 554
; 
; void I2C_NACK() //66
; {
	.dbline 555
;    SDAH();
	sbi 0x15,1
	.dbline 556
;    SCLH();
	sbi 0x15,4
	.dbline 557
;    sdelay(100);
	ldi R16,100
	rcall _sdelay
	.dbline 558
;    SCLL();
	in R24,0x15
	andi R24,239
	out 0x15,R24
	.dbline 559
;    SDAL();
	in R24,0x15
	andi R24,253
	out 0x15,R24
	.dbline 560
;    sdelay(10);
	ldi R16,10
	.dbline -2
	.dbline 562
; 
; }
L107:
	.dbline 0 ; func end
	rjmp _sdelay
	.dbend
	.dbfunc e I2C_CACK _I2C_CACK fV
	.even
_I2C_CACK::
	.dbline -1
	.dbline 564
; void I2C_CACK()   //55
; {
	.dbline 567
; 
;    //SDAH();
;    SCLH();
	sbi 0x15,4
	.dbline 568
;      sdelay(10);
	ldi R16,10
	rcall _sdelay
	.dbline 569
;   SDAIN();//----
	in R24,0x14
	andi R24,223
	out 0x14,R24
	.dbline 570
;      sdelay(10);
	ldi R16,10
	rcall _sdelay
	.dbline 571
;    SCLH();
	sbi 0x15,4
	.dbline 572
;    sdelay(100);
	ldi R16,100
	rcall _sdelay
	.dbline 573
;    SCLL();
	in R24,0x15
	andi R24,239
	out 0x15,R24
	.dbline 574
;      sdelay(10);
	ldi R16,10
	rcall _sdelay
	.dbline 576
; 	 
;    SDAOUT();
	ldi R24,255
	out 0x14,R24
	.dbline 577
;      sdelay(10);
	ldi R16,10
	.dbline -2
	.dbline 579
; 
; }
L108:
	.dbline 0 ; func end
	rjmp _sdelay
	.dbend
	.dbfunc e I2C_WriteByte _I2C_WriteByte fV
;              k -> <dead>
;              j -> <dead>
;              i -> R22
;          WByte -> R20
	.even
_I2C_WriteByte::
	rcall push_gset2
	mov R20,R16
	.dbline -1
	.dbline 582
; 
; void I2C_WriteByte(unsigned char WByte)  //44
; {
	.dbline 584
;   unsigned char i,j,k;
;   DDRC=0XFF;
	ldi R24,255
	out 0x14,R24
	.dbline 585
;   for(i=0;i<8;i++)
	clr R22
	rjmp L113
L110:
	.dbline 586
;   {
	.dbline 588
;         
;    		if(WByte&0x80) SDAH();
	sbrs R20,7
	rjmp L114
	.dbline 588
	sbi 0x15,1
	rjmp L115
L114:
	.dbline 589
; 		else SDAL();
	in R24,0x15
	andi R24,253
	out 0x15,R24
L115:
	.dbline 590
	ldi R16,10
	rcall _sdelay
	.dbline 591
	sbi 0x15,4
	.dbline 592
	ldi R16,100
	rcall _sdelay
	.dbline 593
	in R24,0x15
	andi R24,239
	out 0x15,R24
	.dbline 594
	ldi R16,100
	rcall _sdelay
	.dbline 595
	lsl R20
	.dbline 597
L111:
	.dbline 585
	inc R22
L113:
	.dbline 585
	cpi R22,8
	brlo L110
	.dbline -2
	.dbline 600
; 		sdelay(10);
; 		SCLH();
; 		sdelay(100);
; 		SCLL();
; 		sdelay(100);
; 		WByte<<=1;
;   
;   }
;   
; 
; }
L109:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym l k 1 c
	.dbsym l j 1 c
	.dbsym r i 22 c
	.dbsym r WByte 20 c
	.dbend
	.dbfunc e I2C_ReadByte _I2C_ReadByte fc
;              i -> R20
;         RDbyte -> R22
	.even
_I2C_ReadByte::
	rcall push_gset2
	.dbline -1
	.dbline 603
; 
; unsigned char  I2C_ReadByte() //33
; {
	.dbline 605
;    unsigned char i,RDbyte;
;    SDAIN();
	in R24,0x14
	andi R24,223
	out 0x14,R24
	.dbline 606
;   DDRC=0XFD;
	ldi R24,253
	out 0x14,R24
	.dbline 607
;    RDbyte=0;
	clr R22
	.dbline 608
;   for(i=0;i<8;i++)
	clr R20
	rjmp L120
L117:
	.dbline 609
;   {
	.dbline 610
;    		SCLH();
	sbi 0x15,4
	.dbline 611
; 		sdelay(100);
	ldi R16,100
	rcall _sdelay
	.dbline 613
; 		//SDA-->PC1
; 		if(PINC&0X02) //??
	sbis 0x13,1
	rjmp L121
	.dbline 614
; 		 {   RDbyte<<=1;
	.dbline 614
	lsl R22
	.dbline 615
; 		     RDbyte|=0x01;
	ori R22,1
	.dbline 616
; 		 }
	rjmp L122
L121:
	.dbline 618
; 		else
; 		{
	.dbline 619
; 		 RDbyte<<=1;
	lsl R22
	.dbline 620
; 		   RDbyte&=0xfe;
	andi R22,254
	.dbline 621
; 		}
L122:
	.dbline 622
	ldi R16,10
	rcall _sdelay
	.dbline 623
	in R24,0x15
	andi R24,239
	out 0x15,R24
	.dbline 625
L118:
	.dbline 608
	inc R20
L120:
	.dbline 608
	cpi R20,8
	brlo L117
	.dbline 627
; 		sdelay(10);
; 		SCLL();
; 		
;   }
;   //SDAOUT();
;   DDRC=0XFF;
	ldi R24,255
	out 0x14,R24
	.dbline 628
;   return RDbyte;
	mov R16,R22
	.dbline -2
L116:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r RDbyte 22 c
	.dbend
	.dbfunc e I2C_Read _I2C_Read fc
;              i -> <dead>
;              k -> R20
;           addr -> R20
	.even
_I2C_Read::
	rcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 632
; }
; 
; unsigned char  I2C_Read(unsigned char addr)  //22
; {
	.dbline 634
;   unsigned char i,k;
;   I2C_Start();
	rcall _I2C_Start
	.dbline 635
;   I2C_WriteByte(0xa0);//写 CONTRL
	ldi R16,160
	rcall _I2C_WriteByte
	.dbline 636
;   I2C_CACK();
	rcall _I2C_CACK
	.dbline 637
;   sdelay(10);
	ldi R16,10
	rcall _sdelay
	.dbline 639
;   
;   I2C_WriteByte(addr);
	mov R16,R20
	rcall _I2C_WriteByte
	.dbline 640
;   I2C_CACK();
	rcall _I2C_CACK
	.dbline 641
;   sdelay(10);
	ldi R16,10
	rcall _sdelay
	.dbline 643
;   
;   I2C_Start();
	rcall _I2C_Start
	.dbline 645
;   
;   I2C_WriteByte(0xa1);//读控制字符 CONTRL
	ldi R16,161
	rcall _I2C_WriteByte
	.dbline 646
;   I2C_CACK();
	rcall _I2C_CACK
	.dbline 647
;   sdelay(10);
	ldi R16,10
	rcall _sdelay
	.dbline 648
;   k=I2C_ReadByte();
	rcall _I2C_ReadByte
	mov R20,R16
	.dbline 649
;   I2C_NACK();
	rcall _I2C_NACK
	.dbline 650
;   I2C_Stop();
	rcall _I2C_Stop
	.dbline 651
;   return k;
	mov R16,R20
	.dbline -2
L123:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym l i 1 c
	.dbsym r k 20 c
	.dbsym r addr 20 c
	.dbend
	.dbfunc e I2C_Write _I2C_Write fV
;              k -> <dead>
;              i -> <dead>
;          Wbyte -> R20
;           addr -> R22
	.even
_I2C_Write::
	rcall push_gset2
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 655
; }
; //---写I2C
; void I2C_Write(unsigned char addr,unsigned char Wbyte) // 111
; {
	.dbline 657
;  unsigned char i,k;
;   I2C_Start();
	rcall _I2C_Start
	.dbline 658
;   I2C_WriteByte(0xa0);//写 CONTRL
	ldi R16,160
	rcall _I2C_WriteByte
	.dbline 659
;   I2C_CACK();
	rcall _I2C_CACK
	.dbline 660
;   sdelay(10);
	ldi R16,10
	rcall _sdelay
	.dbline 661
;   I2C_WriteByte(addr);
	mov R16,R22
	rcall _I2C_WriteByte
	.dbline 662
;   I2C_CACK();
	rcall _I2C_CACK
	.dbline 663
;   sdelay(10);
	ldi R16,10
	rcall _sdelay
	.dbline 664
;   I2C_WriteByte(Wbyte);
	mov R16,R20
	rcall _I2C_WriteByte
	.dbline 665
;    I2C_CACK();
	rcall _I2C_CACK
	.dbline 666
;    sdelay(10);
	ldi R16,10
	rcall _sdelay
	.dbline 667
;    I2C_Stop();
	rcall _I2C_Stop
	.dbline -2
	.dbline 669
; 
; }
L124:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym l k 1 c
	.dbsym l i 1 c
	.dbsym r Wbyte 20 c
	.dbsym r addr 22 c
	.dbend
	.dbfunc e IC_Num_Read _IC_Num_Read fV
;          datax -> <dead>
;              j -> R20
	.even
_IC_Num_Read::
	rcall push_gset1
	sbiw R28,2
	.dbline -1
	.dbline 673
; 
; //----------- IC 卡处理-----------//
; void IC_Num_Read()
; {
	.dbline 677
; //老板,PD3=0,插卡了 ,卡座常闭合
; 		unsigned char datax,j;
; 		
; 	if(PIND!=0XA3) ICRead=1;
	in R24,0x10
	cpi R24,163
	breq L126
	.dbline 677
	ldi R24,1
	sts _ICRead,R24
L126:
	.dbline 679
; 	
; 	if((PIND==0XA3)&&(ICRead>0))
	in R24,0x10
	cpi R24,163
	breq X5
	rjmp L128
X5:
	clr R2
	lds R3,_ICRead
	cp R2,R3
	brlo X6
	rjmp L128
X6:
	.dbline 680
; 	{
	.dbline 681
; 		ICRead=0;
	sts _ICRead,R2
	.dbline 685
; 	
; 		//IC卡:12,14,16 司机号保存处
; 		//--写SendSbuf[];
; 		sdelay(200);
	ldi R16,200
	rcall _sdelay
	.dbline 686
; 		CLI();
	cli
	.dbline 687
; 		for(j=6;j<9;j++)
	ldi R20,6
	rjmp L133
L130:
	.dbline 688
	.dbline 692
	mov R16,R20
	lsl R16
	rcall _I2C_Read
	ldi R24,<_SendSbuf
	ldi R25,>_SendSbuf
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R16
	.dbline 693
	ldi R16,200
	rcall _sdelay
	.dbline 696
L131:
	.dbline 687
	inc R20
L133:
	.dbline 687
	cpi R20,9
	brlo L130
	.dbline 698
; 		{
; 		  // datax=I2C_Read(j*2);
; 		 //  if((datax>47)&&(datax<60)) //是ASCII CODE
; 		   //   {//写发送
; 			   		SendSbuf[j]=I2C_Read(j*2);//I2C_Write(0,0X33);
; 					sdelay(200);
; 			//}
; 			//else j=15;
; 		}
; 		
; 		if(j==9) //写eeprom
	cpi R20,9
	brne L134
	.dbline 699
; 		{
	.dbline 700
; 		   EEPROMWriteBytes(8, &SendSbuf[8], 1);
	ldi R24,1
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_SendSbuf+8
	ldi R19,>_SendSbuf+8
	ldi R16,8
	ldi R17,0
	rcall _EEPROMWriteBytes
	.dbline 701
; 		   sdelay(200);
	ldi R16,200
	rcall _sdelay
	.dbline 702
; 		   EEPROMWriteBytes(9, &SendSbuf[9], 1);
	ldi R24,1
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_SendSbuf+9
	ldi R19,>_SendSbuf+9
	ldi R16,9
	ldi R17,0
	rcall _EEPROMWriteBytes
	.dbline 703
; 		   sdelay(200);
	ldi R16,200
	rcall _sdelay
	.dbline 704
; 		   EEPROMWriteBytes(10,&SendSbuf[10],1);
	ldi R24,1
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,<_SendSbuf+10
	ldi R19,>_SendSbuf+10
	ldi R16,10
	ldi R17,0
	rcall _EEPROMWriteBytes
	.dbline 705
; 		}
L134:
	.dbline 707
; 		
; 	}//END OF:if((PIND==0XA3)&&(ICRead<3))
L128:
	.dbline 710
; 		
; 		
; 		SEI();
	sei
	.dbline -2
	.dbline 711
; }
L125:
	adiw R28,2
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym l datax 3 c
	.dbsym r j 20 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\AVR\P_TEST\MainBd.c
_kr2::
	.blkb 1
	.dbsym e kr2 _kr2 c
_kr1::
	.blkb 1
	.dbsym e kr1 _kr1 c
_T0_Count::
	.blkb 1
	.dbsym e T0_Count _T0_Count c
_ICRead::
	.blkb 1
	.dbsym e ICRead _ICRead c
_TimeForSend::
	.blkb 2
	.dbsym e TimeForSend _TimeForSend i
_NowSend::
	.blkb 2
	.dbsym e NowSend _NowSend i
_TimeForCall::
	.blkb 1
	.dbsym e TimeForCall _TimeForCall c
_Send_flag::
	.blkb 1
	.dbsym e Send_flag _Send_flag c
_SendPoint::
	.blkb 2
	.dbsym e SendPoint _SendPoint pc
_ReceiveSbuf::
	.blkb 20
	.dbsym e ReceiveSbuf _ReceiveSbuf A[20:20]c
_krec::
	.blkb 1
	.dbsym e krec _krec c
_Sbufx::
	.blkb 1
	.dbsym e Sbufx _Sbufx c
	.area data(ram, con, rel)
	.dbfile E:\AVR\P_TEST\MainBd.c
L10:
	.blkb 12
	.area idata
	.byte 'S,'t,'a,'r,'t,32,48,48,32,13,10,0
	.area data(ram, con, rel)
	.dbfile E:\AVR\P_TEST\MainBd.c
L5:
	.blkb 6
	.area idata
	.byte 49,50,51,52,53,0
	.area data(ram, con, rel)
	.dbfile E:\AVR\P_TEST\MainBd.c

⌨️ 快捷键说明

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