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

📄 bus.src

📁 采用台湾MRT晶捷公司的MRT4方案的液晶电视的程序
💻 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 + -