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

📄 iic.src

📁 一个完整的51单片机的操作糸统源程序! 内容十分丰富!很有借鉴价值!
💻 SRC
📖 第 1 页 / 共 2 页
字号:
			; SOURCE LINE # 146
;---- Variable 'value?648' assigned to Register 'R5' ----
;---- Variable 'SlaveAddress?647' assigned to Register 'R7' ----
; {
			; SOURCE LINE # 147
;    	StartI2c();                /*启动总线*/
			; SOURCE LINE # 148
	LCALL	StartI2c
;    	
;    	if(!SendByte(SlaveAddress + 1))           /*发送器件地址*/
			; SOURCE LINE # 150
	MOV  	A,R7
	INC  	A
	MOV  	R7,A
	LCALL	_SendByte
	JC   	?C0016
;    	{
			; SOURCE LINE # 151
;    		return(FALSE);
			; SOURCE LINE # 152
	RET  	
;    	}
			; SOURCE LINE # 153
?C0016:
;    	
;    	value = RcvByte();               /*读取数据*/
			; SOURCE LINE # 155
	LCALL	RcvByte
	MOV  	R5,AR7
;    	
;     	AckI2c(TRUE);               /*发送非就答位*/
			; SOURCE LINE # 157
	SETB 	?AckI2c?BIT
	LCALL	AckI2c
;     	
;   	StopI2c();                  /*结束总线*/ 
			; SOURCE LINE # 159
	LCALL	StopI2c
;   	
;   	return(TRUE);
			; SOURCE LINE # 161
	SETB 	C
; }
			; SOURCE LINE # 162
?C0017:
	RET  	
; END OF _iic_rcv_byte

; 
; 
; extern bool iic_send_str(byte SlaveAddress, byte address, byte *source, byte len) 

	RSEG  ?PR?_iic_send_str?IIC
_iic_send_str:
	USING	0
			; SOURCE LINE # 165
;---- Variable 'SlaveAddress?749' assigned to Register 'R7' ----
;---- Variable 'source?751' assigned to Register 'R1/R2/R3' ----
;---- Variable 'address?750' assigned to Register 'R5' ----
; {
			; SOURCE LINE # 166
;    	byte idata i;
; 
;   	StartI2c();               /*启动总线*/
			; SOURCE LINE # 169
;   	
;    	if(!SendByte(SlaveAddress))            /*发送器件地址*/
			; SOURCE LINE # 171
	LCALL	L?0050
	JC   	?C0018
;    	{
			; SOURCE LINE # 172
;     		return(FALSE);
			; SOURCE LINE # 173
	RET  	
;    	}
			; SOURCE LINE # 174
?C0018:
;    	
;    	if(!SendByte(address))            /*发送器件子地址*/
			; SOURCE LINE # 176
	MOV  	R7,AR5
	LCALL	_SendByte
	JC   	?C0020
;    	{
			; SOURCE LINE # 177
;    		return(FALSE);
			; SOURCE LINE # 178
	RET  	
;    	}
			; SOURCE LINE # 179
?C0020:
;    	
;    	for(i = 0; i < len; i++)
			; SOURCE LINE # 181
	CLR  	A
	MOV  	R0,#LOW (i?753)
	MOV  	@R0,A
?C0021:
	MOV  	DPTR,#len?752
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	R0,#LOW (i?753)
	MOV  	A,@R0
	CLR  	C
	SUBB 	A,R7
	JNC  	?C0022
;     	{   
			; SOURCE LINE # 182
;      		if(!SendByte(*source))               /*发送数据*/
			; SOURCE LINE # 183
	LCALL	?C?CLDPTR
	MOV  	R7,A
	LCALL	_SendByte
	JC   	?C0024
;      		{
			; SOURCE LINE # 184
;      			return(FALSE);
			; SOURCE LINE # 185
	RET  	
;      		}
			; SOURCE LINE # 186
?C0024:
;      		source++;
			; SOURCE LINE # 187
	MOV  	A,#01H
	ADD  	A,R1
	MOV  	R1,A
	CLR  	A
	ADDC 	A,R2
	MOV  	R2,A
;     	} 
			; SOURCE LINE # 188
	MOV  	R0,#LOW (i?753)
	INC  	@R0
	SJMP 	?C0021
?C0022:
;  	StopI2c();                 /*结束总线*/ 
			; SOURCE LINE # 189
	LCALL	StopI2c
;  	
;   	return(TRUE);
			; SOURCE LINE # 191
	SETB 	C
; }
			; SOURCE LINE # 192
