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

📄 iic_avr.lst

📁 串口转发IIC程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
 812               	.L35:
 233:IIC_AVR.c     **** 	case TW_MR_DATA_NACK:
 234:IIC_AVR.c     **** 		IIC_STOP;
 814               	.LM94:
 815 04c2 8091 5600 		lds r24,86
 816 04c6 8569      		ori r24,lo8(-107)
 817 04c8 8093 5600 		sts 86,r24
 818 04cc 1092 0000 		sts ucIICTimeoutCount,__zero_reg__
 235:IIC_AVR.c     **** //		sbi(TWCR,TWEA);		//Set TWEA to enable ACK
 236:IIC_AVR.c     **** 		if(IIC_Buffer_In.ucReadP==IIC_Buffer_In.ucWriteP)
 820               	.LM95:
 821 04d0 9091 0000 		lds r25,IIC_Buffer_In+17
 822 04d4 8091 0000 		lds r24,IIC_Buffer_In+16
 823 04d8 9817      		cp r25,r24
 824 04da 41F4      		brne .L36
 237:IIC_AVR.c     **** 		{	//Data receive success
 238:IIC_AVR.c     **** 			//Enable user program get command from IIC recieve buffer
 239:IIC_AVR.c     **** 			IIC_Buffer_In.ucIICBufferStatus.bEnAccess=1;
 826               	.LM96:
 827 04dc 8091 0000 		lds r24,IIC_Buffer_In+19
 828 04e0 8160      		ori r24,lo8(1)
 829 04e2 8093 0000 		sts IIC_Buffer_In+19,r24
 240:IIC_AVR.c     **** 			ucIICError=IIC_ERROR_NOERROR;
 831               	.LM97:
 832 04e6 1092 0000 		sts ucIICError,__zero_reg__
 833 04ea 03C0      		rjmp .L37
 834               	.L36:
 241:IIC_AVR.c     **** 		}
 242:IIC_AVR.c     **** 		else
 243:IIC_AVR.c     **** 		{
 244:IIC_AVR.c     **** 			ucIICError=IIC_ERROR_NOT_ACK_DATA;
 836               	.LM98:
 837 04ec 82E8      		ldi r24,lo8(-126)
 838 04ee 8093 0000 		sts ucIICError,r24
 839               	.L37:
 245:IIC_AVR.c     **** 		}
 246:IIC_AVR.c     **** 		IIC_Buffer_In.ucWriteP=0;
 841               	.LM99:
 842 04f2 1092 0000 		sts IIC_Buffer_In+16,__zero_reg__
 247:IIC_AVR.c     **** 		ucIICMode=IIC_MODE_SLAVE_RECEIVE;
 844               	.LM100:
 845 04f6 81E0      		ldi r24,lo8(1)
 846 04f8 8093 0000 		sts ucIICMode,r24
 248:IIC_AVR.c     **** 		break;
 848               	.LM101:
 849 04fc 32C0      		rjmp .L5
 850               	.L38:
 249:IIC_AVR.c     **** 
 250:IIC_AVR.c     **** 	//Same as TW_MT_ARB_LOST
 251:IIC_AVR.c     **** //	case TW_MR_ARB_LOST:
 252:IIC_AVR.c     **** //		ucIICMode=IIC_MODE_SLAVE_RECEIVE;
 253:IIC_AVR.c     **** //		ucIICError=IIC_ERROR_ARBITRATION_LOST;
 254:IIC_AVR.c     **** //		IIC_Buffer_In.ucReadP=0;
 255:IIC_AVR.c     **** //		IIC_Buffer_In.ucWriteP=0;
 256:IIC_AVR.c     **** //		break;
 257:IIC_AVR.c     **** 
 258:IIC_AVR.c     **** 
 259:IIC_AVR.c     **** ///////////////////////////////////////////
 260:IIC_AVR.c     **** //		Slave Transmit Mode
 261:IIC_AVR.c     **** ///////////////////////////////////////////
 262:IIC_AVR.c     **** 	case TW_ST_SLA_ACK:
 263:IIC_AVR.c     **** 		ucIICMode=IIC_MODE_SLAVE_TRANSMIT;
 852               	.LM102:
 853 04fe 1092 0000 		sts ucIICMode,__zero_reg__
 264:IIC_AVR.c     **** 		TWCR=(_BV(TWEN)|_BV(TWINT)|_BV(TWEA)|_BV(TWIE));
 855               	.LM103:
 856 0502 85EC      		ldi r24,lo8(-59)
 857 0504 8093 5600 		sts 86,r24
 858               	.L39:
 265:IIC_AVR.c     **** 	case TW_ST_DATA_ACK:
 266:IIC_AVR.c     **** 		if(IIC_Buffer_Out.ucReadP!=IIC_Buffer_Out.ucWriteP)
 860               	.LM104:
 861 0508 9091 0000 		lds r25,IIC_Buffer_Out+17
 862 050c 8091 0000 		lds r24,IIC_Buffer_Out+16
 863 0510 9817      		cp r25,r24
 864 0512 A1F0      		breq .L43
 267:IIC_AVR.c     **** 		{	// Data transmit not finish
 268:IIC_AVR.c     **** 			IIC_BUFFER_TO_BUS;
 866               	.LM105:
 867 0514 A0E0      		ldi r26,lo8(IIC_Buffer_Out+17)
 868 0516 B0E0      		ldi r27,hi8(IIC_Buffer_Out+17)
 869 0518 2C91      		ld r18,X
 870 051a 822F      		mov r24,r18
 871 051c 9927      		clr r25
 872 051e FC01      		movw r30,r24
 873 0520 E050      		subi r30,lo8(-(IIC_Buffer_Out))
 874 0522 F040      		sbci r31,hi8(-(IIC_Buffer_Out))
 875 0524 2F5F      		subi r18,lo8(-(1))
 876 0526 2C93      		st X,r18
 877 0528 8081      		ld r24,Z
 878 052a 8093 2300 		sts 35,r24
 879 052e 8FEF      		ldi r24,lo8(-1)
 880 0530 8093 0000 		sts ucIICTimeoutCount,r24
 269:IIC_AVR.c     **** 			TWCR=(_BV(TWEN)|_BV(TWINT)|_BV(TWEA)|_BV(TWIE));
 882               	.LM106:
 883 0534 85EC      		ldi r24,lo8(-59)
 884 0536 8093 5600 		sts 86,r24
 270:IIC_AVR.c     **** 			break;
 886               	.LM107:
 887 053a 13C0      		rjmp .L5
 888               	.L43:
 271:IIC_AVR.c     **** 		}
 272:IIC_AVR.c     **** 		// Buffer Empty!!
 273:IIC_AVR.c     **** 	case TW_ST_ARB_LOST_SLA_ACK:
 274:IIC_AVR.c     **** 	case TW_ST_DATA_NACK:
 275:IIC_AVR.c     **** 	case TW_ST_LAST_DATA:
 276:IIC_AVR.c     **** 		//Transfer complet
 277:IIC_AVR.c     **** 		IIC_Buffer_Out.ucIICBufferStatus.bEnAccess=1;
 890               	.LM108:
 891 053c 8091 0000 		lds r24,IIC_Buffer_Out+19
 892 0540 8160      		ori r24,lo8(1)
 893 0542 8093 0000 		sts IIC_Buffer_Out+19,r24
 278:IIC_AVR.c     **** 		IIC_Buffer_Out.ucReadP=0;
 895               	.LM109:
 896 0546 1092 0000 		sts IIC_Buffer_Out+17,__zero_reg__
 279:IIC_AVR.c     **** 		IIC_Buffer_Out.ucWriteP=0;
 898               	.LM110:
 899 054a 1092 0000 		sts IIC_Buffer_Out+16,__zero_reg__
 280:IIC_AVR.c     **** 		ucIICMode=IIC_MODE_SLAVE_RECEIVE;
 901               	.LM111:
 902 054e 81E0      		ldi r24,lo8(1)
 903 0550 8093 0000 		sts ucIICMode,r24
 281:IIC_AVR.c     **** 		TWCR=(_BV(TWEN)|_BV(TWINT)|_BV(TWEA)|_BV(TWIE));
 905               	.LM112:
 906 0554 85EC      		ldi r24,lo8(-59)
 907 0556 8093 5600 		sts 86,r24
 282:IIC_AVR.c     **** 		break;
 909               	.LM113:
 910 055a 03C0      		rjmp .L5
 911               	.L46:
 283:IIC_AVR.c     **** 
 284:IIC_AVR.c     **** 	case TW_BUS_ERROR:
 285:IIC_AVR.c     **** 	case TW_NO_INFO:
 286:IIC_AVR.c     **** 	default:
 287:IIC_AVR.c     **** 		TWCR=(_BV(TWEN)|_BV(TWINT)|_BV(TWEA)|_BV(TWIE));
 913               	.LM114:
 914 055c 85EC      		ldi r24,lo8(-59)
 915 055e 8093 5600 		sts 86,r24
 916               	.L5:
 917               	/* epilogue: frame size=3 */
 918 0562 2396      		adiw r28,3
 919 0564 F894      		cli
 920 0566 DEBF      		out __SP_H__,r29
 921 0568 CDBF      		out __SP_L__,r28
 922 056a DF91      		pop r29
 923 056c CF91      		pop r28
 924 056e FF91      		pop r31
 925 0570 EF91      		pop r30
 926 0572 BF91      		pop r27
 927 0574 AF91      		pop r26
 928 0576 9F91      		pop r25
 929 0578 8F91      		pop r24
 930 057a 3F91      		pop r19
 931 057c 2F91      		pop r18
 932 057e 0F90      		pop __tmp_reg__
 933 0580 0FBE      		out __SREG__,__tmp_reg__
 934 0582 0F90      		pop __tmp_reg__
 935 0584 1F90      		pop __zero_reg__
 936 0586 1895      		reti
 937               	/* epilogue end (size=19) */
 938               	/* function __vector_17 size 610 (571) */
 946               	.global	I2C_Send
 948               	I2C_Send:
 288:IIC_AVR.c     **** 		break;
 289:IIC_AVR.c     **** 		
 290:IIC_AVR.c     **** 		
 291:IIC_AVR.c     **** 	}
 292:IIC_AVR.c     **** //	TWCR |= _BV(TWINT);		//Write 1 to Clear TWINT 
 293:IIC_AVR.c     **** }
 294:IIC_AVR.c     **** 
 295:IIC_AVR.c     **** 
 296:IIC_AVR.c     **** ///////////////////////////////////////////
 297:IIC_AVR.c     **** //U8 I2C_Send(U8  I2C_Addr,  U8*  I2C_MsgData , U8  MsgDataLen, U8 s_Timeout )
 298:IIC_AVR.c     **** //其中U8 为 unsigned char。
 299:IIC_AVR.c     **** //参数说明:
 300:IIC_AVR.c     **** //I2C_Addr:发送的目标地址,每个板卡都应该有唯一的I2C通讯地址。
 301:IIC_AVR.c     **** //I2C_MsgData:存放消息数据的缓冲区。
 302:IIC_AVR.c     **** //Msg_DataLen:发送消息的数据长度。
 303:IIC_AVR.c     **** //S_Timeout:发送消息超时的时间,单位为毫秒(ms)。
 304:IIC_AVR.c     **** //返回值:是否发送成功,0:成功;~0:错误代码 
 305:IIC_AVR.c     **** ///////////////////////////////////////////
 306:IIC_AVR.c     **** U8 I2C_Send(U8 I2C_Addr,U8 * I2C_MsgData,U8 MsgDataLen,U8 s_Timeout)
 307:IIC_AVR.c     **** {
 950               	.LM115:
 951               	/* prologue: frame size=5 */
 952 0588 CF93      		push r28
 953 058a DF93      		push r29
 954 058c CDB7      		in r28,__SP_L__
 955 058e DEB7      		in r29,__SP_H__
 956 0590 2597      		sbiw r28,5
 957 0592 0FB6      		in __tmp_reg__,__SREG__
 958 0594 F894      		cli
 959 0596 DEBF      		out __SP_H__,r29
 960 0598 0FBE      		out __SREG__,__tmp_reg__
 961 059a CDBF      		out __SP_L__,r28
 962               	/* prologue end (size=10) */
 963 059c 8983      		std Y+1,r24
 964 059e 6A83      		std Y+2,r22
 965 05a0 7B83      		std Y+3,r23
 966 05a2 4C83      		std Y+4,r20
 967 05a4 2D83      		std Y+5,r18
 308:IIC_AVR.c     **** 	return 0;
 969               	.LM116:
 970 05a6 80E0      		ldi r24,lo8(0)
 971 05a8 90E0      		ldi r25,hi8(0)
 972               	/* epilogue: frame size=5 */
 973 05aa 2596      		adiw r28,5
 974 05ac 0FB6      		in __tmp_reg__,__SREG__
 975 05ae F894      		cli
 976 05b0 DEBF      		out __SP_H__,r29
 977 05b2 0FBE      		out __SREG__,__tmp_reg__
 978 05b4 CDBF      		out __SP_L__,r28
 979 05b6 DF91      		pop r29
 980 05b8 CF91      		pop r28
 981 05ba 0895      		ret
 982               	/* epilogue end (size=9) */
 983               	/* function I2C_Send size 26 (7) */
 989               	.global	I2C_Rcvd
 991               	I2C_Rcvd:
 309:IIC_AVR.c     **** }
 310:IIC_AVR.c     **** 
 311:IIC_AVR.c     **** ///////////////////////////////////////////
 312:IIC_AVR.c     **** //U8 I2C_Rcvd(U8 *  I2C_MsgData ,U8 * MsgDataLen ,U8 r_Timeout)
 313:IIC_AVR.c     **** //I2C_MsgData:接收消息数据的缓冲区。
 314:IIC_AVR.c     **** //Msg_DataLen:接收消息的数据长度。
 315:IIC_AVR.c     **** //r_Timeout:接收消息超时的时间,单位为毫秒(ms)。
 316:IIC_AVR.c     **** //返回值:是否接收成功,0:成功;~0:错误代码
 317:IIC_AVR.c     **** ///////////////////////////////////////////
 318:IIC_AVR.c     **** I8 I2C_Rcvd(U8 * I2C_MsgData,U8 * MsgDataLen,U8 r_Timeout)
 319:IIC_AVR.c     **** {
 993               	.LM117:
 994               	/* prologue: frame size=5 */
 995 05bc CF93      		push r28
 996 05be DF93      		push r29
 997 05c0 CDB7      		in r28,__SP_L__
 998 05c2 DEB7      		in r29,__SP_H__
 999 05c4 2597      		sbiw r28,5
 1000 05c6 0FB6      		in __tmp_reg__,__SREG__
 1001 05c8 F894      		cli
 1002 05ca DEBF      		out __SP_H__,r29
 1003 05cc 0FBE      		out __SREG__,__tmp_reg__
 1004 05ce CDBF      		out __SP_L__,r28
 1005               	/* prologue end (size=10) */
 1006 05d0 8983      		std Y+1,r24
 1007 05d2 9A83      		std Y+2,r25
 1008 05d4 6B83      		std Y+3,r22
 1009 05d6 7C83      		std Y+4,r23
 1010 05d8 4D83      		std Y+5,r20
 320:IIC_AVR.c     **** 	return 0;
 1012               	.LM118:
 1013 05da 80E0      		ldi r24,lo8(0)
 1014 05dc 90E0      		ldi r25,hi8(0)
 1015               	/* epilogue: frame size=5 */
 1016 05de 2596      		adiw r28,5
 1017 05e0 0FB6      		in __tmp_reg__,__SREG__
 1018 05e2 F894      		cli
 1019 05e4 DEBF      		out __SP_H__,r29
 1020 05e6 0FBE      		out __SREG__,__tmp_reg__
 1021 05e8 CDBF      		out __SP_L__,r28
 1022 05ea DF91      		pop r29
 1023 05ec CF91      		pop r28
 1024 05ee 0895      		ret
 1025               	/* epilogue end (size=9) */
 1026               	/* function I2C_Rcvd size 26 (7) */
 1028               		.comm IIC_Buffer_In,20,1
 1029               		.comm IIC_Buffer_Out,20,1
 1030               		.comm ucIICTimeoutCount,1,1
 1031               		.comm ucIICMode,1,1
 1032               		.comm ucIICError,1,1
 1033               		.comm ucIICAddress,1,1
 1041               		.text
 1043               	Letext:
 1044               	/* File "IIC_AVR.c": code  760 = 0x02f8 ( 664), prologues  50, epilogues  46 */
DEFINED SYMBOLS
                            *ABS*:00000000 IIC_AVR.c
                            *ABS*:0000003f __SREG__
                            *ABS*:0000003e __SP_H__
                            *ABS*:0000003d __SP_L__
                            *ABS*:00000000 __tmp_reg__
                            *ABS*:00000001 __zero_reg__
C:\DOCUME~1\Guobg\LOCALS~1\Temp/ccgPaaaa.s:59     .data:00000000 IIC_BaudrateConfig
C:\DOCUME~1\Guobg\LOCALS~1\Temp/ccgPaaaa.s:70     .text:00000000 IIC_Init
                            *COM*:00000001 ucIICMode
                            *COM*:00000001 ucIICError
                            *COM*:00000014 IIC_Buffer_In
                            *COM*:00000014 IIC_Buffer_Out
C:\DOCUME~1\Guobg\LOCALS~1\Temp/ccgPaaaa.s:203    .text:000000c4 __vector_17
                            *COM*:00000001 ucIICTimeoutCount
C:\DOCUME~1\Guobg\LOCALS~1\Temp/ccgPaaaa.s:948    .text:00000588 I2C_Send
C:\DOCUME~1\Guobg\LOCALS~1\Temp/ccgPaaaa.s:991    .text:000005bc I2C_Rcvd
                            *COM*:00000001 ucIICAddress
C:\DOCUME~1\Guobg\LOCALS~1\Temp/ccgPaaaa.s:1043   .text:000005f0 Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss

⌨️ 快捷键说明

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