📄 bus.src
字号:
; .\BUS.SRC generated from: BUS.C
$NOMOD51
NAME BUS
P0 DATA 080H
P1 DATA 090H
P2 DATA 0A0H
P3 DATA 0B0H
PSW DATA 0D0H
ACC DATA 0E0H
B DATA 0F0H
SP DATA 081H
DPL DATA 082H
DPH DATA 083H
PCON DATA 087H
TCON DATA 088H
TMOD DATA 089H
TL0 DATA 08AH
TL1 DATA 08BH
TH0 DATA 08CH
TH1 DATA 08DH
IE DATA 0A8H
IP DATA 0B8H
SCON DATA 098H
SBUF DATA 099H
CY BIT 0D0H.7
AC BIT 0D0H.6
F0 BIT 0D0H.5
RS1 BIT 0D0H.4
RS0 BIT 0D0H.3
OV BIT 0D0H.2
P BIT 0D0H.0
TF1 BIT 088H.7
TR1 BIT 088H.6
TF0 BIT 088H.5
TR0 BIT 088H.4
IE1 BIT 088H.3
IT1 BIT 088H.2
IE0 BIT 088H.1
IT0 BIT 088H.0
EA BIT 0A8H.7
ES BIT 0A8H.4
ET1 BIT 0A8H.3
EX1 BIT 0A8H.2
ET0 BIT 0A8H.1
EX0 BIT 0A8H.0
PS BIT 0B8H.4
PT1 BIT 0B8H.3
PX1 BIT 0B8H.2
PT0 BIT 0B8H.1
PX0 BIT 0B8H.0
RD BIT 0B0H.7
WR BIT 0B0H.6
T1 BIT 0B0H.5
T0 BIT 0B0H.4
INT1 BIT 0B0H.3
INT0 BIT 0B0H.2
TXD BIT 0B0H.1
RXD BIT 0B0H.0
SM0 BIT 098H.7
SM1 BIT 098H.6
SM2 BIT 098H.5
REN BIT 098H.4
TB8 BIT 098H.3
RB8 BIT 098H.2
TI BIT 098H.1
RI BIT 098H.0
SDAPin BIT 0A0H.7
SCLPin BIT 0A0H.6
WPPin BIT 0A0H.4
ResetPin BIT 0A0H.0
BrightnessPin BIT 0B0H.5
VGA_CON_PIN BIT 0A0H.5
LED_O_Pin BIT 080H.0
LED_G_Pin BIT 080H.1
PANEL_VCC_PIN BIT 0A0H.2
PANEL_BKL_PIN BIT 0A0H.3
AUDIO_MUTE_PIN BIT 080H.4
AUDIO_STBY_PIN BIT 080H.6
POWER_BUT_PIN BIT 090H.3
LEFT_BUT_PIN BIT 090H.1
RIGHT_BUT_PIN BIT 090H.2
MENU_BUT_PIN BIT 090H.4
AUTO_BUT_PIN BIT 090H.0
SHUTTLE_Pin BIT 0B0H.5
?PR?_GoI2CMaster?BUS SEGMENT CODE
?PR?_SendI2CByte?BUS SEGMENT CODE
?PR?_RcvI2CByte?BUS SEGMENT CODE
?PR?SendI2CStop?BUS SEGMENT CODE
EXTRN BIT (NoAck)
EXTRN BIT (BusFault)
EXTRN BIT (BusBusy)
PUBLIC SendI2CStop
PUBLIC _RcvI2CByte
PUBLIC _SendI2CByte
PUBLIC _GoI2CMaster
; /************************************************
; * *
; * BUS.C: BUS control routines. *
; * *
; *************************************************/
; #include <reg51.h>
; #include <intrins.h>
; #include "mascot.h"
; #include "OSD.h"
; #include "global.h"
;
;
;
; #define USE_ASM 1
;
; /*******************************************************************
; * Send SCL pin high and wait for any clock stretching peripherals *
; ********************************************************************/
; #define SCLHigh() { SCLPin = 1; while(!SCLPin); }
; #define SCLHigh2() { SCLPin2 = 1; while(!SCLPin2); }
;
;
;
; /********************************************************
; * Grasp the I2C bus, send slave address and command *
; *********************************************************/
; void GoI2CMaster(unsigned char adr)
RSEG ?PR?_GoI2CMaster?BUS
_GoI2CMaster:
USING 0
; SOURCE LINE # 27
;---- Variable 'adr?040' assigned to Register 'R7' ----
; {
; SOURCE LINE # 28
;
; BusBusy = 1;
; SOURCE LINE # 30
SETB BusBusy
;
; if (!SCLPin) SCLHigh();
; SOURCE LINE # 32
JB SCLPin,?C0001
SETB SCLPin
?C0002:
JNB SCLPin,?C0002
?C0001:
;
; NoAck = 0;
; SOURCE LINE # 34
CLR NoAck
; BusFault = 0;
; SOURCE LINE # 35
CLR BusFault
;
; if (SCLPin & SDAPin) {
; SOURCE LINE # 37
MOV C,SDAPin
ANL C,SCLPin
JNC ?C0004
; SDAPin = 0;
; SOURCE LINE # 38
CLR SDAPin
; _nop_();
; SOURCE LINE # 39
NOP
; SCLPin = 0;
; SOURCE LINE # 40
CLR SCLPin
; _nop_();
; SOURCE LINE # 41
NOP
; SendI2CByte(adr);
; SOURCE LINE # 42
LCALL _SendI2CByte
; } else
; SOURCE LINE # 43
RET
?C0004:
; BusFault = 1;
; SOURCE LINE # 44
SETB BusFault
; }
; SOURCE LINE # 45
?C0006:
RET
; END OF _GoI2CMaster
;
;
;
;
; /*********************************************
; * Send one byte of data to an I2C device *
; **********************************************/
; void SendI2CByte(unsigned char val)
RSEG ?PR?_SendI2CByte?BUS
_SendI2CByte:
; SOURCE LINE # 53
;---- Variable 'val?141' assigned to Register 'R7' ----
; {
; SOURCE LINE # 54
;
; #if USE_ASM
;
; ACC = val;
; SOURCE LINE # 58
MOV A,R7
; #pragma asm
;
; MOV R7,#8
MOV R7,#8
;
; SendByte1:
SendByte1:
; RLC A
RLC A
; MOV SDAPin,C
MOV SDAPin,C
; NOP
NOP
; SETB SCLPin
SETB SCLPin
; JNB SCLPin,$
JNB SCLPin,$
; NOP
NOP
; CLR SCLPin
CLR SCLPin
; DJNZ R7,SendByte1
DJNZ R7,SendByte1
;
; SETB SDAPin
SETB SDAPin
; NOP
NOP
; SETB SCLPin
SETB SCLPin
; JNB SCLPin,$
JNB SCLPin,$
; JNB SDAPin,SendByte2
JNB SDAPin,SendByte2
; SETB NoAck
SETB NoAck
;
; SendByte2:
SendByte2:
; CLR SCLPin
CLR SCLPin
;
; #pragma endasm
;
; #else
; unsigned char bmsk = 0x80;
;
; while (bmsk) {
; SDAPin = (val & bmsk) ? 0x01 : 0x00;
; SCLHigh();
; bmsk >>= 1;
; SCLPin = 0;
; }
;
;
; SDAPin = 1;
; SCLHigh();
;
; if (SDAPin) NoAck = 1;
;
; SCLPin = 0;
;
; #endif
;
; }
; SOURCE LINE # 105
RET
; END OF _SendI2CByte
;
;
;
; /*********************************************
; * Receive byte of data from an I2C device *
; **********************************************/
; unsigned char RcvI2CByte(unsigned char cnt)
RSEG ?PR?_RcvI2CByte?BUS
_RcvI2CByte:
USING 0
; SOURCE LINE # 112
;---- Variable 'cnt?242' assigned to Register 'R7' ----
; {
; SOURCE LINE # 113
; #if USE_ASM
;
; B = cnt;
; SOURCE LINE # 116
MOV B,R7
; #pragma asm
;
; MOV R7,#8
MOV R7,#8
;
; RcvByte1:
RcvByte1:
; SETB SCLPin
SETB SCLPin
; JNB SCLPin,$
JNB SCLPin,$
; MOV C,SDAPin
MOV C,SDAPin
; RLC A
RLC A
; CLR SCLPin
CLR SCLPin
; DJNZ R7,RcvByte1
DJNZ R7,RcvByte1
;
; PUSH ACC
PUSH ACC
; MOV A,B
MOV A,B
; CJNE A,#1,RcvByte2
CJNE A,#1,RcvByte2
; SETB SDAPin
SETB SDAPin
; SJMP RcvByte3
SJMP RcvByte3
;
; RcvByte2:
RcvByte2:
; CLR SDAPin
CLR SDAPin
; NOP
NOP
; RcvByte3:
RcvByte3:
; SETB SCLPin
SETB SCLPin
; JNB SCLPin,$
JNB SCLPin,$
; NOP
NOP
; CLR SCLPin
CLR SCLPin
; NOP
NOP
; SETB SDAPin
SETB SDAPin
; POP ACC
POP ACC
;
; #pragma endasm
;
; return ACC;
; SOURCE LINE # 149
MOV R7,A
;
; #else
;
; unsigned char bval = 0, b;
;
; for(b=0; b < 8; b++) {
; SCLHigh();
; bval <<= 1;
; bval |= SDAPin;
; SCLPin = 0;
; }
;
; SDAPin = (cnt==1) ? 1 : 0;
; SCLHigh();
; SCLPin = 0;
; SDAPin = 1; //Clear acknowledge bit.
; return bval;
; #endif
; }
; SOURCE LINE # 168
?C0008:
RET
; END OF _RcvI2CByte
;
; /*************************************
; * Send I2C STOP, release bus *
; **************************************/
; void SendI2CStop(void)
RSEG ?PR?SendI2CStop?BUS
SendI2CStop:
; SOURCE LINE # 173
; {
; SOURCE LINE # 174
; SDAPin = 0;
; SOURCE LINE # 175
CLR SDAPin
; _nop_();
; SOURCE LINE # 176
NOP
; SCLHigh();
; SOURCE LINE # 177
SETB SCLPin
?C0009:
JNB SCLPin,?C0009
?C0010:
; _nop_();
; SOURCE LINE # 178
NOP
; SDAPin = 1;
; SOURCE LINE # 179
SETB SDAPin
; _nop_();
; SOURCE LINE # 180
NOP
; BusBusy = 0;
; SOURCE LINE # 181
CLR BusBusy
; }
; SOURCE LINE # 182
RET
; END OF SendI2CStop
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -