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

📄 busio.src

📁 采用台湾MRT晶捷公司的MRT4方案的液晶电视的程序
💻 SRC
📖 第 1 页 / 共 5 页
字号:
; 	if(NoAck | BusFault) goto buserror;
			; SOURCE LINE # 904
	MOV  	C,BusFault
	ORL  	C,NoAck
	JC   	?_eepByteOut?endi2c
?C0064:
; 
; 	/* Send index */
; 	SendI2CByte((unsigned char)index);
			; SOURCE LINE # 907
	MOV  	R7,index?974+01H
	LCALL	_SendI2CByte
; 	if(NoAck) goto buserror;
			; SOURCE LINE # 908
	JB   	NoAck,?_eepByteOut?endi2c
?C0066:
; 
; 	/* data transmit */
; 	SendI2CByte(val);
			; SOURCE LINE # 911
	MOV  	R7,val?975
	LCALL	_SendI2CByte
;     //miscDelay(20);
; 
;     goto endi2c;
			; SOURCE LINE # 914
; 
; buserror:	
			; SOURCE LINE # 916
; #if DEBUGMSG
;    printf("BUS error (eepByteOut) !!!!\n");
; #endif   
; 
; endi2c:
			; SOURCE LINE # 921
?_eepByteOut?endi2c:
; 	SendI2CStop();
			; SOURCE LINE # 922
	LCALL	SendI2CStop
;     miscDelay(15);
			; SOURCE LINE # 923
	MOV  	R7,#0FH
	MOV  	R6,#00H
	LCALL	_miscDelay
;     
;     WPPin = 1;
			; SOURCE LINE # 925
	SETB 	WPPin
;     
; #if DISABLEINT0
; 	/* restove interrupt 0 flag */
; 	EX0 =	IntFlag;
			; SOURCE LINE # 929
	MOV  	C,IntFlag?977
	MOV  	EX0,C
; #endif    
; }
			; SOURCE LINE # 931
	RET  	
; END OF _eepByteOut

; 
; unsigned char eepByteIn(unsigned int index)

	RSEG  ?PR?_eepByteIn?BUSIO
	USING	0
_eepByteIn:
	MOV  	index?1078,R6
	MOV  	index?1078+01H,R7
			; SOURCE LINE # 933
; {
			; SOURCE LINE # 934
;    unsigned char bval;
;    unsigned char slv;
; 
;    if(index < 256)
			; SOURCE LINE # 938
	CLR  	C
	MOV  	A,index?1078
	SUBB 	A,#01H
	JNC  	?C0069
;       slv = SLAVEADDR_EEPW0;
			; SOURCE LINE # 939
	MOV  	slv?1080,#0A0H
	SJMP 	?C0070
?C0069:
;    else
;    if(index < 512) {
			; SOURCE LINE # 941
	CLR  	C
	MOV  	A,index?1078
	SUBB 	A,#02H
	JNC  	?C0071
;       slv = SLAVEADDR_EEPW1;
			; SOURCE LINE # 942
	MOV  	slv?1080,#0A2H
;       index -= 256;
			; SOURCE LINE # 943
	CLR  	A
	ADD  	A,index?1078+01H
	MOV  	index?1078+01H,A
	MOV  	A,#0FFH
	ADDC 	A,index?1078
	MOV  	index?1078,A
;    } else
			; SOURCE LINE # 944
	SJMP 	?C0070
?C0071:
;    if(index < 768) {
			; SOURCE LINE # 945
	CLR  	C
	MOV  	A,index?1078
	SUBB 	A,#03H
	JNC  	?C0073
;       slv = SLAVEADDR_EEPW2;
			; SOURCE LINE # 946
	MOV  	slv?1080,#0A4H
;       index -= 512;
			; SOURCE LINE # 947
	CLR  	A
	ADD  	A,index?1078+01H
	MOV  	index?1078+01H,A
	MOV  	A,#0FEH
	ADDC 	A,index?1078
	MOV  	index?1078,A
;    } else {
			; SOURCE LINE # 948
	SJMP 	?C0070
?C0073:
;       slv = SLAVEADDR_EEPW3;
			; SOURCE LINE # 949
	MOV  	slv?1080,#0A6H
;       index -= 768;
			; SOURCE LINE # 950
	CLR  	A
	ADD  	A,index?1078+01H
	MOV  	index?1078+01H,A
	MOV  	A,#0FDH
	ADDC 	A,index?1078
	MOV  	index?1078,A
;    }
			; SOURCE LINE # 951
?C0070:
; 
; 	/* I2C Start and send WRITE slave address */
;  	GoI2CMaster(slv);
			; SOURCE LINE # 954
	MOV  	R7,slv?1080
	LCALL	_GoI2CMaster
; 	if(NoAck | BusFault) goto buserror;
			; SOURCE LINE # 955
	MOV  	C,BusFault
	ORL  	C,NoAck
	JC   	?_eepByteIn?endi2c
?C0075:
; 
; 	/* Send index */
; 	SendI2CByte((unsigned char) index);
			; SOURCE LINE # 958
	MOV  	R7,index?1078+01H
	LCALL	_SendI2CByte
; 	if(NoAck) goto buserror;
			; SOURCE LINE # 959
	JB   	NoAck,?_eepByteIn?endi2c
?C0077:
; 
; 	/* I2C Start and send READ slave address */
;  	GoI2CMaster(slv | 0x01);
			; SOURCE LINE # 962
	MOV  	A,slv?1080
	ORL  	A,#01H
	MOV  	R7,A
	LCALL	_GoI2CMaster
; 	if(NoAck) goto buserror;
			; SOURCE LINE # 963
	JB   	NoAck,?_eepByteIn?endi2c
?C0078:
; 
; 	/* data transmit */
; 	bval = RcvI2CByte(1);
			; SOURCE LINE # 966
	MOV  	R7,#01H
	LCALL	_RcvI2CByte
	MOV  	bval?1079,R7
; 
;     goto endi2c;
			; SOURCE LINE # 968
; 
; buserror:	
			; SOURCE LINE # 970
; #if DEBUGMSG
;    printf("BUS error (eepByteIn) !!!!\n");
; #endif   
; 
; endi2c:
			; SOURCE LINE # 975
?_eepByteIn?endi2c:
; 	/* Finish trasmition */
; 	SendI2CStop();
			; SOURCE LINE # 977
	LCALL	SendI2CStop
; 
; 	return(bval);
			; SOURCE LINE # 979
	MOV  	R7,bval?1079
; }
			; SOURCE LINE # 980
