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

📄 test2.s

📁 实现mega8的isp操作
💻 S
📖 第 1 页 / 共 4 页
字号:
	.dbline 695
;    SDAH();
	sbi 0x15,1
	.dbline 696
;    SCLH();
	sbi 0x15,4
	.dbline 697
;    sdelay(100);
	ldi R16,100
	rcall _sdelay
	.dbline 698
;    SCLL();
	in R24,0x15
	andi R24,239
	out 0x15,R24
	.dbline 699
;    SDAL();
	in R24,0x15
	andi R24,253
	out 0x15,R24
	.dbline 700
;    sdelay(10);
	ldi R16,10
	.dbline -2
	.dbline 702
; 
; }
L180:
	.dbline 0 ; func end
	rjmp _sdelay
	.dbend
	.dbfunc e I2C_CACK _I2C_CACK fV
	.even
_I2C_CACK::
	.dbline -1
	.dbline 704
; void I2C_CACK()   //55
; {
	.dbline 707
; 
;    //SDAH();
;    SCLH();
	sbi 0x15,4
	.dbline 708
;      sdelay(10);
	ldi R16,10
	rcall _sdelay
	.dbline 709
;   SDAIN();//----
	in R24,0x14
	andi R24,223
	out 0x14,R24
	.dbline 710
;      sdelay(10);
	ldi R16,10
	rcall _sdelay
	.dbline 711
;    SCLH();
	sbi 0x15,4
	.dbline 712
;    sdelay(100);
	ldi R16,100
	rcall _sdelay
	.dbline 713
;    SCLL();
	in R24,0x15
	andi R24,239
	out 0x15,R24
	.dbline 714
;      sdelay(10);
	ldi R16,10
	rcall _sdelay
	.dbline 716
; 	 
;    SDAOUT();
	ldi R24,255
	out 0x14,R24
	.dbline 717
;      sdelay(10);
	ldi R16,10
	.dbline -2
	.dbline 719
; 
; }
L181:
	.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 722
; 
; void I2C_WriteByte(unsigned char WByte)  //44
; {
	.dbline 724
;   unsigned char i,j,k;
;   DDRC=0XFF;
	ldi R24,255
	out 0x14,R24
	.dbline 725
;   for(i=0;i<8;i++)
	clr R22
	rjmp L186
L183:
	.dbline 726
;   {
	.dbline 728
;         
;    		if(WByte&0x80) SDAH();
	sbrs R20,7
	rjmp L187
	.dbline 728
	sbi 0x15,1
	rjmp L188
L187:
	.dbline 729
; 		else SDAL();
	in R24,0x15
	andi R24,253
	out 0x15,R24
L188:
	.dbline 730
	ldi R16,10
	rcall _sdelay
	.dbline 731
	sbi 0x15,4
	.dbline 732
	ldi R16,100
	rcall _sdelay
	.dbline 733
	in R24,0x15
	andi R24,239
	out 0x15,R24
	.dbline 734
	ldi R16,100
	rcall _sdelay
	.dbline 735
	lsl R20
	.dbline 737
L184:
	.dbline 725
	inc R22
L186:
	.dbline 725
	cpi R22,8
	brlo L183
	.dbline -2
	.dbline 740
; 		sdelay(10);
; 		SCLH();
; 		sdelay(100);
; 		SCLL();
; 		sdelay(100);
; 		WByte<<=1;
;   
;   }
;   
; 
; }
L182:
	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 743
; 
; unsigned char  I2C_ReadByte() //33
; {
	.dbline 745
;    unsigned char i,RDbyte;
;    SDAIN();
	in R24,0x14
	andi R24,223
	out 0x14,R24
	.dbline 746
;   DDRC=0XFD;
	ldi R24,253
	out 0x14,R24
	.dbline 747
;    RDbyte=0;
	clr R22
	.dbline 748
;   for(i=0;i<8;i++)
	clr R20
	rjmp L193
L190:
	.dbline 749
;   {
	.dbline 750
;    		SCLH();
	sbi 0x15,4
	.dbline 751
; 		sdelay(100);
	ldi R16,100
	rcall _sdelay
	.dbline 753
; 		//SDA-->PC1
; 		if(PINC&0X02) //??
	sbis 0x13,1
	rjmp L194
	.dbline 754
; 		 {   RDbyte<<=1;
	.dbline 754
	lsl R22
	.dbline 755
; 		     RDbyte|=0x01;
	ori R22,1
	.dbline 756
; 		 }
	rjmp L195
L194:
	.dbline 758
; 		else
; 		{
	.dbline 759
; 		 RDbyte<<=1;
	lsl R22
	.dbline 760
; 		   RDbyte&=0xfe;
	andi R22,254
	.dbline 761
; 		}
L195:
	.dbline 762
	ldi R16,10
	rcall _sdelay
	.dbline 763
	in R24,0x15
	andi R24,239
	out 0x15,R24
	.dbline 765
L191:
	.dbline 748
	inc R20
L193:
	.dbline 748
	cpi R20,8
	brlo L190
	.dbline 767
; 		sdelay(10);
; 		SCLL();
; 		
;   }
;   //SDAOUT();
;   DDRC=0XFF;
	ldi R24,255
	out 0x14,R24
	.dbline 768
;   return RDbyte;
	mov R16,R22
	.dbline -2
L189:
	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 772
; }
; 
; unsigned char  I2C_Read(unsigned char addr)  //22
; {
	.dbline 774
;   unsigned char i,k;
;   I2C_Start();
	rcall _I2C_Start
	.dbline 775
;   I2C_WriteByte(0xa0);//写 CONTRL
	ldi R16,160
	rcall _I2C_WriteByte
	.dbline 776
;   I2C_CACK();
	rcall _I2C_CACK
	.dbline 777
;   sdelay(10);
	ldi R16,10
	rcall _sdelay
	.dbline 779
;   
;   I2C_WriteByte(addr);
	mov R16,R20
	rcall _I2C_WriteByte
	.dbline 780
;   I2C_CACK();
	rcall _I2C_CACK
	.dbline 781
;   sdelay(10);
	ldi R16,10
	rcall _sdelay
	.dbline 783
;   
;   I2C_Start();
	rcall _I2C_Start
	.dbline 785
;   
;   I2C_WriteByte(0xa1);//读控制字符 CONTRL
	ldi R16,161
	rcall _I2C_WriteByte
	.dbline 786
;   I2C_CACK();
	rcall _I2C_CACK
	.dbline 787
;   sdelay(10);
	ldi R16,10
	rcall _sdelay
	.dbline 788
;   k=I2C_ReadByte();
	rcall _I2C_ReadByte
	mov R20,R16
	.dbline 789
;   I2C_NACK();
	rcall _I2C_NACK
	.dbline 790
;   I2C_Stop();
	rcall _I2C_Stop
	.dbline 791
;   return k;
	mov R16,R20
	.dbline -2
L196:
	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 795
; }
; //---写I2C
; void I2C_Write(unsigned char addr,unsigned char Wbyte) // 111
; {
	.dbline 797
;  unsigned char i,k;
;   I2C_Start();
	rcall _I2C_Start
	.dbline 798
;   I2C_WriteByte(0xa0);//写 CONTRL
	ldi R16,160
	rcall _I2C_WriteByte
	.dbline 799
;   I2C_CACK();
	rcall _I2C_CACK
	.dbline 800
;   sdelay(10);
	ldi R16,10
	rcall _sdelay
	.dbline 801
;   I2C_WriteByte(addr);
	mov R16,R22
	rcall _I2C_WriteByte
	.dbline 802
;   I2C_CACK();
	rcall _I2C_CACK
	.dbline 803
;   sdelay(10);
	ldi R16,10
	rcall _sdelay
	.dbline 804
;   I2C_WriteByte(Wbyte);
	mov R16,R20
	rcall _I2C_WriteByte
	.dbline 805
;    I2C_CACK();
	rcall _I2C_CACK
	.dbline 806
;    sdelay(10);
	ldi R16,10
	rcall _sdelay
	.dbline 807
;    I2C_Stop();
	rcall _I2C_Stop
	.dbline -2
	.dbline 809
; 
; }
L197:
	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
