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

📄 i2c.src

📁 单片机
💻 SRC
📖 第 1 页 / 共 2 页
字号:
; 			j = j<<1 ;
			; SOURCE LINE # 89
	MOV  	R3,A
?C0016:
; 	
; 		I2C_SCL = 0;
			; SOURCE LINE # 91
	CLR  	I2C_SCL
; 		t_lp(t_lp_n); 
			; SOURCE LINE # 92
	MOV  	R7,#02H
	MOV  	R6,#00H
	LCALL	_t_lp
; 	}
			; SOURCE LINE # 93
	INC  	R2
	CJNE 	R2,#08H,?C0012
?C0013:
; 	I2C_SDA = 1;
			; SOURCE LINE # 94
	SETB 	I2C_SDA
; 	I2C_SCL = 0;
			; SOURCE LINE # 95
	CLR  	I2C_SCL
; 	t_lp(t_lp_n);
			; SOURCE LINE # 96
	MOV  	R7,#02H
	MOV  	R6,#00H
	LCALL	_t_lp
; 	I2C_SDA = 1;
			; SOURCE LINE # 97
	SETB 	I2C_SDA
; 	t_lp(t_lp_n);
			; SOURCE LINE # 98
; 	I2C_SCL = 1;
			; SOURCE LINE # 99
; 	t_lp(t_lp_n);
			; SOURCE LINE # 100
	LCALL	L?0038
; 	I2C_SCL = 0;
			; SOURCE LINE # 101
	CLR  	I2C_SCL
; 	t_lp(t_lp_n);
			; SOURCE LINE # 102
	LCALL	_t_lp
; 	I2C_SDA = 0;
			; SOURCE LINE # 103
	CLR  	I2C_SDA
; 	t_lp(t_lp_n);
			; SOURCE LINE # 104
	LCALL	_t_lp
; 	I2C_STOP();
			; SOURCE LINE # 105
	LCALL	I2C_STOP
; 	return j;  
			; SOURCE LINE # 106
	MOV  	R7,AR3
; }
			; SOURCE LINE # 107
?C0017:
	RET  	
; END OF I2C_IN

; 
; 
; //I2C字节写函数,device_address器件级联地址,本硬件没有级联;word_address要写得字节的存储地址;I2C_DATA要向I2C内写的字节数据
; //写成功返回1,失败返回0
; UCHAR I2C_WRITE(UCHAR device_address,UCHAR word_address,UCHAR I2C_DATA)

	RSEG  ?PR?_I2C_WRITE?I2C
_I2C_WRITE:
	USING	0
			; SOURCE LINE # 112
	MOV  	device_address?647,R7
	MOV  	word_address?648,R5
	MOV  	I2C_DATA?649,R3
; {
			; SOURCE LINE # 113
; 	UCHAR i = 0;
			; SOURCE LINE # 114
;---- Variable 'i?650' assigned to Register 'R1' ----
	CLR  	A
	MOV  	R1,A
; 	device_address = ((device_address & 0x07) << 1) | 0xa0;
			; SOURCE LINE # 115
	MOV  	A,device_address?647
	ANL  	A,#07H
	MOV  	R7,A
	ADD  	A,ACC
	ORL  	A,#0A0H
	MOV  	device_address?647,A
?C0018:
; //	I2C_WP= 0;
; 	while(i<3)
			; SOURCE LINE # 117
	MOV  	A,R1
	CLR  	C
	SUBB 	A,#03H
	JNC  	?C0019
; 	{
			; SOURCE LINE # 118
; 		I2C_START();
			; SOURCE LINE # 119
	LCALL	I2C_START
; 		if (I2C_OUT(device_address) == 1) 
			; SOURCE LINE # 120
	MOV  	R7,device_address?647
	LCALL	_I2C_OUT
	JNC  	?C0020
; 		{ 
			; SOURCE LINE # 121
; 			i++;
			; SOURCE LINE # 122
	INC  	R1
; 			continue	;
			; SOURCE LINE # 123
	SJMP 	?C0018
; 		}
			; SOURCE LINE # 124
?C0020:
; 		
; 		if (I2C_OUT(word_address) == 1) 
			; SOURCE LINE # 126
	MOV  	R7,word_address?648
	LCALL	_I2C_OUT
	JNC  	?C0021
; 		{ 
			; SOURCE LINE # 127
; 			i++;
			; SOURCE LINE # 128
	INC  	R1
; 			continue	;
			; SOURCE LINE # 129
	SJMP 	?C0018
; 		}
			; SOURCE LINE # 130
?C0021:
; 		
; 		if (I2C_OUT(I2C_DATA) == 1) 
			; SOURCE LINE # 132
	MOV  	R7,I2C_DATA?649
	LCALL	_I2C_OUT
	JNC  	?C0022
; 		{ 
			; SOURCE LINE # 133
; 			i++;
			; SOURCE LINE # 134
	INC  	R1
; 			continue	;
			; SOURCE LINE # 135
	SJMP 	?C0018
; 		}
			; SOURCE LINE # 136
?C0022:
; 		else 
; 		{
			; SOURCE LINE # 138
; 			I2C_STOP();
			; SOURCE LINE # 139
	LCALL	I2C_STOP
; 			t_lp(I2C_WRITE_DELAY) ; 
			; SOURCE LINE # 140
	MOV  	R7,#0FAH
	MOV  	R6,#00H
	LCALL	_t_lp
; //			           I2C_WP= 1;    
; 			return 1;
			; SOURCE LINE # 142
	MOV  	R7,#01H
	RET  	
; 		}	 
			; SOURCE LINE # 143
; 	}
			; SOURCE LINE # 144
?C0019:
; 	return 0;
			; SOURCE LINE # 145
	MOV  	R7,#00H
; }
			; SOURCE LINE # 146
?C0024:
	RET  	
; END OF _I2C_WRITE

; 
; 
; //I2C字节读函数device_address器件级联地址,本硬件没有级联;word_address要读得字节的存储地址。
; //直接返回要读的地址值.
; UCHAR I2C_READ(UCHAR device_address,UCHAR word_address)

	RSEG  ?PR?_I2C_READ?I2C
_I2C_READ:
	USING	0
			; SOURCE LINE # 151
	MOV  	device_address?751,R7
	MOV  	word_address?752,R5
; {
			; SOURCE LINE # 152
; 	UCHAR i = 0;
			; SOURCE LINE # 153
;---- Variable 'i?753' assigned to Register 'R1' ----
	CLR  	A
	MOV  	R1,A
; 	device_address = ((device_address & 0x07) << 1) | 0xa0;
			; SOURCE LINE # 154
	MOV  	A,device_address?751
	ANL  	A,#07H
	MOV  	R7,A
	ADD  	A,ACC
	ORL  	A,#0A0H
	MOV  	device_address?751,A
?C0025:
; 	while(i<3)
			; SOURCE LINE # 155
	MOV  	A,R1
	CLR  	C
	SUBB 	A,#03H
	JNC  	?C0026
; 	{
			; SOURCE LINE # 156
; 		I2C_START();      
			; SOURCE LINE # 157
	LCALL	I2C_START
; 		if (I2C_OUT(device_address) == 1) 
			; SOURCE LINE # 158
	MOV  	R7,device_address?751
	LCALL	_I2C_OUT
	JNC  	?C0027
; 		{ 
			; SOURCE LINE # 159
; 			i++;
			; SOURCE LINE # 160
	INC  	R1
; 			continue	;
			; SOURCE LINE # 161
	SJMP 	?C0025
; 		}
			; SOURCE LINE # 162
?C0027:
; 		
; 		if(I2C_OUT(word_address) == 1)
			; SOURCE LINE # 164
	MOV  	R7,word_address?752
	LCALL	_I2C_OUT
	JNC  	?C0028
; 		{ 
			; SOURCE LINE # 165
; 			i++;
			; SOURCE LINE # 166
	INC  	R1
; 			continue ;
			; SOURCE LINE # 167
	SJMP 	?C0025
; 		}
			; SOURCE LINE # 168
?C0028:
; 	 
; 		I2C_START();      
			; SOURCE LINE # 170
	LCALL	I2C_START
; 		if (I2C_OUT(device_address | 0x01) == 1) 
			; SOURCE LINE # 171
	MOV  	A,device_address?751
	ORL  	A,#01H
	MOV  	R7,A
	LCALL	_I2C_OUT
	JNC  	?C0029
;         { 
			; SOURCE LINE # 172
; 		  i++;
			; SOURCE LINE # 173
	INC  	R1
; 		  continue	;
			; SOURCE LINE # 174
	SJMP 	?C0025
; 		}
			; SOURCE LINE # 175
?C0029:
; 
; 		return I2C_IN();		 
			; SOURCE LINE # 177
	LJMP 	I2C_IN
; 	}
			; SOURCE LINE # 178
?C0026:
; 	return 0; 
			; SOURCE LINE # 179
	MOV  	R7,#00H
; }
			; SOURCE LINE # 180
