📄 busio.src
字号:
;
; /* Send command */
; SendI2CByte(WRITE_BYTE);
; SOURCE LINE # 463
CLR A
MOV R7,A
LCALL _SendI2CByte
; if(NoAck) goto buserror;
; SOURCE LINE # 464
JB NoAck,?_PortDataOut?endi2c
?C0046:
;
; /* Send C1 */
; SendI2CByte(0xC1);
; SOURCE LINE # 467
MOV R7,#0C1H
LCALL _SendI2CByte
; if(NoAck) goto buserror;
; SOURCE LINE # 468
JB NoAck,?_PortDataOut?endi2c
?C0047:
;
; SendI2CByte(index);
; SOURCE LINE # 470
MOV R7,index?868
LCALL _SendI2CByte
; if(NoAck) goto buserror;
; SOURCE LINE # 471
JB NoAck,?_PortDataOut?endi2c
?C0048:
;
; SendI2CStop();
; SOURCE LINE # 473
LCALL SendI2CStop
; /* ------------- Finish C1 -------------- */
;
; /* ---- I2C Start and send slave address for C2 ---- */
; GoI2CMaster(SLAVEADDR_REGW);
; SOURCE LINE # 477
MOV R7,#030H
LCALL _GoI2CMaster
; if(NoAck | BusFault) goto buserror;
; SOURCE LINE # 478
MOV C,BusFault
ORL C,NoAck
JC ?_PortDataOut?endi2c
?C0049:
;
; /* Send command */
; SendI2CByte(WRITE_AUTOINC);
; SOURCE LINE # 481
MOV R7,#040H
LCALL _SendI2CByte
; if(NoAck) goto buserror;
; SOURCE LINE # 482
JB NoAck,?_PortDataOut?endi2c
?C0050:
;
; /* Send C2 */
; SendI2CByte(0xC2);
; SOURCE LINE # 485
MOV R7,#0C2H
LCALL _SendI2CByte
; if(NoAck) goto buserror;
; SOURCE LINE # 486
JB NoAck,?_PortDataOut?endi2c
?C0051:
;
; /* data transmit */
; for(byteCnt = cnt; byteCnt > 0; byteCnt--) {
; SOURCE LINE # 489
MOV byteCnt?872,cnt?871
MOV byteCnt?872+01H,cnt?871+01H
?C0052:
SETB C
MOV A,byteCnt?872+01H
SUBB A,#00H
MOV A,byteCnt?872
XRL A,#080H
SUBB A,#080H
JC ?_PortDataOut?endi2c
; SendI2CByte(*s++);
; SOURCE LINE # 490
MOV R0,#s?870
CLR A
MOV B,#01H
LCALL ?C?PLDIIDATA
LCALL ?C?CLDPTR
MOV R7,A
LCALL _SendI2CByte
; if(NoAck) goto buserror;
; SOURCE LINE # 491
JB NoAck,?_PortDataOut?endi2c
; }
; SOURCE LINE # 492
?C0054:
MOV A,byteCnt?872+01H
DEC byteCnt?872+01H
JNZ ?C0121
DEC byteCnt?872
?C0121:
SJMP ?C0052
; goto endi2c;
; SOURCE LINE # 493
;
; /* ------------- Finish C2 -------------- */
; buserror:
; SOURCE LINE # 496
; #if DEBUGMSG
; printf("BUS error (PortDataOut) !!!!\n");
; #endif
;
; endi2c:
; SOURCE LINE # 501
?_PortDataOut?endi2c:
; SendI2CStop();
; SOURCE LINE # 502
LCALL SendI2CStop
; #endif
;
; #if USE_SPIBUS
; /* ------------- Phace C0 -------------- */
; /* Start SPI and set to WRITE mode */
; SPIStart(SPI_WRITE);
; if(BusFault) goto buserror;
;
; /* Send command */
; SendSPIByte(WRITE_BYTE);
;
; /* Send C0 */
; SendSPIByte(0xC0);
;
; /* Send the contest of C0 */
; SendSPIByte(c0);
;
; /* Stop SPI bus temperally */
; SPIStop();
; /* ------------- Finish C0 -------------- */
;
; /* ------------- Phace C1 -------------- */
; /* Start SPI and Set to WRITE mode */
; SPIStart(SPI_WRITE);
; if(BusFault) goto buserror;
;
; /* Send command */
; SendSPIByte(WRITE_BYTE);
;
; /* Send C1 */
; SendSPIByte(0xC1);
;
; /* Send index */
; SendSPIByte(index);
;
; /* Stop SPI bus temperally */
; SPIStop();
; /* ------------- Finish C1 -------------- */
;
; /* ------------- Phace C2 -------------- */
; /* Start SPI and Set to WRITE mode */
; SPIStart(SPI_WRITE);
; if(BusFault) goto buserror;
;
; /* Send command */
; SendSPIByte(WRITE_AUTOINC);
;
; /* Send C2 */
; SendSPIByte(0xC2);
;
; /* data transmit */
; for(byteCnt = cnt; byteCnt > 0; byteCnt--) {
; SendSPIByte(*s++);
; }
; /* ------------- Finish C2 -------------- */
;
; buserror:
; /* Finish transmition */
; SPIStop();
; #endif
;
; #if USE_PARALBUS
; /* ---- Send data for C0 ---- */
; /* Send command */
; PARALPORT = WRITE_BYTE;
;
; /* Send C0 */
; PARALPORT = 0xC0;
;
; /* Send the contest of C0 */
; PARALPORT = c0;
; /* ------ Finish C0 ------- */
;
; /* ---- Send data for C1 ---- */
; /* Send command */
; PARALPORT = WRITE_BYTE;
;
; /* Send C1 */
; PARAPORT = 0xC1;
;
; PARALPORT = index;
; /* ------ Finish C1 --------- */
;
; /* ---- Send data for C2 ---- */
; /* Send command */
; PARALPORT = WRITE_AUTOINC;
;
; /* Send C2 */
; PARALPORT = 0xC2;
;
; /* data transmit */
; for(byteCnt = cnt; byteCnt > 0; byteCnt--) {
; PARALPORT = *s++;
; }
; /* ------- Finish C2 -------- */
; #endif
;
; #if DISABLEINT0
; /* restove interrupt 0 flag */
; EX0 = IntFlag;
; SOURCE LINE # 602
MOV C,IntFlag?873
MOV EX0,C
; #endif
; }
; SOURCE LINE # 604
RET
; END OF _PortDataOut
;
;
; #if 0 //(DEBUGMSG == 0)
; /*********************************************
; * Receive bytes of data to an MOSAIC device *
; **********************************************/
; void PortDataIn(unsigned char index, unsigned char c0, unsigned char *s, int cnt)
; {
; int data byteCnt;
;
; #if DISABLEINT0
; bit IntFlag;
;
; /* disable interrupt 0 */
; IntFlag = EX0;
; EX0 = 0;
; #endif
;
; #if USE_I2CBUS
; /* ---- I2C Start and send slave address for C0 ---- */
; GoI2CMaster(SLAVEADDR_REGW);
; if(NoAck | BusFault) goto buserror;
;
; /* Send command */
; SendI2CByte(WRITE_BYTE);
; if(NoAck) goto buserror;
;
; /* Send C0 */
; SendI2CByte(0xC0);
; if(NoAck) goto buserror;
;
; /* Send the contest of C0 */
; SendI2CByte(c0);
; if(NoAck) goto buserror;
;
; SendI2CStop();
; /* ------------- Finish C0 -------------- */
;
; /* ---- I2C Start and send slave address for C1 ---- */
; GoI2CMaster(SLAVEADDR_REGW);
; if(NoAck | BusFault) goto buserror;
;
; /* Send command */
; SendI2CByte(WRITE_BYTE);
; if(NoAck) goto buserror;
;
; /* Send C1 */
; SendI2CByte(0xC1);
; if(NoAck) goto buserror;
;
; SendI2CByte(index);
; if(NoAck) goto buserror;
;
; SendI2CStop();
; /* ------------- Finish C1 -------------- */
;
; /* ---- I2C Start and send slave address for C2 ---- */
; GoI2CMaster(SLAVEADDR_REGW);
; if(NoAck | BusFault) goto buserror;
;
; /* Send command */
; SendI2CByte(READ_AUTOINC);
; if(NoAck) goto buserror;
;
; /* Send C2 */
; SendI2CByte(0xC2);
; if(NoAck) goto buserror;
;
; /* I2C Start and send slave address */
; GoI2CMaster(SLAVEADDR_REGR);
; if (NoAck | BusFault) goto buserror;
;
; /* data transmit */
; for(byteCnt = cnt; byteCnt > 0; byteCnt--) {
; *s++ = RcvI2CByte(byteCnt);
; }
;
; goto endi2c;
;
; /* ------------- Finish C2 -------------- */
; buserror:
; #if DEBUGMSG
; printf("BUS error (PortDataOut) !!!!\n");
; #endif
;
; endi2c:
; SendI2CStop();
; #endif
;
;
;
;
; #if DISABLEINT0
; /* restove interrupt 0 flag */
; EX0 = IntFlag;
; #endif
; }
;
; #endif
;
;
; #if 0
; void PortByteOut(unsigned char index, unsigned char c0, unsigned char s)
; {
; int data byteCnt;
;
; #if DISABLEINT0
; bit IntFlag;
;
; /* disable interrupt 0 */
; IntFlag = EX0;
; EX0 = 0;
; #endif
;
; #if USE_I2CBUS
; /* ---- I2C Start and send slave address for C0 ---- */
; GoI2CMaster(SLAVEADDR_REGW);
; if(NoAck | BusFault) goto buserror;
;
; /* Send command */
; SendI2CByte(WRITE_BYTE);
; if(NoAck) goto buserror;
;
; /* Send C0 */
; SendI2CByte(0xC0);
; if(NoAck) goto buserror;
;
; /* Send the contest of C0 */
; SendI2CByte(c0);
; if(NoAck) goto buserror;
;
; SendI2CStop();
; /* ------------- Finish C0 -------------- */
;
; /* ---- I2C Start and send slave address for C1 ---- */
; GoI2CMaster(SLAVEADDR_REGW);
; if(NoAck | BusFault) goto buserror;
;
; /* Send command */
; SendI2CByte(WRITE_BYTE);
; if(NoAck) goto buserror;
;
; /* Send C1 */
; SendI2CByte(0xC1);
; if(NoAck) goto buserror;
;
; SendI2CByte(index);
; if(NoAck) goto buserror;
;
; SendI2CStop();
; /* ------------- Finish C1 -------------- */
;
; /* ---- I2C Start and send slave address for C2 ---- */
; GoI2CMaster(SLAVEADDR_REGW);
; if(NoAck | BusFault) goto buserror;
;
; /* Send command */
; SendI2CByte(WRITE_BYTE);
; if(NoAck) goto buserror;
;
; /* Send C2 */
; SendI2CByte(0xC2);
; if(NoAck) goto buserror;
;
; /* data transmit */
; SendI2CByte(s);
; if(NoAck) goto buserror;
; goto endi2c;
;
; /* ------------- Finish C2 -------------- */
; buserror:
; #if DEBUGMSG
; printf("BUS error (PortByteOut) !!!!\n");
; #endif
;
; endi2c:
; SendI2CStop();
; #endif
;
; #if DISABLEINT0
; /* restove interrupt 0 flag */
; EX0 = IntFlag;
; #endif
; }
; #endif
;
; #if 0
; /**********************************************
; * Receive one byte from Standard device *
; ***********************************************/
; unsigned char BusByteIn(unsigned char slv, unsigned char index)
; {
; unsigned char bval;
;
; /* I2C Start and send WRITE slave address */
; GoI2CMaster(slv);
; if(NoAck | BusFault) goto buserror;
;
; /* Send index */
; SendI2CByte(index);
; if(NoAck) goto buserror;
;
; /* I2C Start and send READ slave address */
; GoI2CMaster(slv | 0x01);
; if(NoAck) goto buserror;
;
; /* data transmit */
; bval = RcvI2CByte(1);
;
; buserror:
; /* Finish trasmition */
; SendI2CStop();
;
; return(bval);
; }
;
; /*********************************************
; * Send bytes of data to standard device *
; **********************************************/
; void BusByteOut(unsigned char slv, unsigned char index, unsigned char val)
; {
; /* I2C Start and send WRITE slave address */
; GoI2CMaster(slv);
; if(NoAck | BusFault) goto buserror;
;
; /* Send index */
; SendI2CByte(index);
; if(NoAck) goto buserror;
;
; /* data transmit */
; SendI2CByte(val);
;
; buserror:
; SendI2CStop();
; }
;
; /**********************************************
; * Receive bytes of data from Standard device *
; ***********************************************/
; void BusDataIn(unsigned char slv, unsigned char index, unsigned char *s, int cnt)
; {
; int data byteCnt;
;
; /* I2C Start and send WRITE slave address */
; GoI2CMaster(slv);
; if(NoAck | BusFault) goto buserror;
;
; /* Send index */
; SendI2CByte(index);
; if(NoAck) goto buserror;
;
; /* I2C Start and send READ slave address */
; GoI2CMaster(slv | 0x01);
; if(NoAck) goto buserror;
;
; /* data transmit */
; for(byteCnt = cnt; byteCnt > 0; byteCnt--) {
; *s++ = RcvI2CByte(byteCnt);
; }
;
; buserror:
; /* Finish trasmition */
; SendI2CStop();
; }
; #endif
;
; /*********************************************
; * Send bytes of data to standard device *
; **********************************************/
; void eepByteOut(unsigned int index, unsigned char val)
RSEG ?PR?_eepByteOut?BUSIO
USING 0
_eepByteOut:
MOV index?974,R6
MOV index?974+01H,R7
MOV val?975,R5
; SOURCE LINE # 874
; {
; SOURCE LINE # 875
; unsigned char slv;
;
; #if DISABLEINT0
; bit IntFlag;
;
; /* disable interrupt 0 */
; IntFlag = EX0;
; SOURCE LINE # 882
MOV C,EX0
MOV IntFlag?977,C
; EX0 = 0;
; SOURCE LINE # 883
CLR EX0
; #endif
;
; WPPin = 0;
; SOURCE LINE # 886
CLR WPPin
;
; if(index < 256)
; SOURCE LINE # 888
CLR C
MOV A,index?974
SUBB A,#01H
JNC ?C0058
; slv = SLAVEADDR_EEPW0;
; SOURCE LINE # 889
MOV slv?976,#0A0H
SJMP ?C0059
?C0058:
; else
; if(index < 512) {
; SOURCE LINE # 891
CLR C
MOV A,index?974
SUBB A,#02H
JNC ?C0060
; slv = SLAVEADDR_EEPW1;
; SOURCE LINE # 892
MOV slv?976,#0A2H
; index -= 256;
; SOURCE LINE # 893
CLR A
ADD A,index?974+01H
MOV index?974+01H,A
MOV A,#0FFH
ADDC A,index?974
MOV index?974,A
; } else
; SOURCE LINE # 894
SJMP ?C0059
?C0060:
; if(index < 768) {
; SOURCE LINE # 895
CLR C
MOV A,index?974
SUBB A,#03H
JNC ?C0062
; slv = SLAVEADDR_EEPW2;
; SOURCE LINE # 896
MOV slv?976,#0A4H
; index -= 512;
; SOURCE LINE # 897
CLR A
ADD A,index?974+01H
MOV index?974+01H,A
MOV A,#0FEH
ADDC A,index?974
MOV index?974,A
; } else {
; SOURCE LINE # 898
SJMP ?C0059
?C0062:
; slv = SLAVEADDR_EEPW3;
; SOURCE LINE # 899
MOV slv?976,#0A6H
; index -= 768;
; SOURCE LINE # 900
CLR A
ADD A,index?974+01H
MOV index?974+01H,A
MOV A,#0FDH
ADDC A,index?974
MOV index?974,A
; }
; SOURCE LINE # 901
?C0059:
; /* I2C Start and send WRITE slave address */
; GoI2CMaster(slv);
; SOURCE LINE # 903
MOV R7,slv?976
LCALL _GoI2CMaster
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -