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

📄 m03.asm

📁 C8051单片机汇编源码,LCD,GPS,北斗时间源切换等核心程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	LCALL	DISP_WORD
	MOV	A,#1EH
	LCALL	DISP_BYTE
	SJMP	DISP_INFO3
DISP_YUANN4:
	MOV	A,#48H
	LCALL	DISP_WORD
	MOV	A,#20H
	LCALL	DISP_BYTE
	SJMP	DISP_INFO3
DISP_YUANN5:
	MOV	A,#50H
	LCALL	DISP_WORD
	MOV	A,#0F8H
	LCALL	DISP_WORD
	MOV	A,#54H
	LCALL	DISP_WORD
DISP_INFO3:
	MOV	DPS,#00H
	MOV	DPTR,#DIDT_
	LCALL	DISP_STR
	MOV	ADDS_PL,#09H	;ADDRESS POINTER
	MOV	ADDS_PH,#01H
	MOV	A,ZONE
	JB	ACC.4,DISP_
	MOV	A,#2CH
	LCALL	DISP_BYTE
	SJMP	DISP_INFO4
DISP_:
	MOV	A,#16H
	LCALL	DISP_BYTE
DISP_INFO4:
	MOV	A,ZONE
	ANL	A,#0FH
	CLR	19H
	LCALL	DISP_BYTEB
	MOV	ADDS_PL,#08H	;ADDRESS POINTER
	MOV	ADDS_PH,#12H
	MOV	A,STAU_GPS
	JNB	ACC.7,DISP_UTCP0
	JNB	ACC.6,DISP_UTCP0
	MOV	DPTR,#BLOCK_UTCP
	LCALL	DISP_BLOCK
	SJMP	DISP_ANTE
DISP_UTCP0:
	MOV	DPTR,#BLOCK__
	LCALL	DISP_BLOCK
DISP_ANTE:
	MOV	A,STAU_GPS
	JB	ACC.5,DISP_ANTE0
	JB	ACC.4,DISP_ANTE0
	MOV	DPTR,#BLOCK_ANTE
	LCALL	DISP_BLOCK
	SJMP	DISP_SATE
DISP_ANTE0:
	MOV	DPTR,#BLOCK__
	LCALL	DISP_BLOCK
DISP_SATE:
	MOV	DPTR,#BLOCK_SATE
	LCALL	DISP_BLOCK
	MOV	ADDS_PL,#57H	;ADDRESS POINTER
	MOV	ADDS_PH,#01H
	MOV	A,STAU_GPS
	ANL	A,#0FH
	CLR	19H
	LCALL	DISP_BYTEB
	MOV	ADDS_PL,#09H	;ADDRESS POINTER
	MOV	ADDS_PH,#14H
	MOV	PID4,#00H
DISP_BD:
	INC	PID4
	MOV	A,PID4
	ANL	A,#0E0H
	JZ	DISP_BD1
	MOV	DPTR,#BLOCK__
	LCALL	DISP_BLOCK
	MOV	DPTR,#BLOCK__
	LCALL	DISP_BLOCK
	MOV	ADDS_PL,#89H	;ADDRESS POINTER
	MOV	ADDS_PH,#01H
	MOV	DPS,#00H
	MOV	DPTR,#DIDT_
	LCALL	DISP_STR
	RET
DISP_BD1:
	MOV	A,PID4
	RL	A
	RL	A
	ANL	A,#7CH
	MOV	DPL,A
	MOV	DPH,#00H
	MOV	DPS,#00H
	MOVX	A,@DPTR
	CJNE	A,#07H,DISP_BD
	INC	DPTR
	INC	DPTR
	MOVX	A,@DPTR
	MOV	DPH1,A
	INC	DPTR
	MOVX	A,@DPTR
	MOV	DPL1,A
	ORL	DPL1,#0AH
	MOV	DPS,#01H
	MOVX	A,@DPTR
	MOV	TEMP3,A
	ANL	A,#0F0H
	CJNE	A,#10H,DISP_OK0
	MOV	DPTR,#BLOCK_OK
	LCALL	DISP_BLOCK
	SJMP	DISP_STAE1
DISP_OK0:
	MOV	DPTR,#BLOCK__
	LCALL	DISP_BLOCK
DISP_STAE1:
	MOV	DPTR,#BLOCK_SATE
	LCALL	DISP_BLOCK
	MOV	ADDS_PL,#93H	;ADDRESS POINTER
	MOV	ADDS_PH,#01H
	MOV	A,TEMP3
	ANL	A,#0FH
	CLR	19H
	LCALL	DISP_BYTEB
	RET

;=====================================
;显示屏幕固定信息
;=====================================
DISP_GA:
	MOV	ADDS_PL,#48H	;ADDRESS POINTER
	MOV	ADDS_PH,#00H
	MOV	DPS,#00H
	MOV	DPTR,#SCREENA
	LCALL	DISP_STR
	RET

DISP_GB:
	MOV	ADDS_PL,#0AH	;ADDRESS POINTER
	MOV	ADDS_PH,#00H
	MOV	DPS,#00H
	MOV	DPTR,#SCREENB
	LCALL	DISP_STR
	RET
;=====================================
;显示在线模块
;=====================================
DISP_MODE:
	MOV	ADDS_PL,#0C0H	;ADDRESS POINTER
	MOV	ADDS_PH,#00H
	MOV	DPL1,#0CFH
	MOV	DPH1,#03H
	MOV	PID4,#00H
DISP_MODE1:
	INC	PID4
	MOV	A,PID4
	ANL	A,#0E0H
	JZ	DISP_MODE2
DISP_MODE0:
	MOV	DPS,#01H
	INC	DPTR
	MOVX	A,@DPTR
	JZ	DISP_MEND
	MOV	A,#00H
	MOVX	@DPTR,A
	INC	DPTR
	MOVX	@DPTR,A
	MOV	DPS,#00H
	MOV	DPTR,#DIDT__
	LCALL	DISP_STR
	SJMP	DISP_MODE0
DISP_MEND:
	RET
DISP_MODE2:
	MOV	A,PID4
	RL	A
	RL	A
	ANL	A,#7CH
	MOV	DPL,A
	MOV	DPH,#00H
	MOV	DPS,#00H
	MOVX	A,@DPTR
	JZ	DISP_MODE1
	MOV	B,A
	MOV	DPS,#01H
	INC	DPTR
	MOVX	A,@DPTR
	CJNE	A,PID4,DISP_MODE3
	INC	DPTR
	MOVX	A,@DPTR
	CJNE	A,B,DISP_MODE4
	LCALL	ENTER
	SJMP	DISP_MODE1
DISP_MODE3:
	MOV	A,PID4
	MOVX	@DPTR,A
	INC	DPTR
DISP_MODE4:
	MOV	A,B
	MOVX	@DPTR,A
	XRL	A,#06H
	JZ	DISP_MG04
	MOV	A,B
	XRL	A,#07H
	JZ	DISP_MG07
	MOV	A,B
	XRL	A,#0AH
	JZ	DISP_ML02
	MOV	A,B
	XRL	A,#0BH
	JZ	DISP_MM05
	MOV	A,B
	XRL	A,#09H
	JZ	DISP_MM04
	SJMP	DISP_MODE1
DISP_MG04:
	MOV	DPS,#00H
	MOV	DPTR,#DIDT_G04
	LCALL	DISP_STR
	SJMP	DISP_MODE5
DISP_MG07:
	MOV	DPS,#00H
	MOV	DPTR,#DIDT_G07
	LCALL	DISP_STR
	SJMP	DISP_MODE5
DISP_ML02:
	MOV	DPS,#00H
	MOV	DPTR,#DIDT_L02
	LCALL	DISP_STR
	SJMP	DISP_MODE5
