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

📄 m03.asm

📁 C8051单片机汇编源码,LCD,GPS,北斗时间源切换等核心程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	LJMP	SEND_64
SEND_M0J:
	LJMP	SEND_M0
SEND_L02:
	MOVX	A,@DPTR
	JB	ACC.0,SEND_L021
	LJMP	SEND_M0
SEND_L021:
	CLR	ACC.0
	MOV	FLAG_SEND,A
	MOV	COM_TX0,#08H
	LJMP	SEND_24
SEND_M05:
	SJMP	SEND_L02
SEND_M04:
	MOVX	A,@DPTR
	MOV	TEMP1,A
	MOV	DPS,#01H
	MOVX	A,@DPTR
	ANL	A,#7FH
	MOV	DPH,A
	INC	DPTR
	MOVX	A,@DPTR
	MOV	DPL,A
	INC	DPTR
	MOVX	A,@DPTR
	MOV	TEMP2,A
	INC	DPTR
	MOVX	A,@DPTR
	MOV	TEMP3,A
	MOV	A,TEMP1
	ORL	A,TEMP2
	ORL	A,TEMP3
	JZ	SEND_M0J
	CLR	RS0
	CLR	RS1
	MOV	R0,#85H
	MOV	@R0,TEMP1
	INC	R0
	MOV	@R0,TEMP2
	INC	R0
	MOV	@R0,TEMP3
	MOV	COUNT,#09H
	MOV	COUNT_TX0,#03H
SEND_M041:
	INC	DPTR
	MOV	A,TEMP3
	RRC	A
	MOV	TEMP3,A
	MOV	A,TEMP2
	RRC	A
	MOV	TEMP2,A
	MOV	A,TEMP1
	RRC	A
	MOV	TEMP1,A
	JNC	SEND_M042
	INC	R0
	INC	COUNT_TX0
	MOVX	A,@DPTR
	MOV	@R0,A
SEND_M042:
	DJNZ	COUNT,SEND_M041
	MOV	DPS,#00H
	INC	DPTR
	MOV	COUNT,#0EH
SEND_M043:
	INC	DPTR
	MOV	A,TEMP3
	RRC	A
	MOV	TEMP3,A
	MOV	A,TEMP2
	RRC	A
	MOV	TEMP2,A
	MOV	A,TEMP1
	RRC	A
	MOV	TEMP1,A
	JNC	SEND_M044
	INC	R0
	INC	COUNT_TX0
	MOVX	A,@DPTR
	MOV	@R0,A
SEND_M044:
	DJNZ	COUNT,SEND_M043
	MOV	PID1_TX0,PID2
	MOV	PID2_TX0,PID2
	MOV	COM_TX0,#0CH
	LCALL	TX_5C
	MOV	TCOUNT2,#00H
	LCALL	BEGIN_RX0
	SETB	10H
	SETB	12H
	RET
SEND_24:
	ORL	DPL1,#02H
	MOV	DPS,#01H
	MOV	COUNT,#04H
	MOV	COUNT_TX0,COUNT
	CLR	RS0
	CLR	RS1
	MOV	R0,#85H
SEND_M1:
	MOVX	A,@DPTR
	MOV	@R0,A
	INC	R0
	INC	DPTR
	DJNZ	COUNT,SEND_M1
	MOV	PID1_TX0,PID2
	MOV	PID2_TX0,PID2
	LCALL	TX_5C
	MOV	TCOUNT2,#00H
	CLR	10H
	LCALL	BEGIN_RX0
	SETB	12H
	RET
SEND_64:
	ORL	DPL1,#06H
	MOV	DPS,#01H
	MOV	COUNT,#04H
	MOV	COUNT_TX0,COUNT
	CLR	RS0
	CLR	RS1
	MOV	R0,#85H
	SJMP	SEND_M1
SEND_A4:
	ORL	DPL1,#0AH
	MOV	DPS,#01H
	MOV	COUNT,#04H
	MOV	COUNT_TX0,COUNT
	CLR	RS0
	CLR	RS1
	MOV	R0,#85H
	SJMP	SEND_M1

WAIT_RQ:
	JB	0AH,WAIT_RQ1
	MOV	A,TCOUNT2
	CJNE	A,#03H,WAIT_RQEND
WAIT_RQ2:
	CLR	12H
	MOV	PID3,PID2
	DEC	PID3
	SETB	11H
	CLR	13H
	INC	PID2
	MOV	A,PID2
	ANL	A,#0E0H
	JZ	WAIT_RQEND
	MOV	PID0,#00H
	MOV	PHASE,#00H
WAIT_RQEND:
	RET
WAIT_RQ1:
	MOV	A,PID2
	CJNE	A,PID1_RX0,WAIT_RQ2
	MOV	A,CHECK_TX0
	CJNE	A,CHECK1_RX0,WAIT_RQ2
	JB	10H,WAIT_RQM04
	MOV	DPL,TEMP_DPL
	MOV	DPH,TEMP_DPH
	MOV	DPS,#00H
	MOV	A,FLAG_SEND
	MOVX	@DPTR,A
	CLR	12H
	RET
WAIT_RQM04:
	MOV	DPL,TEMP_DPL
	MOV	DPH,TEMP_DPH
	MOV	DPS,#00H
	MOV	A,#00H
	MOVX	@DPTR,A
	INC	DPTR
	MOVX	A,@DPTR
	MOV	DPH1,A
	INC	DPTR
	MOVX	A,@DPTR
	MOV	DPL1,A
	MOV	DPS,#01H
	INC	DPTR
	INC	DPTR
	MOV	A,#00H
	MOVX	@DPTR,A
	INC	DPTR
	MOVX	@DPTR,A
	CLR	12H
	RET

;==========================================
LOOK_M:
	MOV	PID1_TX0,#01H
	MOV	PID2_TX0,#01H
	MOV	COM_TX0,#01H
LOOK_M1:
	LCALL	TX_6C
	MOV	TCOUNT2,#00H
	LCALL	BEGIN_RX0
LOOK_M2:
	JB	0AH,LOOK_M3
	MOV	A,TCOUNT2
	CJNE	A,#03H,LOOK_M2
LOOK_M4:
	INC	PID1_TX0
	INC	PID2_TX0
	MOV	A,PID1_TX0
	ANL	A,#0E0H
	JZ	LOOK_M1
	RET
LOOK_M3:
	LCALL	LOAD_M
	SJMP	LOOK_M4
;------------------------------------------
LOAD_M:
	MOV	A,PID1_RX0
	CJNE	A,PID2_RX0,LOAD_M1
	MOV	A,#01H
	CJNE	A,COM_RX0,LOAD_M1
	MOV	A,PID2_RX0
	LCALL	RD_EEPROM
	MOV	A,PID2_RX0
	RL	A
	RL	A
	ANL	A,#7CH
	MOV	DPL,A
	MOV	DPH,#00H
	MOV	DPS,#00H
	CLR	RS0
	CLR	RS1
	MOV	R0,#0A0H
	MOV	A,@R0
	MOVX	@DPTR,A
	MOV	R0,#0F0H
	XRL	A,@R0
	CLR	1FH
	JZ	LOAD_M0
	SETB	1FH
	MOVX	A,@DPTR
	MOV	@R0,A
LOAD_M0:
	MOVX	A,@DPTR
	XRL	A,#06H
	JZ	INI_G04
	MOVX	A,@DPTR
	XRL	A,#07H
	JZ	INI_G07
	MOVX	A,@DPTR
	XRL	A,#0AH
	JZ	INI_L02J
	MOVX	A,@DPTR
	XRL	A,#0BH
	JZ	INI_M05J
	MOVX	A,@DPTR
	XRL	A,#09H
	JZ	INI_M04J
	MOV	A,#00H
	INC	DPTR
	MOVX	@DPTR,A
	INC	DPTR
	MOVX	@DPTR,A
	INC	DPTR
	MOVX	@DPTR,A
LOAD_M1:
	RET
INI_L02J:
	LJMP	INI_L02
INI_M05J:
	LJMP	INI_M05
INI_M04J:
	LJMP	INI_M04
INI_G04:
	MOV	A,#00000110B
	JB	1FH,INI_G041
	MOV	A,#00H
INI_G041:
	INC	DPTR
	MOVX	@DPTR,A
	LCALL	LOOK_EM
	MOV	DPS,#00H
	INC	DPTR
	MOV	A,DPH1
	MOVX	@DPTR,A
	INC	DPTR
	MOV	A,DPL1
	MOVX	@DPTR,A
	MOV	DPS,#01H
	MOV	A,#80H
	MOVX	@DPTR,A
	MOV	A,#00H
	INC	DPTR
	MOVX	@DPTR,A
	INC	R0
	MOV	COUNT1,#08H
	JNB	1FH,INI_G044
INI_G042:
	INC	DPTR
	INC	R0
	MOVX	@DPTR,A
	MOV	@R0,A
	DJNZ	COUNT1,INI_G042
	MOV	A,#01H
	MOV	COUNT1,#04H
INI_G043:
	INC	DPTR
	INC	R0
	MOV	@R0,A
	MOVX	@DPTR,A
	INC	A
	DJNZ	COUNT1,INI_G043
	LCALL	WE_EEPROM
	RET
INI_G044:
	MOV	COUNT1,#04H
	MOV	A,#00H
INI_G045:
	INC	DPTR
	INC	R0
	MOVX	@DPTR,A
	DJNZ	COUNT1,INI_G045
	MOV	COUNT1,#08H
INI_G046:
	INC	DPTR
	INC	R0
	MOV	A,@R0
	MOVX	@DPTR,A
	DJNZ	COUNT1,INI_G046
	RET
INI_G07:
	MOV	A,#00000011B
	JB	1FH,INI_G071
	MOV	A,#00H
INI_G071:
	INC	DPTR
	MOVX	@DPTR,A
	LCALL	LOOK_EM
	MOV	DPS,#00H
	INC	DPTR
	MOV	A,DPH1
	MOVX	@DPTR,A
	INC	DPTR
	MOV	A,DPL1
	MOVX	@DPTR,A
	MOV	DPS,#01H
	MOV	A,#80H
	MOVX	@DPTR,A
	MOV	A,#00H
	INC	DPTR
	MOVX	@DPTR,A
	INC	R0
	JNB	1FH,INI_G074
	MOV	COUNT1,#09H
INI_G072:
	INC	DPTR
	INC	R0
	MOV	@R0,A
	MOVX	@DPTR,A
	DJNZ	COUNT1,INI_G072
	LCALL	WE_EEPROM
	RET
INI_G074:
	MOV	COUNT1,#08H
INI_G075:
	INC	DPTR
	INC	R0
	MOV	A,@R0
	MOVX	@DPTR,A
	DJNZ	COUNT1,INI_G075
	MOV	A,#00H
	INC	DPTR
	MOVX	@DPTR,A
	RET
INI_L02:
	MOV	A,#00000000B
	INC	DPTR
	MOVX	@DPTR,A
	LCALL	LOOK_EM
	MOV	DPS,#00H
	INC	DPTR
	MOV	A,DPH1
	MOVX	@DPTR,A
	INC	DPTR
	MOV	A,DPL1
	MOVX	@DPTR,A
	MOV	DPS,#01H
	MOV	A,#80H
	MOVX	@DPTR,A
	MOV	A,#00H
	INC	DPTR
	MOVX	@DPTR,A
	MOV	COUNT1,#04H
INI_L021:
	INC	DPTR
	MOVX	@DPTR,A
	DJNZ	COUNT1,INI_L021
	RET
INI_M05:
	SJMP	INI_L02
INI_M04:
	MOV	A,#0FFH
	INC	DPTR
	MOVX	@DPTR,A
	LCALL	LOOK_EM
	MOV	DPS,#00H
	INC	DPTR
	MOV	A,DPH1
	MOVX	@DPTR,A
	INC	DPTR
	MOV	A,DPL1
	MOVX	@DPTR,A
	MOV	DPL,DPL1
	MOV	DPH,DPH1
	MOV	A,#80H
	MOVX	@DPTR,A
	LCALL	LOOK_EM
	MOV	DPS,#00H
	MOV	A,DPH1
	ORL	A,#80H
	MOVX	@DPTR,A
	INC	DPTR
	MOV	A,DPL1
	MOVX	@DPTR,A
	INC	DPTR
	MOV	A,#0FFH
	MOVX	@DPTR,A
	INC	DPTR
	MOVX	@DPTR,A
	INC	DPTR
	MOV	A,#00H
	MOVX	@DPTR,A
	INC	DPTR
	MOVX	@DPTR,A
	INC	DPTR
	MOVX	@DPTR,A
	MOV	A,#80H
	MOV	COUNT1,#09H