?C0019:
	RET  	
; END OF _iic_send_str

; 
; 
; 
; extern bool iic_rcv_str(byte SlaveAddress, byte address, byte *source, byte len)

	RSEG  ?PR?_iic_rcv_str?IIC
_iic_rcv_str:
	USING	0
			; SOURCE LINE # 196
;---- Variable 'SlaveAddress?854' assigned to Register 'R4' ----
	MOV  	R4,AR7
;---- Variable 'source?856' assigned to Register 'R1/R2/R3' ----
;---- Variable 'address?855' assigned to Register 'R5' ----
; {
			; SOURCE LINE # 197
;    	byte idata i;
; 
;    	StartI2c();               /*启动总线*/
			; SOURCE LINE # 200
	LCALL	StartI2c
;    	
;    	if(!SendByte(SlaveAddress))           /*发送器件地址*/
			; SOURCE LINE # 202
	LCALL	_SendByte
	JC   	?C0025
;    	{
			; SOURCE LINE # 203
;    		return(FALSE);
			; SOURCE LINE # 204
	RET  	
;    	}
			; SOURCE LINE # 205
?C0025:
;    	
;    	if(!SendByte(address))            /*发送器件子地址*/
			; SOURCE LINE # 207
	MOV  	R7,AR5
	LCALL	_SendByte
	JC   	?C0027
;    	{
			; SOURCE LINE # 208
;    		return(FALSE);
			; SOURCE LINE # 209
	RET  	
;    	}
			; SOURCE LINE # 210
?C0027:
;    	
;    	StartI2c();
			; SOURCE LINE # 212
	LCALL	StartI2c
;    	
;    	if(!SendByte(SlaveAddress+1))
			; SOURCE LINE # 214
	MOV  	A,R4
	INC  	A
	MOV  	R7,A
	LCALL	_SendByte
	JC   	?C0028
;    	{
			; SOURCE LINE # 215
;    		return(FALSE);
			; SOURCE LINE # 216
	RET  	
;    	}
			; SOURCE LINE # 217
?C0028:
;    	
;    	for(i = 0; i < len - 1; i++)
			; SOURCE LINE # 219
	CLR  	A
	MOV  	R0,#LOW (i?858)
	MOV  	@R0,A
?C0029:
	MOV  	DPTR,#len?857
	MOVX 	A,@DPTR
	DEC  	A
	MOV  	R7,A
	MOV  	R0,#LOW (i?858)
	MOV  	A,@R0
	CLR  	C
	SUBB 	A,R7
	JNC  	?C0030
;     	{   
			; SOURCE LINE # 220
;      		*source = RcvByte();               /*接收数据*/
			; SOURCE LINE # 221
	LCALL	RcvByte
;       		AckI2c(FALSE);                /*发送就答位*/  
			; SOURCE LINE # 222
	LCALL	L?0051
;      		source++;
			; SOURCE LINE # 223
	MOV  	A,#01H
	ADD  	A,R1
	MOV  	R1,A
	CLR  	A
	ADDC 	A,R2
	MOV  	R2,A
;     	} 
			; SOURCE LINE # 224
	MOV  	R0,#LOW (i?858)
	INC  	@R0
	SJMP 	?C0029
?C0030:
;    	
;    	*source = RcvByte();
			; SOURCE LINE # 226
	LCALL	RcvByte
	MOV  	A,R7
	LCALL	?C?CSTPTR
;    	
;     	AckI2c(TRUE);                 /*发送非应位*/
			; SOURCE LINE # 228
	SETB 	?AckI2c?BIT
	LCALL	AckI2c
;     	
;  	StopI2c();                    /*结束总线*/ 
			; SOURCE LINE # 230
	LCALL	StopI2c
;  	
;   	return(TRUE);
			; SOURCE LINE # 232
	SETB 	C
; }
			; SOURCE LINE # 233