DISP_MM05:
	MOV	DPS,#00H
	MOV	DPTR,#DIDT_M05
	LCALL	DISP_STR
	SJMP	DISP_MODE5
DISP_MM04:
	MOV	DPS,#00H
	MOV	DPTR,#DIDT_M04
	LCALL	DISP_STR
DISP_MODE5:
	MOV	A,ADDS_PL
	ANL	A,#0E0H
	ORL	A,#12H
	MOV	ADDS_PL,A
	MOV	A,PID4
	CLR	19H
	LCALL	DISP_BYTEB
	LCALL	ENTER
	LJMP	DISP_MODE1

;========================================
;显示初始化
;========================================
INI_LCD:
        CLR     P2.0            ;FS
	MOV	DIS_DL,#00H	;TEXT HOME ADDRESS 0000H
	MOV	DIS_DH,#00H
	MOV	DIS_COM,#40H
	LCALL	SENDCOM
	MOV	DIS_DL,#20H	;TEXT AREA 32 COLUMNS
	MOV	DIS_DH,#00H	;0000H~0200H(可扩展至400H)
	MOV	DIS_COM,#41H
	LCALL	SENDCOM
	MOV	DIS_DL,#00H	;GRAPHIC HOME ADDRESS 0800H
	MOV	DIS_DH,#08H
	MOV	DIS_COM,#42H
	LCALL	SENDCOM
	MOV	DIS_DL,#20H	;GRAPHIC AREA 32 COLUMNS
	MOV	DIS_DH,#00H	;0800H~1800H
	MOV	DIS_COM,#43H
	LCALL	SENDCOM
	MOV	DIS_COM,#88H
	LCALL	SENDCON		;External CG,OR mode
	MOV	DIS_DL,#03H	;SET OFFSET
	MOV	DIS_DH,#00H	;CG RAM 1800H~1FFFH
	MOV	DIS_COM,#22H
	LCALL	SENDCOM
	MOV	DIS_COM,#9CH	;TEXT ON GRAPHICS ON CURSOR OFF
	LCALL	SENDCON
	LCALL	CLEAR_TXT	;CLR TEXT AREA
	LCALL	CLEAR_GIF	;CLR GIF AREA
	MOV	DIS_DL,#00H	;CG RAM 首地址
	MOV	DIS_DH,#18H	;
	MOV	DIS_COM,#24H
	LCALL	SENDCOM
	MOV	DIS_COM,#0B0H	;AUTO	WRITE
	LCALL	SENDCON
	MOV	COUNT,#00H	;LOAD EXCG
	MOV	COUNT1,#08H
	MOV	DPTR,#WORD_ROOM
LOAD_CG:
	LCALL	T_STAU3
	MOV	A,#00H
	MOVC	A,@A+DPTR
	LCALL	DT
	INC	DPTR
	DJNZ	COUNT,LOAD_CG
	DJNZ	COUNT1,LOAD_CG
	MOV	DIS_COM,#0B2H	;AUTO WRITE STOP
	LCALL	SENDCON
	RET

;======================================
;6963命令
;======================================
DISP_STR:
	MOV	COUNT,#00H
DISP_STR1:
	MOV	A,COUNT
	MOVC	A,@A+DPTR
	MOV	B,A
	INC	COUNT
	XRL	A,#0FEH
	JZ	DISP_STR4
	MOV	A,B
	XRL	A,#0FFH
	JNZ	DISP_STR2
	RET
DISP_STR2:
	MOV	A,B
	CLR	C
	SUBB	A,#44H
        MOV     A,B
	JNC	DISP_STR3
	LCALL	DISP_BYTE
	SJMP	DISP_STR1
DISP_STR3:
	LCALL	DISP_WORD
	AJMP	DISP_STR1
DISP_STR4:
	LCALL	ENTER
	AJMP	DISP_STR1

;--------------------------------------
DISP_WORD:
	MOV	CGP,A
	MOV	DIS_DL,ADDS_PL
	MOV	DIS_DH,ADDS_PH
	MOV	DIS_COM,#24H
	LCALL	SENDCOM
	MOV	DIS_DH,CGP
	MOV	DIS_COM,#0C0H
	LCALL	SENDCOM1
	INC	CGP
	MOV	DIS_DH,CGP
	MOV	DIS_COM,#0C4H
	LCALL	SENDCOM1
	MOV	DIS_DL,ADDS_PL
	MOV	DIS_DH,ADDS_PH
	MOV	A,#20H
	ADD	A,DIS_DL
	MOV	DIS_DL,A
	MOV	A,#00H
	ADDC	A,DIS_DH
	MOV	DIS_DH,A
	MOV	DIS_COM,#24H
	LCALL	SENDCOM
	INC	CGP
	MOV	DIS_DH,CGP
	MOV	DIS_COM,#0C0H
	LCALL	SENDCOM1
	INC	CGP
	MOV	DIS_DH,CGP
	MOV	DIS_COM,#0C4H
	LCALL	SENDCOM1
	MOV	A,#02H
	ADD	A,ADDS_PL
	MOV	ADDS_PL,A
	MOV	A,#00H
	ADDC	A,ADDS_PH
	MOV	ADDS_PH,A
	RET
;-------------------------------------
DISP_BIN:
	MOVX	A,@DPTR
	MOV	BIN1,A
	INC	DPTR
	MOVX	A,@DPTR
	MOV	BIN2,A
	INC	DPTR
	MOVX	A,@DPTR
	MOV	BIN3,A
	INC	DPTR
	MOVX	A,@DPTR
	MOV	BIN4,A
	INC	DPTR
	MOV	COUNT,#20H
	LCALL	BIN_BCD
	MOV	COUNT,#05H
	CLR	RS0
	CLR	RS1
	MOV	R1,#0EH
DISP_BIN1:
	MOV	A,@R1
	MOV	@R0,A
	SWAP	A
	RL	A
	ANL	A,#1EH
	ADD	A,#18H
	LCALL	DISP_BYTE
	MOV	A,@R1
	RL	A
	ANL	A,#1EH
	ADD	A,#18H
	LCALL	DISP_BYTE
	DEC	R1
	INC	R0
	DJNZ	COUNT,DISP_BIN1
	RET
;-----------------------------------------
DISP_BYTED:
	MOV	BIN4,A
	MOV	COUNT,#08H
	LCALL	BIN_BCD
	MOV	A,BCD2
	RL	A
	ANL	A,#1EH
	ADD	A,#18H
	LCALL	DISP_BYTE
	MOV	A,BCD1
	SWAP	A
	RL	A
	ANL	A,#1EH
	ADD	A,#18H
	LCALL	DISP_BYTE
	MOV	A,BCD1
	RL	A
	ANL	A,#1EH
	ADD	A,#18H
	LCALL	DISP_BYTE
	RET
;-------------------------------------
DISP_BYTEB:
	MOV	BIN4,A
	MOV	COUNT,#08H
	LCALL	BIN_BCD
	MOV	A,BCD1
	SWAP	A
	RL	A
	ANL	A,#1EH
	JB	19H,DISP_BYTEB1
	ADD	A,#18H
DISP_BYTEB1:
	ACALL	DISP_BYTE
	MOV	A,BCD1
	RL	A
	ANL	A,#1EH
	JB	19H,DISP_BYTEB2
	ADD	A,#18H
DISP_BYTEB2:
	ACALL	DISP_BYTE
	RET