INI_M041:
	INC	DPTR
	MOVX	@DPTR,A
	DJNZ	COUNT1,INI_M041
	MOV	DPS,#01H
	MOV	A,#80H
	MOVX	@DPTR,A
	MOV	A,#00H
	INC	DPTR
	MOVX	@DPTR,A
	MOV	A,#80H
	MOV	COUNT1,#0EH
INI_M042:
	INC	DPTR
	MOVX	@DPTR,A
	DJNZ	COUNT1,INI_M042
	RET
;-------------------------------------
LOOK_EM:
	MOV	DPS,#01H
	MOV	DPTR,#0080H
LOOK_EM1:
	MOVX	A,@DPTR
	JNB	ACC.7,LOOK_EM2
	MOV	A,#10H
	ADD	A,DPL1
	MOV	DPL1,A
	MOV	A,#00H
	ADDC	A,DPH1
	MOV	DPH1,A
	ANL	A,#0FCH			;!!!!
	JZ	LOOK_EM1
	SETB	0DH			;错误标志
LOOK_EM2:
	RET
;========================================
FIND_ADR:
	MOV	A,PID2_RX0
	LCALL	EEPROM_ADR
	MOV	A,PID2_RX0
	RL	A
	RL	A
	ANL	A,#7CH
	MOV	DPL,A
	MOV	DPH,#00H
	MOV	DPS,#00H
	MOVX	A,@DPTR
	MOV	B,A
	INC	DPTR
	INC	DPTR
	MOVX	A,@DPTR
	MOV	DPH1,A
	INC	DPTR
	MOVX	A,@DPTR
	MOV	DPL1,A
	MOV	DPS,#01H
	MOV	A,B
	XRL	A,#06H
	JZ	FIND_G04
	MOV	A,B
	XRL	A,#07H
	JZ	FIND_G07
	MOV	A,B
	XRL	A,#0AH
	JZ	FIND_L02
	MOV	A,B
	XRL	A,#0BH
	JZ	FIND_M05
	MOV	A,B
	XRL	A,#09H
	JZ	FIND_M04
	RET
FIND_G04:
	MOV	B,COM_RX0
	MOV	A,B
	XRL	A,#09H
	JZ	FIND_24
	MOV	A,B
	XRL	A,#0AH
	JZ	FIND_64
	MOV	A,B
	XRL	A,#02H
	JZ	FIND_A4
	RET
FIND_G07:
	MOV	B,COM_RX0
	MOV	A,B
	XRL	A,#09H
	JZ	FIND_24
	MOV	A,B
	XRL	A,#0AH
	JZ	FIND_64
	MOV	A,B
	XRL	A,#07H
	JZ	FIND_A1
	RET
FIND_L02:
	MOV	A,COM_RX0
	XRL	A,#08H
	JZ	FIND_24
	RET
FIND_M05:
	SJMP	FIND_L02
FIND_M04:
	MOV	B,COM_RX0
	MOV	A,B
	XRL	A,#0BH
	JZ	FIND_23
	MOV	A,B
	XRL	A,#0CH
	JZ	FIND_M041
	RET
FIND_M041:
	MOV	DPS,#00H
	DEC	DPTR
	DEC	DPTR
	MOV	DPS,#01H
	MOVX	A,@DPTR
	ANL	A,#7FH
	MOV	TEMP_DPH,A
	INC	DPTR
	MOVX	A,@DPTR
	MOV	TEMP_DPL,A
	INC	DPTR
	RET

FIND_24:
	MOV	B,#01H
	MOV	P_LONG,#04H
	MOV	LONG_IIC,#04H
	ORL	DPL1,#02H
	ORL	ADDL_IIC,#02H
	RET
FIND_23:
	MOV	B,#00H
	MOV	P_LONG,#03H
	MOV	LONG_IIC,#03H
	ORL	DPL1,#04H
	ORL	ADDL_IIC,#04H
	RET