?C0030:
	RET  	
; END OF _I2C_READ

; 
; void saveConfig()

	RSEG  ?PR?saveConfig?I2C
saveConfig:
	USING	0
			; SOURCE LINE # 182
; {
			; SOURCE LINE # 183
; 	I2C_WRITE( 0, 0, scanshu.hanghead ); //起始横坐标
			; SOURCE LINE # 184
	MOV  	R3,scanshu
	CLR  	A
	MOV  	R5,A
	MOV  	R7,A
	LCALL	_I2C_WRITE
; 	I2C_WRITE( 0, 1, scanshu.liehead );  //起始纵坐标
			; SOURCE LINE # 185
	MOV  	R3,scanshu+01H
	MOV  	R5,#01H
	CLR  	A
	MOV  	R7,A
	LCALL	_I2C_WRITE
; 	I2C_WRITE( 0, 2, scanshu.wide );  //标签宽度  
			; SOURCE LINE # 186
	MOV  	R3,scanshu+02H
	MOV  	R5,#02H
	CLR  	A
	MOV  	R7,A
	LCALL	_I2C_WRITE
; 	I2C_WRITE( 0, 3, scanshu.painum ); //打印排数
			; SOURCE LINE # 187
	MOV  	R3,scanshu+03H
	MOV  	R5,#03H
	CLR  	A
	MOV  	R7,A
	LCALL	_I2C_WRITE
; 	I2C_WRITE( 0, 4, scanshu.type  );  //条码类型
			; SOURCE LINE # 188
	MOV  	R3,scanshu+04H
	MOV  	R5,#04H
	CLR  	A
	MOV  	R7,A
	LCALL	_I2C_WRITE
; 	I2C_WRITE( 0, 5, scanshu.comm ); //输出串口
			; SOURCE LINE # 189
	MOV  	R3,scanshu+05H
	MOV  	R5,#05H
	CLR  	A
	MOV  	R7,A
	LJMP 	_I2C_WRITE
; END OF saveConfig

; }
; void restoreConfig()

	RSEG  ?PR?restoreConfig?I2C
restoreConfig:
	USING	0
			; SOURCE LINE # 191
; {
			; SOURCE LINE # 192
; 	scanshu.hanghead = I2C_READ(0, 0);   //起始横坐标 
			; SOURCE LINE # 193
	CLR  	A
	MOV  	R5,A
	MOV  	R7,A
	LCALL	_I2C_READ
	MOV  	scanshu,R7
; 	scanshu.liehead = I2C_READ(0, 1);     //起始纵坐标
			; SOURCE LINE # 194
	MOV  	R5,#01H
	CLR  	A
	MOV  	R7,A
	LCALL	_I2C_READ
	MOV  	scanshu+01H,R7
; 	scanshu.wide = I2C_READ(0, 2);        //标签宽度       
			; SOURCE LINE # 195
	MOV  	R5,#02H
	CLR  	A
	MOV  	R7,A
	LCALL	_I2C_READ
	MOV  	scanshu+02H,R7
; 	scanshu.painum = I2C_READ(0, 3);    //打印排数
			; SOURCE LINE # 196
	MOV  	R5,#03H
	CLR  	A
	MOV  	R7,A
	LCALL	_I2C_READ
	MOV  	scanshu+03H,R7
; 	scanshu.type = I2C_READ(0, 4);        //条码类型
			; SOURCE LINE # 197
	MOV  	R5,#04H
	CLR  	A
	MOV  	R7,A
	LCALL	_I2C_READ
	MOV  	scanshu+04H,R7
; 	scanshu.comm = I2C_READ(0, 5);     //输出串口
			; SOURCE LINE # 198
	MOV  	R5,#05H
	CLR  	A
	MOV  	R7,A
	LCALL	_I2C_READ
	MOV  	scanshu+05H,R7
; }
			; SOURCE LINE # 199
	RET  	
; END OF restoreConfig

	END

⌨️ 快捷键说明

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