;-------------------------------------
DISP_BYTE:
	MOV	CGP,A
	MOV	DIS_DL,ADDS_PL
	MOV	DIS_DH,ADDS_PH
	MOV	DIS_COM,#24H
	LCALL	SENDCOM
	MOV	DIS_DH,CGP
	MOV	DIS_COM,#0C4H
	LCALL	SENDCOM1
	MOV	DIS_DL,ADDS_PL
	MOV	DIS_DH,ADDS_PH
	MOV	A,#20H
	ADD	A,DIS_DL
	MOV	DIS_DL,A
	MOV	A,#00H
	ADDC	A,DIS_DH
	MOV	DIS_DH,A
	MOV	DIS_COM,#24H
	LCALL	SENDCOM
	INC	CGP
	MOV	DIS_DH,CGP
	MOV	DIS_COM,#0C4H
	LCALL	SENDCOM1
	MOV	A,#01H
	ADD	A,ADDS_PL
	MOV	ADDS_PL,A
	MOV	A,#00H
	ADDC	A,ADDS_PH
	MOV	ADDS_PH,A
	RET
;-------------------------------------
ENTER:
	MOV	A,#40H
	ADD	A,ADDS_PL
	MOV	ADDS_PL,A
	MOV	A,ADDS_PH
	ADDC	A,#00H
	MOV	ADDS_PH,A
	ANL	ADDS_PL,#0E0H
	RET

;-------------------------------------
CLEAR_TXT:
	MOV	DIS_DL,#00H	;TEXT RAM 首地址
	MOV	DIS_DH,#00H	;
	MOV	DIS_COM,#24H
	LCALL	SENDCOM
	MOV	DIS_COM,#0B0H	;AUTO	WRITE
	LCALL	SENDCON
	MOV	COUNT,#00H
	MOV	COUNT1,#08H
CLEAR_TXT1:
	LCALL	T_STAU3
	MOV	A,#3EH
	LCALL	DT
	DJNZ	COUNT,CLEAR_TXT1
	DJNZ	COUNT1,CLEAR_TXT1
	MOV	DIS_COM,#0B2H	;AUTO WRITE STOP
	LCALL	SENDCON
	RET
;--------------------------------------
DISP_BLOCK:
	MOV	CGP,#00H
	MOV	DIS_DL,ADDS_PL
	MOV	DIS_DH,ADDS_PH
	MOV	DIS_COM,#24H
	LCALL	SENDCOM
	MOV	TEMP1,ADDS_PL
	MOV	TEMP2,ADDS_PH
	MOV	COUNT1,#10H
DISP_BLOCK1:
	MOV	COUNT,#05H
DISP_BLOCK2:
	MOV	A,CGP
	MOVC	A,@A+DPTR
	MOV	DIS_DH,A
	MOV	DIS_COM,#0C0H
	LCALL	SENDCOM1
	INC	CGP
	DJNZ	COUNT,DISP_BLOCK2
	MOV	A,#20H
	ADD	A,ADDS_PL
	MOV	ADDS_PL,A
	MOV	A,#00H
	ADDC	A,ADDS_PH
	MOV	ADDS_PH,A
	MOV	DIS_DL,ADDS_PL
	MOV	DIS_DH,ADDS_PH
	MOV	DIS_COM,#24H
	LCALL	SENDCOM
	DJNZ	COUNT1,DISP_BLOCK1
	MOV	ADDS_PL,TEMP1
	MOV	ADDS_PH,TEMP2
	MOV	A,#05H
	ADD	A,ADDS_PL
	MOV	ADDS_PL,A
	MOV	A,#00H
	ADDC	A,ADDS_PH
	MOV	ADDS_PH,A
	RET
;--------------------------------
CLEAR_GIF:
	MOV	DIS_DL,#00H	;TEXT RAM 首地址
	MOV	DIS_DH,#08H	;
	MOV	DIS_COM,#24H
	LCALL	SENDCOM
	MOV	DIS_COM,#0B0H	;AUTO	WRITE
	LCALL	SENDCON
	MOV	COUNT,#00H
	MOV	COUNT1,#10H