?C0080:
	RET  	
; END OF _eepByteIn

; 
; /**********************************************
; * Receive bytes of data from Standard device  *
; ***********************************************/
; void eepDataIn(unsigned int index, unsigned char *s, int cnt)

	RSEG  ?PR?_eepDataIn?BUSIO
	USING	0
_eepDataIn:
	MOV  	index?1181,R6
	MOV  	index?1181+01H,R7
	MOV  	s?1182,R3
	MOV  	s?1182+01H,R2
	MOV  	s?1182+02H,R1
			; SOURCE LINE # 985
; {
			; SOURCE LINE # 986
; 	int data byteCnt;
;    unsigned char slv;
; 
;    if(index < 256)
			; SOURCE LINE # 990
	CLR  	C
	MOV  	A,index?1181
	SUBB 	A,#01H
	JNC  	?C0081
;       slv = SLAVEADDR_EEPW0;
			; SOURCE LINE # 991
	MOV  	slv?1185,#0A0H
	SJMP 	?C0082
?C0081:
;    else
;    if(index < 512) {
			; SOURCE LINE # 993
	CLR  	C
	MOV  	A,index?1181
	SUBB 	A,#02H
	JNC  	?C0083
;       slv = SLAVEADDR_EEPW1;
			; SOURCE LINE # 994
	MOV  	slv?1185,#0A2H
;       index -= 256;
			; SOURCE LINE # 995
	CLR  	A
	ADD  	A,index?1181+01H
	MOV  	index?1181+01H,A
	MOV  	A,#0FFH
	ADDC 	A,index?1181
	MOV  	index?1181,A
;    } else
			; SOURCE LINE # 996
	SJMP 	?C0082
?C0083:
;    if(index < 768) {
			; SOURCE LINE # 997
	CLR  	C
	MOV  	A,index?1181
	SUBB 	A,#03H
	JNC  	?C0085
;       slv = SLAVEADDR_EEPW2;
			; SOURCE LINE # 998
	MOV  	slv?1185,#0A4H
;       index -= 512;
			; SOURCE LINE # 999
	CLR  	A
	ADD  	A,index?1181+01H
	MOV  	index?1181+01H,A
	MOV  	A,#0FEH
	ADDC 	A,index?1181
	MOV  	index?1181,A
;    } else {
			; SOURCE LINE # 1000
	SJMP 	?C0082
?C0085:
;       slv = SLAVEADDR_EEPW3;
			; SOURCE LINE # 1001
	MOV  	slv?1185,#0A6H
;       index -= 768;
			; SOURCE LINE # 1002
	CLR  	A
	ADD  	A,index?1181+01H
	MOV  	index?1181+01H,A
	MOV  	A,#0FDH
	ADDC 	A,index?1181
	MOV  	index?1181,A
;    }
			; SOURCE LINE # 1003
?C0082:
; 
; 	/* I2C Start and send WRITE slave address */
;  	GoI2CMaster(slv);
			; SOURCE LINE # 1006
	MOV  	R7,slv?1185
	LCALL	_GoI2CMaster
; 	if(NoAck | BusFault) goto buserror;
			; SOURCE LINE # 1007
	MOV  	C,BusFault
	ORL  	C,NoAck
	JC   	?_eepDataIn?endi2c
?C0087:
; 
; 	/* Send index */
; 	SendI2CByte((unsigned char) index);
			; SOURCE LINE # 1010
	MOV  	R7,index?1181+01H
	LCALL	_SendI2CByte
; 	if(NoAck) goto buserror;
			; SOURCE LINE # 1011
	JB   	NoAck,?_eepDataIn?endi2c
?C0089:
; 
; 	/* I2C Start and send READ slave address */
;  	GoI2CMaster(slv | 0x01);
			; SOURCE LINE # 1014
	MOV  	A,slv?1185
	ORL  	A,#01H
	MOV  	R7,A
	LCALL	_GoI2CMaster
; 	if(NoAck) goto buserror;
			; SOURCE LINE # 1015
	JB   	NoAck,?_eepDataIn?endi2c
?C0090:
; 
; 	/* data transmit */
; 	for(byteCnt = cnt; byteCnt > 0; byteCnt--) {
			; SOURCE LINE # 1018
	MOV  	byteCnt?1184,cnt?1183
	MOV  	byteCnt?1184+01H,cnt?1183+01H
?C0091:
	SETB 	C
	MOV  	A,byteCnt?1184+01H
	SUBB 	A,#00H
	MOV  	A,byteCnt?1184
	XRL  	A,#080H
	SUBB 	A,#080H
	JC   	?_eepDataIn?endi2c
; 		*s++ = RcvI2CByte(byteCnt);
			; SOURCE LINE # 1019
	MOV  	R7,byteCnt?1184+01H
	LCALL	_RcvI2CByte
	MOV  	R0,#s?1182
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?PLDIIDATA
	MOV  	A,R7
	LCALL	?C?CSTPTR
; 	}
			; SOURCE LINE # 1020
	MOV  	A,byteCnt?1184+01H
	DEC  	byteCnt?1184+01H
	JNZ  	?C0122
	DEC  	byteCnt?1184
?C0122:
	SJMP 	?C0091
;     goto endi2c;
			; SOURCE LINE # 1021
; 
; buserror:	
			; SOURCE LINE # 1023
; #if DEBUGMSG
;    printf("BUS error (eepDataIn) !!!!\n");
; #endif   
; 
; endi2c:
			; SOURCE LINE # 1028
?_eepDataIn?endi2c:
; 	/* Finish trasmition */
; 	SendI2CStop();
			; SOURCE LINE # 1030
	LCALL	SendI2CStop
; }
			; SOURCE LINE # 1031
	RET  	