?C0026:
	RET  	
; END OF _iic_rcv_str

; 
; 
; extern bool iiv_send_long_str(byte SlaveAddress, word address, byte *source, byte len)

	RSEG  ?PR?_iiv_send_long_str?IIC
_iiv_send_long_str:
	USING	0
			; SOURCE LINE # 236
;---- Variable 'SlaveAddress?959' assigned to Register 'R7' ----
;---- Variable 'source?961' assigned to Register 'R1/R2/R3' ----
;---- Variable 'address?960' assigned to Register 'R4/R5' ----
; {
			; SOURCE LINE # 237
;    	byte idata i;
; 
;   	StartI2c();               /*启动总线*/
			; SOURCE LINE # 240
	LCALL	StartI2c
;   	
;    	if(!SendByte(SlaveAddress))            /*发送器件地址*/
			; SOURCE LINE # 242
	LCALL	_SendByte
	JC   	?C0032
;    	{
			; SOURCE LINE # 243
;     		return(FALSE);
			; SOURCE LINE # 244
	RET  	
;    	}
			; SOURCE LINE # 245
?C0032:
; 
;       	if(!SendByte(HBYTE(address)))            /*发送器件地址*/
			; SOURCE LINE # 247
	MOV  	A,R4
	MOV  	R7,A
	LCALL	_SendByte
	JC   	?C0034
;    	{
			; SOURCE LINE # 248
;     		return(FALSE);
			; SOURCE LINE # 249
	RET  	
;    	}
			; SOURCE LINE # 250
?C0034:
;       	
;    	if(!SendByte(LBYTE(address)))            /*发送器件子地址*/
			; SOURCE LINE # 252
	MOV  	R7,AR5
	LCALL	_SendByte
	JC   	?C0035
;    	{
			; SOURCE LINE # 253
;    		return(FALSE);
			; SOURCE LINE # 254
	RET  	
;    	}
			; SOURCE LINE # 255
?C0035:
;    	
;    	for(i = 0; i < len; i++)
			; SOURCE LINE # 257
	CLR  	A
	MOV  	R0,#LOW (i?963)
	MOV  	@R0,A
?C0036:
	MOV  	DPTR,#len?962
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	R0,#LOW (i?963)
	MOV  	A,@R0
	CLR  	C
	SUBB 	A,R7
	JNC  	?C0037
;     	{   
			; SOURCE LINE # 258
;      		if(!SendByte(*source))               /*发送数据*/
			; SOURCE LINE # 259
	LCALL	?C?CLDPTR
	MOV  	R7,A
	LCALL	_SendByte
	JC   	?C0039
;      		{
			; SOURCE LINE # 260
;      			return(FALSE);
			; SOURCE LINE # 261
	RET  	
;      		}
			; SOURCE LINE # 262
?C0039:
;      		source++;
			; SOURCE LINE # 263
	MOV  	A,#01H
	ADD  	A,R1
	MOV  	R1,A
	CLR  	A
	ADDC 	A,R2
	MOV  	R2,A
;     	} 
			; SOURCE LINE # 264
	MOV  	R0,#LOW (i?963)
	INC  	@R0
	SJMP 	?C0036
?C0037:
;  	StopI2c();                 /*结束总线*/ 
			; SOURCE LINE # 265
	LCALL	StopI2c
;  	
;   	return(TRUE);
			; SOURCE LINE # 267
	SETB 	C
; }
			; SOURCE LINE # 268
?C0033:
	RET  	
; END OF _iiv_send_long_str

; 
; 
; extern bool iic_rcv_long_str(byte SlaveAddress, word address, byte *source, byte len)

	RSEG  ?PR?_iic_rcv_long_str?IIC
_iic_rcv_long_str:
	USING	0
			; SOURCE LINE # 271
	MOV  	DPTR,#SlaveAddress?1064
	MOV  	A,R7
	MOVX 	@DPTR,A