CLEAR_GIF1:
	LCALL	T_STAU3
	MOV	A,#00H
	LCALL	DT
	DJNZ	COUNT,CLEAR_GIF1
	DJNZ	COUNT1,CLEAR_GIF1
	MOV	DIS_COM,#0B2H	;AUTO WRITE STOP
	LCALL	SENDCON
	RET
;----------------------------
SENDCOM:
	ACALL	T_STAU1
	MOV	A,DIS_DL
	ACALL	DT
SENDCOM1:
	ACALL	T_STAU1
	MOV	A,DIS_DH
	ACALL	DT
SENDCON:
	ACALL	T_STAU1
	MOV	A,DIS_COM
	ACALL	CMD
	RET

;===================================
;操作6963时序
;===================================
T_STAU1:
	MOV	P0,#0FFH	;READ STATUS 0,1
	SETB	P2.2		;C/D
	CLR	P2.1		;/CE
	CLR	P2.4		;/RD
T_STAU11:
	NOP
	MOV	A,P0
	ANL	A,#03H
	CJNE	A,#03H,T_STAU11
	SETB	P2.4		;/RD
	SETB	P2.1		;/CE
	RET

CMD:				;WRITE COMMAND
	SETB	P2.2		;C/D
	CLR	P2.1		;/CE
	MOV	P0,A
	CLR	P2.3		;/WR
        NOP
	SETB	P2.3		;/WR
	SETB	P2.1		;/CE
	RET

DT:				;WRITE DATA
	CLR	P2.2		;C/D
	CLR	P2.1		;/CE
	MOV	P0,A
	CLR	P2.3		;/WR
        NOP
	SETB	P2.3		;/WR
	SETB	P2.1		;/CE
	RET

T_STAU3:
	MOV	P0,#0FFH	;READ STATUS 3
	SETB	P2.2		;C/D
	CLR	P2.1		;/CE
	CLR	P2.4		;/RD
T_STAU31:
	NOP
	MOV	A,P0
	ANL	A,#08H
	CJNE	A,#08H,T_STAU31
	SETB	P2.4		;/RD
	SETB	P2.1		;/CE
	RET
;***********************************
;1161的IIC子程序
;***********************************
RD_EEPROM:
	LCALL	EEPROM_ADR
	MOV	LONG_IIC,#10H
	SETB	RS0
	SETB	RS1
	MOV	R0,#0F0H
	LCALL	IIC_RD
	RET
;--------------------------------
WE_EEPROM:
;	LCALL	EEPROM_ADR
	MOV	LONG_IIC,#10H
	SETB	RS0
	SETB	RS1
	MOV	R1,#0F0H
	LCALL	IIC_WR
	RET
;---------------------------
EEPROM_ADR:
	SWAP	A
	MOV	ADDH_IIC,A
	MOV	ADDL_IIC,A
	ANL	ADDH_IIC,#0FH
	ANL	ADDL_IIC,#0F0H
	CLR	C
	MOV	A,ADDL_IIC
	RLC	A
	MOV	ADDL_IIC,A
	MOV	A,ADDH_IIC
	RLC	A
	MOV	ADDH_IIC,A
	RET
;***********************************
IIC_WR:
	CLR	WP
	LCALL	IIC_STAR
	MOV	A,ADDH_IIC
	RL	A
	ANL	A,#0EH
	ORL	A,#0A0H
	LCALL	IIC_WRB
	JB	1EH,IIC_WR
	MOV	A,ADDL_IIC
	LCALL	IIC_WRB
	JB	1EH,IIC_WR
	SETB	RS0
	SETB	RS1
IIC_WR1:
	MOV	A,@R1
	LCALL	IIC_WRB
	INC	R1
	DJNZ	LONG_IIC,IIC_WR1
	LCALL	IIC_STOP
	CLR	WP
	RET