;            crc -> R20
;          datax -> y+2
;              j -> R22
;              i -> R10
	.even
_IC_Num_Read::
	rcall push_gset3
	sbiw R28,3
	.dbline -1
	.dbline 813
; 
; //----------- IC 卡处理-----------//
; void IC_Num_Read()
; {
	.dbline 818
; //老板,PD3=0,插卡了 ,卡座常闭合
; 		unsigned char datax;
; 		unsigned char  j,i,crc;
; 		
; 	if(PIND!=0XA3) ICRead=1;
	in R24,0x10
	cpi R24,163
	breq L199
	.dbline 818
	ldi R24,1
	sts _ICRead,R24
L199:
	.dbline 820
; 	
; 	if((PIND==0XA3)&&(ICRead>0))
	in R24,0x10
	cpi R24,163
	breq X8
	rjmp L201
X8:
	clr R2
	lds R3,_ICRead
	cp R2,R3
	brlo X9
	rjmp L201
X9:
	.dbline 821
; 	{
	.dbline 822
; 		ICRead=0;
	sts _ICRead,R2
	.dbline 823
; 	    crc=0;
	clr R20
	.dbline 824
; 		T0_Count=0;
	sts _T0_Count,R2
L203:
	.dbline 825
L204:
	.dbline 825
; 		while(T0_Count<5);// 延时等待
	lds R24,_T0_Count
	cpi R24,5
	brlo L203
	.dbline 828
; 		//IC卡:2,3,4,5,  司机号保存处
; 		//--写SendSbuf[];
; 		sdelay(200);
	ldi R16,200
	rcall _sdelay
	.dbline 829
; 		CLI();
	cli
	.dbline 830
; 		for(j=2;j<6;j++)
	ldi R22,2
	rjmp L209
L206:
	.dbline 831
	.dbline 835
	mov R24,R22
	subi R24,1
	mov R10,R24
	lsl R10
	.dbline 836
	mov R16,R22
	rcall _I2C_Read
	std y+2,R16
	.dbline 840
	ldi R16,200
	rcall _sdelay
	.dbline 841
	ldi R16,200
	rcall _sdelay
	.dbline 842
	ldi R16,200
	rcall _sdelay
	.dbline 844
	ldi R24,1
	ldi R25,0
	std y+1,R25
	std y+0,R24
	mov R18,R28
	mov R19,R29
	subi R18,254  ; offset = 2
	sbci R19,255
	mov R16,R22
	clr R17
	subi R16,250  ; offset = 6
	sbci R17,255
	rcall _EEPROMWriteBytes
	.dbline 845
	ldi R16,200
	rcall _sdelay
	.dbline 846
	ldi R16,200
	rcall _sdelay
	.dbline 847
	ldi R16,200
	rcall _sdelay
	.dbline 848
	ldi R16,200
	rcall _sdelay
	.dbline 850
	ldi R24,<_SendSbuf
	ldi R25,>_SendSbuf
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,y+2
	swap R24
	andi R24,#0x0F
	std z+0,R24
	.dbline 851
	ldi R24,<_SendSbuf
	ldi R25,>_SendSbuf
	mov R2,R10
	clr R3
	add R2,R24
	adc R3,R25
	mov R30,R2
	mov R31,R3
	ldd R24,z+0
	subi R24,208    ; addi 48
	std z+0,R24
	.dbline 853
	ldi R24,<_SendSbuf
	ldi R25,>_SendSbuf
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	eor R20,R2
	.dbline 854
	ldi R24,<_SendSbuf+1
	ldi R25,>_SendSbuf+1
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,y+2
	andi R24,15
	std z+0,R24
	.dbline 855
	ldi R24,<_SendSbuf+1
	ldi R25,>_SendSbuf+1
	mov R2,R10
	clr R3
	add R2,R24
	adc R3,R25
	mov R30,R2
	mov R31,R3
	ldd R24,z+0
	subi R24,208    ; addi 48
	std z+0,R24
	.dbline 857
	ldi R24,<_SendSbuf+1
	ldi R25,>_SendSbuf+1
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	eor R20,R2
	.dbline 859
	ldi R16,200
	rcall _sdelay
	.dbline 863
L207:
	.dbline 830
	inc R22
L209:
	.dbline 830
	cpi R22,6
	brsh X10
	rjmp L206
X10:
	.dbline 864
	mov R24,R20
	subi R24,226    ; addi 30
	sts _SendSbuf+10,R24
	.dbline 865
	clr R2
	sts _SendSbuf+11,R2
	.dbline 866
	sts _SendSbuf+12,R2
	.dbline 867
	ldi R24,84
	sts _SendSbuf,R24
	.dbline 868
	ldi R24,45
	sts _SendSbuf+1,R24
	.dbline 872
	ldi R16,200
	rcall _sdelay
	.dbline 879
	sei
	.dbline 880
L201:
	.dbline -2
	.dbline 882
; 		{
; 		  // datax=I2C_Read(j*2);
; 		 //  if((datax>47)&&(datax<60)) //是ASCII CODE
; 		   //   {//写发送
; 		   		    i=2*(j-1);
; 			   		datax=I2C_Read(j); //I2C_Write(0,0X33);
; 					
; //写eeprom-------------
; //T-32324578
; 		 sdelay(200);	
; 		  sdelay(200);	
; 		   sdelay(200);	
;   //EEPROMWriteBytes(8, &SendSbuf[8], 8);
;  EEPROMWriteBytes(j+6, &datax, 1);
;  sdelay(200);	
;   sdelay(200);	
;    sdelay(200);	
;     sdelay(200);		
;  //--------------------				
; 					SendSbuf[i]=datax>>4;
; 					SendSbuf[i]+=0x30;
; 					//--------
; 					crc^=SendSbuf[i];
; 					SendSbuf[i+1]=datax&0x0f;
; 					SendSbuf[i+1]+=0x30;
; 					//-------
; 					crc^=SendSbuf[i+1];
; 					
; 					sdelay(200);
; 					
; 			//}
; 			//else j=15;
; 		}
; 		SendSbuf[10]=crc+30;
; 		SendSbuf[11]=0;
; 		SendSbuf[12]=0;
; 		SendSbuf[0]='T';
; 		SendSbuf[1]='-';
; 		
; 	
; 	//	   EEPROMWriteBytes(9, &SendSbuf[9], 1);
; 		   sdelay(200);
; 	//	   EEPROMWriteBytes(10,&SendSbuf[10],1);
; 		
; 		
;    //END OF:if((PIND==0XA3)&&(ICRead<3))
; 		
; 		
; 		SEI();
;   }
; 
; }
L198:
	adiw R28,3
	rcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r crc 20 c
	.dbsym l datax 2 c
	.dbsym r j 22 c
	.dbsym r i 10 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\AVR\P_TEST\testAVR\TEST2.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
_CFM_flag::
	.blkb 1
	.dbsym e CFM_flag _CFM_flag c
_SET_flag::
	.blkb 1
	.dbsym e SET_flag _SET_flag c
_ICRead::
	.blkb 1
	.dbsym e ICRead _ICRead c
_TimeForSend::
	.blkb 2
	.dbsym e TimeForSend _TimeForSend i
_NowSend2::
	.blkb 2
	.dbsym e NowSend2 _NowSend2 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
_NowSbuf::
	.blkb 20
	.dbsym e NowSbuf _NowSbuf A[20:20]c
_SendSbuf::
	.blkb 20
	.dbsym e SendSbuf _SendSbuf A[20:20]c
_Sbufx::
	.blkb 1
	.dbsym e Sbufx _Sbufx c
	.area data(ram, con, rel)
	.dbfile E:\AVR\P_TEST\testAVR\TEST2.C
L41:
	.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\testAVR\TEST2.C

⌨️ 快捷键说明

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