;---- Variable 'source?1066' assigned to Register 'R1/R2/R3' ----
;---- Variable 'address?1065' assigned to Register 'R4/R5' ----
; {
			; SOURCE LINE # 272
;    	byte idata i;
; 
;    	StartI2c();               /*启动总线*/
			; SOURCE LINE # 275
	LCALL	StartI2c
;    	
;    	if(!SendByte(SlaveAddress))           /*发送器件地址*/
			; SOURCE LINE # 277
	MOVX 	A,@DPTR
	MOV  	R7,A
	LCALL	_SendByte
	JC   	?C0040
;    	{
			; SOURCE LINE # 278
;    		return(FALSE);
			; SOURCE LINE # 279
	RET  	
;    	}
			; SOURCE LINE # 280
?C0040:
;    	
;    	if(!SendByte(HBYTE(address)))            /*发送器件子地址*/
			; SOURCE LINE # 282
	MOV  	A,R4
	MOV  	R7,A
	LCALL	_SendByte
	JC   	?C0042
;    	{
			; SOURCE LINE # 283
;    		return(FALSE);
			; SOURCE LINE # 284
	RET  	
;    	}
			; SOURCE LINE # 285
?C0042:
;    	
;    	if(!SendByte(LBYTE(address)))            /*发送器件子地址*/
			; SOURCE LINE # 287
	MOV  	R7,AR5
	LCALL	_SendByte
	JC   	?C0043
;    	{
			; SOURCE LINE # 288
;    		return(FALSE);
			; SOURCE LINE # 289
	RET  	
;    	}
			; SOURCE LINE # 290
?C0043:
;    	
;    	StartI2c();
			; SOURCE LINE # 292
	LCALL	StartI2c
;    	
;    	if(!SendByte(SlaveAddress+1))
			; SOURCE LINE # 294
	MOV  	DPTR,#SlaveAddress?1064
	MOVX 	A,@DPTR
	INC  	A
	MOV  	R7,A
	LCALL	_SendByte
	JC   	?C0044
;    	{
			; SOURCE LINE # 295
;    		return(FALSE);
			; SOURCE LINE # 296
	RET  	
;    	}
			; SOURCE LINE # 297
?C0044:
;    	
;    	for(i = 0; i < len - 1; i++)
			; SOURCE LINE # 299
	CLR  	A
	MOV  	R0,#LOW (i?1068)
	MOV  	@R0,A
?C0045:
	MOV  	DPTR,#len?1067
	MOVX 	A,@DPTR
	DEC  	A
	MOV  	R7,A
	MOV  	R0,#LOW (i?1068)
	MOV  	A,@R0
	CLR  	C
	SUBB 	A,R7
	JNC  	?C0046
;     	{   
			; SOURCE LINE # 300
;      		*source = RcvByte();               /*发送数据*/
			; SOURCE LINE # 301
	LCALL	RcvByte
;       		AckI2c(FALSE);                /*发送就答位*/  
			; SOURCE LINE # 302
	LCALL	L?0051
;      		source++;
			; SOURCE LINE # 303
	MOV  	A,#01H
	ADD  	A,R1
	MOV  	R1,A
	CLR  	A
	ADDC 	A,R2
	MOV  	R2,A
;     	} 
			; SOURCE LINE # 304
	MOV  	R0,#LOW (i?1068)
	INC  	@R0
	SJMP 	?C0045
?C0046:
;    	
;    	*source = RcvByte();
			; SOURCE LINE # 306
	LCALL	RcvByte
	MOV  	A,R7
	LCALL	?C?CSTPTR
;    	
;     	AckI2c(TRUE);                 /*发送非应位*/
			; SOURCE LINE # 308
	SETB 	?AckI2c?BIT
	LCALL	AckI2c
;     	
;  	StopI2c();                    /*结束总线*/ 
			; SOURCE LINE # 310
	LCALL	StopI2c
;  	
;   	return(TRUE);
			; SOURCE LINE # 312
	SETB 	C
; }
			; SOURCE LINE # 313
?C0041:
	RET  	
; END OF _iic_rcv_long_str

	END

⌨️ 快捷键说明

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