; END OF _eepDataIn

; 
; /*********************************************
; * Send bytes of data to standard device      *
; **********************************************/
; void eepDataOut(unsigned int index, unsigned char *s, int cnt)

	RSEG  ?PR?_eepDataOut?BUSIO
	USING	0
_eepDataOut:
	MOV  	index?1286,R6
	MOV  	index?1286+01H,R7
	MOV  	s?1287,R3
	MOV  	s?1287+01H,R2
	MOV  	s?1287+02H,R1
			; SOURCE LINE # 1036
; {
			; SOURCE LINE # 1037
; 	
; 	
; #if 1 //fast out
; 
;     int data byteCnt = cnt;
			; SOURCE LINE # 1042
	MOV  	byteCnt?1289,cnt?1288
	MOV  	byteCnt?1289+01H,cnt?1288+01H
;     unsigned char data slv,i;
; 
; #if DISABLEINT0
; 	bit IntFlag;
; 
; 	/* disable interrupt 0 */
; 	IntFlag = EX0;
			; SOURCE LINE # 1049
	MOV  	C,EX0
	MOV  	IntFlag?1292,C
; 	EX0 = 0;
			; SOURCE LINE # 1050
	CLR  	EX0
; #endif
; 
; 	WPPin = 0;
			; SOURCE LINE # 1053
	CLR  	WPPin
; 
; 
;    if(index < 256)
			; SOURCE LINE # 1056
	CLR  	C
	MOV  	A,index?1286
	SUBB 	A,#01H
	JNC  	?C0096
;    {
			; SOURCE LINE # 1057
;       slv = SLAVEADDR_EEPW0;
			; SOURCE LINE # 1058
	MOV  	slv?1290,#0A0H
;    }   
			; SOURCE LINE # 1059
	SJMP 	?C0102
?C0096:
;    else if(index < 512)
			; SOURCE LINE # 1060
	CLR  	C
	MOV  	A,index?1286
	SUBB 	A,#02H
	JNC  	?C0098
;    {
			; SOURCE LINE # 1061
;       slv = SLAVEADDR_EEPW1;
			; SOURCE LINE # 1062
	MOV  	slv?1290,#0A2H
;      index -= 256;
			; SOURCE LINE # 1063
	CLR  	A
	ADD  	A,index?1286+01H
	MOV  	index?1286+01H,A
	MOV  	A,#0FFH
	ADDC 	A,index?1286
	MOV  	index?1286,A
;    }
			; SOURCE LINE # 1064
	SJMP 	?C0102
?C0098:
;    else if(index < 768)
			; SOURCE LINE # 1065
	CLR  	C
	MOV  	A,index?1286
	SUBB 	A,#03H
	JNC  	?C0100
;    {
			; SOURCE LINE # 1066
;       slv = SLAVEADDR_EEPW2;
			; SOURCE LINE # 1067
	MOV  	slv?1290,#0A4H
;       index -= 512;
			; SOURCE LINE # 1068
	CLR  	A
	ADD  	A,index?1286+01H
	MOV  	index?1286+01H,A
	MOV  	A,#0FEH
	ADDC 	A,index?1286
	MOV  	index?1286,A
;    }
			; SOURCE LINE # 1069
	SJMP 	?C0102
?C0100:
;    else
;    {
			; SOURCE LINE # 1071
;       slv = SLAVEADDR_EEPW3;
			; SOURCE LINE # 1072
	MOV  	slv?1290,#0A6H
;       index -= 768;
			; SOURCE LINE # 1073
	CLR  	A
	ADD  	A,index?1286+01H
	MOV  	index?1286+01H,A
	MOV  	A,#0FDH
	ADDC 	A,index?1286
	MOV  	index?1286,A
;    }
			; SOURCE LINE # 1074
?C0102:
; 
;    while(1)
			; SOURCE LINE # 1076
;    {
			; SOURCE LINE # 1077
;         // Slave addr
;         GoI2CMaster(slv);
			; SOURCE LINE # 1079
	MOV  	R7,slv?1290
	LCALL	_GoI2CMaster
;         if(NoAck | BusFault)   goto buserror;
			; SOURCE LINE # 1080
	MOV  	C,BusFault
	ORL  	C,NoAck
	JC   	?_eepDataOut?endi2c
?C0104:
; 
;         // Start addr
;         SendI2CByte(index);
			; SOURCE LINE # 1083
	MOV  	R7,index?1286+01H
	LCALL	_SendI2CByte
;         if(NoAck)   goto buserror;
			; SOURCE LINE # 1084
	JB   	NoAck,?_eepDataOut?endi2c
?C0106:
; 
;         // Send Data
;         for (i = 0; i < 8; i++)
			; SOURCE LINE # 1087
	CLR  	A
	MOV  	i?1291,A
?C0107:
;         {
			; SOURCE LINE # 1088
;               SendI2CByte(*s++);
			; SOURCE LINE # 1089
	MOV  	R0,#s?1287
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?PLDIIDATA
	LCALL	?C?CLDPTR
	MOV  	R7,A
	LCALL	_SendI2CByte
;          
;               if(NoAck)           goto buserror;
			; SOURCE LINE # 1091
	JB   	NoAck,?_eepDataOut?endi2c
?C0110:
; 
;               if(--byteCnt == 0)  goto endi2c;
			; SOURCE LINE # 1093
	MOV  	A,byteCnt?1289+01H
	DEC  	byteCnt?1289+01H
	JNZ  	?C0123
	DEC  	byteCnt?1289
?C0123:
	DEC  	A
	ORL  	A,byteCnt?1289
	JZ   	?_eepDataOut?endi2c
?C0111:
;               
;               index++;
			; SOURCE LINE # 1095
	INC  	index?1286+01H
	MOV  	A,index?1286+01H
	JNZ  	?C0124
	INC  	index?1286
?C0124:
;               if((index % 16 )== 0)
			; SOURCE LINE # 1096
	MOV  	A,index?1286+01H
	ANL  	A,#0FH
	JNZ  	?C0109
;               {
			; SOURCE LINE # 1097
;               	if(index == 256)
			; SOURCE LINE # 1098
	MOV  	A,index?1286+01H
	JNZ  	?C0125
	MOV  	A,index?1286
	XRL  	A,#01H
?C0125:
	JNZ  	?C0108
;               	{
			; SOURCE LINE # 1099
;               		index = 0;
			; SOURCE LINE # 1100
	MOV  	index?1286,A
	MOV  	index?1286+01H,A

⌨️ 快捷键说明

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