FIND_64:
	MOV	B,#02H
	MOV	P_LONG,#04H
	MOV	LONG_IIC,#04H
	ORL	DPL1,#06H
	ORL	ADDL_IIC,#06H
	RET
FIND_A4:
	MOV	B,#04H
	MOV	P_LONG,#04H
	MOV	LONG_IIC,#04H
	ORL	DPL1,#0AH
	ORL	ADDL_IIC,#0AH
	RET
FIND_A1:
	MOV	B,04H
	MOV	P_LONG,#01H
	MOV	LONG_IIC,#01H
	ORL	DPL1,#0AH
	ORL	ADDL_IIC,#0AH
	RET
;========================================
ERASE_M:
	MOV	DPS,#00H
	MOV	A,PID3
	RL	A
	RL	A
	ANL	A,#7CH
	MOV	DPL,A
	MOV	DPH,#00H
	MOV	A,#00H
	MOVX	@DPTR,A
	INC	DPTR
	MOVX	@DPTR,A
	INC	DPTR
	MOVX	A,@DPTR
	MOV	DPH1,A
	INC	DPTR
	MOVX	A,@DPTR
	MOV	DPL1,A
	MOV	DPS,#01H
	MOVX	A,@DPTR
	ANL	A,#7FH
	MOV	DPH,A
	MOV	A,#00H
	MOVX	@DPTR,A
	INC	DPTR
	MOVX	A,@DPTR
	ORL	A,DPH
	JNZ	ERASE_M1
	RET
ERASE_M1:
	MOVX	A,@DPTR
	MOV	DPL,A
	MOV	DPS,#00H
	MOV	A,#00H
	MOVX	@DPTR,A
	RET

;========================================
TX_5A:
	CLR	RS0
	CLR	RS1
	MOV	R0,#80H
	MOV	@R0,#5AH
	INC	R0
	MOV	@R0,PID1_TX0
	MOV	A,PID1_TX0
	CPL	A
	INC	R0
	MOV	@R0,A
	MOV	COUNT_TX0,#03H
	SETB	RS0
	CLR	RS1
	MOV	R1,#80H
	SETB    ES		;开串口0中断
	SETB	03H
	SETB	0EH
	SETB	TI
	RET
;---------------------------
TX_6C:
	CLR	RS0
	CLR	RS1
	MOV	R0,#80H
	MOV	@R0,#6CH
	INC	R0
	MOV	@R0,PID1_TX0
	MOV	A,PID1_TX0
	INC	R0
	MOV	@R0,COM_TX0
	ADD	A,COM_TX0
	INC	R0
	MOV	@R0,PID2_TX0
	ADD	A,PID2_TX0
	INC	R0
	MOV	@R0,A
	MOV	COUNT_TX0,#05H
	SETB	RS0
	CLR	RS1
	MOV	R1,#80H
	SETB    ES		;开串口0中断
	SETB	03H
	SETB	0EH
	SETB	TI
	RET
;----------------------------
TX_5C:
	CLR	RS0
	CLR	RS1
	MOV	R0,#80H
	MOV	@R0,#5CH
	INC	R0
	MOV	@R0,PID1_TX0
	INC	R0
	MOV	@R0,COM_TX0
	INC	R0
	MOV	@R0,PID2_TX0
	INC	R0
	MOV	@R0,COUNT_TX0
	MOV	A,#05H
	ADD	A,COUNT_TX0
	MOV	COUNT_TX0,A
	MOV	COUNT,A
	INC	COUNT_TX0
	DEC	COUNT
	MOV	R0,#81H
	MOV	CHECK_TX0,#00H
TX_5C1:
	MOV	A,@R0
	ADD	A,CHECK_TX0
	MOV	CHECK_TX0,A
	INC	R0
	DJNZ	COUNT,TX_5C1
	MOV	@R0,CHECK_TX0
	SETB	RS0
	CLR	RS1
	MOV	R1,#80H
	SETB    ES		;开串口0中断
	SETB	03H
	SETB	0EH
	SETB	TI
	RET

;*************************************
;通用子程序
;*************************************
BEGIN_RX0:
	CLR	REN
	CLR	04H
	CLR	05H
	CLR	06H
	CLR	07H
	CLR	08H
	CLR	09H
	CLR	0AH
	CLR	0CH
	CLR	0FH
	SETB    REN		;串口0接收允许
	SETB    ES		;开串口0中断
	RET