;-------------------------------------
IIC_RD:
	LCALL	IIC_STAR
	MOV	A,ADDH_IIC
	RL	A
	ANL	A,#0EH
	ORL	A,#0A0H
	LCALL	IIC_WRB
	JB	1EH,IIC_RD
	MOV	A,ADDL_IIC
	LCALL	IIC_WRB
	JB	1EH,IIC_RD
	LCALL	IIC_STAR
	MOV	A,ADDH_IIC
	RL	A
	ANL	A,#0EH
	ORL	A,#0A1H
	LCALL	IIC_WRB
	JB	1EH,IIC_RD
	SETB	RS0
	SETB	RS1
IIC_RD1:
	LCALL	IIC_RDB
	MOV	@R0,A
	INC	R0
	DJNZ	LONG_IIC,IIC_RD2
	LCALL	IIC_NACK
	LCALL	IIC_STOP
	RET
IIC_RD2:
	LCALL	IIC_ACK
	SJMP	IIC_RD1
;=====================================
IIC_STAR:			;启动IIC总线
	SETB	SDA
	SETB	SCL
	NOP
	NOP
	JB	SDA,IIC_STAR1
	CLR	SCL
	SJMP	IIC_STAR
IIC_STAR1:
	CLR	SDA
	NOP
	NOP
	CLR	SCL
	RET
;------------------------------
IIC_STOP:			;停止IIC总线
	CLR	SDA
	SETB	SCL
	NOP
	NOP
	SETB	SDA
	NOP
	NOP
	CLR	SCL
	RET
;------------------------------
IIC_WRB:				;向SDA线上发送一个数据字节
	MOV	COUNT,#08H
IIC_WRB1:
	RLC	A
	MOV	SDA,C
	NOP
	SETB	SCL
	NOP
	NOP
	CLR	SCL
	DJNZ	COUNT,IIC_WRB1
	SETB	SDA		;应答位检查
	NOP
	MOV	C,SDA
	MOV	1EH,C
	SETB	SCL
	NOP
	NOP
	CLR	SCL
	RET
;------------------------------
IIC_RDB:				;从SDA线上读取一个数据字节
	MOV	COUNT,#08H
IIC_RDB1:
	SETB	SDA
	NOP
	SETB	SCL
	MOV	C,SDA
	RLC	A
	CLR	SCL
	DJNZ	COUNT,IIC_RDB1
	RET
;-------------------------------
IIC_ACK:				;发送应答位
	CLR	SDA
	NOP
	SETB	SCL
	NOP
	NOP
	CLR	SCL
	RET
;-------------------------------
IIC_NACK:				;发送非应答位
	SETB	SDA
	NOP
	SETB	SCL
	NOP
	NOP
	CLR	SCL
	RET

;***********************************
;通用子程序
;***********************************
;二进制转十进制
BIN_BCD:
	MOV	BCD1,#00H
	MOV	BCD2,#00H
	MOV	BCD3,#00H
	MOV	BCD4,#00H
	MOV	BCD5,#00H
BIN_BCD1:
	MOV	A,BIN1
	RLC	A
	MOV	BIN1,A
	MOV	A,BIN2
	RLC	A
	MOV	BIN2,A
	MOV	A,BIN3
	RLC	A
	MOV	BIN3,A
	MOV	A,BIN4
	RLC	A
	MOV	BIN4,A

	MOV	A,BCD1
	ADDC	A,BCD1
	DA	A
	MOV	BCD1,A
	MOV	A,BCD2
	ADDC	A,BCD2
	DA	A
	MOV	BCD2,A
	MOV	A,BCD3
	ADDC	A,BCD3
	DA	A
	MOV	BCD3,A
	MOV	A,BCD4
	ADDC	A,BCD4
	DA	A
	MOV	BCD4,A
	MOV	A,BCD5
	ADDC	A,BCD5
	DA	A
	

⌨️ 快捷键说明

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