📄 busio.src
字号:
; 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 + -