;*************************************
;显示部分
;*************************************
DISP:
	MOV	A,STEP_DISP
	JZ	DISP_INFO	;显示时间和钟状态
	DEC	A
	JZ	DISP_MODEJ	;显示板卡
;	DEC	A
;	JZ	SET_G04		;2发送改动过的参数
;	MOV	STEP_DISP,#00H
	RET
DISP_MODEJ:
	LJMP	DISP_MODE
DISP_INFO:
	JB	14H,DISP_INF
	RET
DISP_INF:
	CLR	14H
	JNB	15H,DISP_INFO1
	MOV	ADDS_PL,#09H	;ADDRESS POINTER
	MOV	ADDS_PH,#00H
	SETB	19H
	MOV	A,HOUR
	LCALL	DISP_BYTEB
	MOV	A,#14H
	LCALL	DISP_BYTE
	MOV	A,MINUTE
	LCALL	DISP_BYTEB
	MOV	A,#14H
	LCALL	DISP_BYTE
	MOV	A,SECOND
	LCALL	DISP_BYTEB
	MOV	ADDS_PL,#4AH	;ADDRESS POINTER
	MOV	ADDS_PH,#00H
	SETB	19H
	MOV	A,YEARL
	LCALL	DISP_BYTEB
	MOV	A,#16H
	LCALL	DISP_BYTE
	MOV	A,MONTH
	LCALL	DISP_BYTEB
	MOV	A,#16H
	LCALL	DISP_BYTE
	MOV	A,DATE
	LCALL	DISP_BYTEB
DISP_INFO1:
	MOV	ADDS_PL,#8BH	;ADDRESS POINTER
	MOV	ADDS_PH,#00H
	MOV	DPS,#00H
	MOV	DPTR,#DIDT_
	LCALL	DISP_STR
	MOV	ADDS_PL,#8BH	;ADDRESS POINTER
	MOV	ADDS_PH,#00H
	MOV	A,STAU1
	JNB	ACC.0,DISP_YUAN2
	MOV	A,#48H
	LCALL	DISP_WORD
	MOV	A,#1AH
	LCALL	DISP_BYTE
	MOV	A,#3EH
	LCALL	DISP_BYTE
DISP_YUAN2:
	MOV	A,STAU1
	JNB	ACC.1,DISP_YUAN3
	MOV	A,#48H
	LCALL	DISP_WORD
	MOV	A,#1CH
	LCALL	DISP_BYTE
	MOV	A,#3EH
	LCALL	DISP_BYTE
DISP_YUAN3:
	MOV	A,STAU1
	JNB	ACC.2,DISP_YUAN4
	MOV	A,#48H
	LCALL	DISP_WORD
	MOV	A,#1EH
	LCALL	DISP_BYTE
	MOV	A,#3EH
	LCALL	DISP_BYTE
DISP_YUAN4:
	MOV	A,STAU1
	JNB	ACC.3,DISP_INFO2
	MOV	A,#48H
	LCALL	DISP_WORD
	MOV	A,#20H
	LCALL	DISP_BYTE
DISP_INFO2:
	MOV	ADDS_PL,#0CBH	;ADDRESS POINTER
	MOV	ADDS_PH,#00H
	MOV	A,STAU2
	JZ	DISP_INFO3
	DEC	A
	JZ	DISP_YUANN1
	DEC	A
	JZ	DISP_YUANN2
	DEC	A
	JZ	DISP_YUANN3
	DEC	A
	JZ	DISP_YUANN4
	DEC	A
	JZ	DISP_YUANN5
	SJMP	DISP_INFO3
DISP_YUANN1:
	MOV	A,#48H
	LCALL	DISP_WORD
	MOV	A,#1AH
	LCALL	DISP_BYTE
	SJMP	DISP_INFO3
DISP_YUANN2:
	MOV	A,#48H
	LCALL	DISP_WORD
	MOV	A,#1CH
	LCALL	DISP_BYTE
	SJMP	DISP_INFO3
DISP_YUANN3:
	MOV	A,#48H

⌨️ 快捷键说明

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