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

📄 s2.asm

📁 51单片机模拟串口
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;辛工:我们改的位置都用"?????"作了标记,其它没改.孙刚
MDATA 	SEGMENT
DST2_0	DB 0
DST2_1	DB 0
DST2_2	DB 0
DST2_3	DB 0
DST2_4	DB 0

DST3	DB 2 DUP(0)
DST3F	DB ' '
	DB '*'

DST5_0	DW 0
DST5_1	DW 0
DST5_2	DW 0
DST5_3	DW 0
DST5_4	DW 0
DST5_5	DW 0

DST6_0	DW 0
DST6_1	DW 0
DST6_2	DW 0
DST6_3	DW 0

DST7_0	DW 0
DST7_1	DW 0
DST7_2	DW 0
DST7_3	DW 0
DST7_4	DW 0
DST7_5	DW 0

ATC0	DB 70H,71H,72H,73H,30H
ATC1	DB 74H,75H,76H,77H,30H
ATC2	DB 78H,79H,7AH,7BH,30H
ATC3	DB 7CH,7DH,7EH,7FH,30H

TC0_0	DB 40H,41H,42H,43H,44H,45H,46H,47H	;'TS-码流发生器'
TC0_1	DB 48H,49H,4AH,4BH,4CH,4DH,4EH,4FH	;'北京牡丹电子集团'
TC0_2	DB 21H,3CH,50H,51H,52H,53H		;'1、 编缉节目'
TC0_3	DB 22H,3CH,54H,55H,56H,57H		;'2、 播放节目'
TC0_4	DB 3BH					;'*'
TC0_5	DB 30H					;' '
TC0	DB 60H,30H,61H,30H,30H,62H,30H,63H	;'请  您    稍  候'
TC1	DB 64H,30H,65H,30H,30H,66H,30H,67H	;'正  在    播  放'
TC2_0	DB 20H,20H,3DH,20H,20H			;00:00
TC2_1	DB 20H,20H,3DH,20H,20H			;00:00
TC2_2	DB 20H,20H,3DH,20H,20H			;00:00
TC2_3	DB 20H,20H,3DH,20H,20H			;00:00

FILED	DB 8 DUP(0)
FILE0	DB 'XDST0U.EXE',0
FILE1	DB 'XDST1U.EXE',0
ASC8F	DB 'XX3.EXE',0			;ASC8

	DB 400H DUP(0)
DST0	DB 19619 DUP(0)
	DB 400H DUP(0)
DST1	DB 2947 DUP(0)
DDST1	DB 10 DUP(0)
LDST0	EQU 212
LDST1	EQU 24
MDATA	ENDS

STACK	SEGMENT
STAPN	DB 100 DUP(?)
TOP	EQU LENGTH STAPN
STACK	ENDS

CODE	SEGMENT
	ASSUME CS:CODE,DS:MDATA,SS:STACK
START:	MOV AX,MDATA
	MOV DS,AX
	MOV AX,STACK
	MOV SS,AX
	MOV SP,TOP
	XOR SI,SI
	XOR DI,DI
	XOR BP,BP
	CLD

	CALL RS232I

	MOV DX,OFFSET FILE0
	MOV AX,3D00H
	INT 21H
	MOV BX,AX
	MOV CX,19619
	MOV DX,OFFSET DST0
	SUB DX,200H
	MOV AH,3FH
	INT 21H
	MOV AH,3EH
	INT 21H
	MOV DX,OFFSET FILE1
	MOV AX,3D00H
	INT 21H
	MOV BX,AX
	MOV CX,2947
	MOV DX,OFFSET DST1
	SUB DX,200H
	MOV AH,3FH
	INT 21H
	MOV AH,3EH
	INT 21H

	CALL RS232C

	MOV WORD PTR CS:RDSTT_0,12		;X
	MOV WORD PTR CS:RDSTT_1,1*16		;Y
	MOV WORD PTR CS:RDSTT_2,34H
	MOV WORD PTR CS:RDSTT_3,0
	MOV WORD PTR CS:RDSTT_4,8
	MOV AX,OFFSET TC0_0
	MOV WORD PTR CS:RDSTT_5,AX
	MOV AX,SEG TC0_0
	MOV WORD PTR CS:RDSTT_6,AX
	CALL RS232T
	MOV WORD PTR CS:RDSTT_0,12		;X
	MOV WORD PTR CS:RDSTT_1,3*16		;Y
	MOV WORD PTR CS:RDSTT_2,34H
	MOV WORD PTR CS:RDSTT_3,0
	MOV WORD PTR CS:RDSTT_4,8
	MOV AX,OFFSET TC0_1
	MOV WORD PTR CS:RDSTT_5,AX
	MOV AX,SEG TC0_1
	MOV WORD PTR CS:RDSTT_6,AX
	CALL RS232T
	MOV AH,07H
	INT 21H

RESET:	MOV BYTE PTR DST2_0,1
	CALL RS232C
	MOV WORD PTR CS:RDSTT_0,2*12		;X
	MOV WORD PTR CS:RDSTT_1,1*16		;Y
	MOV WORD PTR CS:RDSTT_2,34H
	MOV WORD PTR CS:RDSTT_3,0FFH
	MOV WORD PTR CS:RDSTT_4,6
	MOV AX,OFFSET TC0_2
	MOV WORD PTR CS:RDSTT_5,AX
	MOV AX,SEG TC0_2
	MOV WORD PTR CS:RDSTT_6,AX
	CALL RS232T
	MOV WORD PTR CS:RDSTT_0,2*12		;X
	MOV WORD PTR CS:RDSTT_1,2*16		;Y
	MOV WORD PTR CS:RDSTT_2,34H
	MOV WORD PTR CS:RDSTT_3,0
	MOV WORD PTR CS:RDSTT_4,6
	MOV AX,OFFSET TC0_3
	MOV WORD PTR CS:RDSTT_5,AX
	MOV AX,SEG TC0_3
	MOV WORD PTR CS:RDSTT_6,AX
	CALL RS232T
X00:	MOV AH,07H
	INT 21H
	CMP AL,'3'				;up arrow key
	JE  X01
	JMP X03
X01:	CMP BYTE PTR DST2_0,1
	JE  X02
	MOV WORD PTR CS:RDSTT_0,2*12		;X
	MOV WORD PTR CS:RDSTT_1,1*16		;Y
	MOV WORD PTR CS:RDSTT_2,34H
	MOV WORD PTR CS:RDSTT_3,0FFH
	MOV WORD PTR CS:RDSTT_4,6
	MOV AX,OFFSET TC0_2
	MOV WORD PTR CS:RDSTT_5,AX
	MOV AX,SEG TC0_2
	MOV WORD PTR CS:RDSTT_6,AX
	CALL RS232T
	MOV WORD PTR CS:RDSTT_0,2*12		;X
	MOV WORD PTR CS:RDSTT_1,2*16		;Y
	MOV WORD PTR CS:RDSTT_2,34H
	MOV WORD PTR CS:RDSTT_3,0
	MOV WORD PTR CS:RDSTT_4,6
	MOV AX,OFFSET TC0_3
	MOV WORD PTR CS:RDSTT_5,AX
	MOV AX,SEG TC0_3
	MOV WORD PTR CS:RDSTT_6,AX
	CALL RS232T
	MOV BYTE PTR DST2_0,1
X02:	JMP X00
X03:	CMP AL,'1'				;down arrow key
	JZ  X04
	JMP X06
X04:	CMP BYTE PTR DST2_0,2
	JE  X05
	MOV WORD PTR CS:RDSTT_0,2*12		;X
	MOV WORD PTR CS:RDSTT_1,1*16		;Y
	MOV WORD PTR CS:RDSTT_2,34H
	MOV WORD PTR CS:RDSTT_3,0
	MOV WORD PTR CS:RDSTT_4,6
	MOV AX,OFFSET TC0_2
	MOV WORD PTR CS:RDSTT_5,AX
	MOV AX,SEG TC0_2
	MOV WORD PTR CS:RDSTT_6,AX
	CALL RS232T
	MOV WORD PTR CS:RDSTT_0,2*12		;X
	MOV WORD PTR CS:RDSTT_1,2*16		;Y
	MOV WORD PTR CS:RDSTT_2,34H
	MOV WORD PTR CS:RDSTT_3,0FFH
	MOV WORD PTR CS:RDSTT_4,6
	MOV AX,OFFSET TC0_3
	MOV WORD PTR CS:RDSTT_5,AX
	MOV AX,SEG TC0_3
	MOV WORD PTR CS:RDSTT_6,AX
	CALL RS232T
	MOV BYTE PTR DST2_0,2
X05:	JMP X00
X06:	CMP AL,'0'				;acknowledge key
	JZ  X07
	JMP X00
X07:	CMP BYTE PTR DST2_0,1
	JNZ X08
	JMP Y00
X08:	JMP X00

Y00:	CALL RS232C
	MOV WORD PTR CS:RDSTT_0,120		;X
	MOV WORD PTR CS:RDSTT_1,0		;Y
	MOV WORD PTR CS:RDSTT_2,31H
	MOV WORD PTR CS:RDSTT_3,0
	MOV WORD PTR CS:RDSTT_4,1
	XOR BX,BX
	MOV BL,BYTE PTR DST3
	MOV AX,OFFSET DST3F
	ADD AX,BX
	MOV WORD PTR CS:RDSTT_5,AX
	MOV AX,SEG DST3
	MOV WORD PTR CS:RDSTT_6,AX
	CALL RS232T
	MOV BYTE PTR DST2_0,1
	MOV BYTE PTR DST2_1,1
	MOV BYTE PTR DST2_2,2
	MOV BYTE PTR DST2_3,3
	MOV BYTE PTR DST2_4,4
Y01:	MOV BX,1
Y02:	MOV DL,BL
	DEC DL
	MOV AL,16
	MUL DL
	MOV WORD PTR CS:RDSTT_0,3*12		;X
	MOV WORD PTR CS:RDSTT_1,AX		;Y
	MOV WORD PTR CS:RDSTT_2,34H
	MOV WORD PTR CS:RDSTT_3,0
	CMP BL,BYTE PTR DST2_0
	JNZ Y03
	MOV WORD PTR CS:RDSTT_3,0FFH
Y03:	MOV WORD PTR CS:RDSTT_4,5
	MOV AL,LDST0
	MOV DL,BYTE PTR DST2_0[BX]
	DEC DL
	MUL DL
	ADD AX,OFFSET DST0
	ADD AX,2
	MOV WORD PTR CS:RDSTT_5,AX
	MOV AX,SEG DST0
	MOV WORD PTR CS:RDSTT_6,AX
	CALL RS232T
	INC BX
	CMP BX,5				;4
	JNZ Y02
Y04:
	MOV AH,07H
	INT 21H
	CMP AL,'3'				;up arrow key
	JNE Y09
	CMP BYTE PTR DST3,0
	JE  Y06
	CMP BYTE PTR DST2_1,11
	JAE Y05
	JMP Y04
Y05:	SUB BYTE PTR DST2_1,10
	SUB BYTE PTR DST2_2,10
	SUB BYTE PTR DST2_3,10
	SUB BYTE PTR DST2_4,10
	JMP Y01
Y06:	CMP BYTE PTR DST2_0,1
	JE  Y07
	DEC BYTE PTR DST2_0
	JMP Y01
Y07:	CMP BYTE PTR DST2_1,1
	JNE Y08
	JMP Y04
Y08:	DEC BYTE PTR DST2_1
	DEC BYTE PTR DST2_2
	DEC BYTE PTR DST2_3
	DEC BYTE PTR DST2_4
	JMP Y01
Y09:
	CMP AL,'1'				;down arrow key
	JNE Y0E
	CMP BYTE PTR DST3,0
	JE  Y0B
	MOV AL,BYTE PTR DST2_4			;DST2_3
	ADD AL,10
	CMP AL,BYTE PTR DST0[0]
	JBE Y0A
	JMP Y04
Y0A:	ADD BYTE PTR DST2_1,10
	ADD BYTE PTR DST2_2,10
	ADD BYTE PTR DST2_3,10
	ADD BYTE PTR DST2_4,10
	JMP Y01
Y0B:	CMP BYTE PTR DST2_0,4			;3
	JE  Y0C
	INC BYTE PTR DST2_0
	JMP Y01
Y0C:	MOV AL,BYTE PTR DST0[0]
	CMP BYTE PTR DST2_4,AL			;DST2_3,AL
	JNE Y0D
	JMP Y04
Y0D:	INC BYTE PTR DST2_1
	INC BYTE PTR DST2_2
	INC BYTE PTR DST2_3
	INC BYTE PTR DST2_4
	JMP Y01
Y0E:
	CMP AL,'2'				;back light key
	JNE Y0F
;	XOR BYTE PTR DST4,01H
;	MOV DX,300H				;*****
;	MOV AL,BYTE PTR DST4
;	OUT DX,AL
	JMP Y04
Y0F:
	CMP AL,'4'				;MUX key
	JNZ Y10
	XOR BYTE PTR DST3,01H
	MOV WORD PTR CS:RDSTT_0,120		;X
	MOV WORD PTR CS:RDSTT_1,0		;Y
	MOV WORD PTR CS:RDSTT_2,31H
	MOV WORD PTR CS:RDSTT_3,0
	MOV WORD PTR CS:RDSTT_4,1
	XOR BX,BX
	MOV BL,BYTE PTR DST3
	MOV AX,OFFSET DST3F
	ADD AX,BX
	MOV WORD PTR CS:RDSTT_5,AX
	MOV AX,SEG DST3
	MOV WORD PTR CS:RDSTT_6,AX
	CALL RS232T
	JMP Y04
Y10:
	CMP AL,'0'				;acknowledge key
	JNZ Y11
	JMP Y13
Y11:
	CMP AL,' '				;reset key
	JNE Y12
	MOV DX,OFFSET FILE0
	MOV CX,0
	MOV AH,3CH
	INT 21H
	MOV BX,AX
	MOV CX,19619
	MOV DX,OFFSET DST0
	SUB DX,200H
	MOV AH,40H
	INT 21H
	MOV AH,3EH
	INT 21H
	JMP RESET
Y12:	JMP Y04

Y13:	MOV BL,BYTE PTR DST2_0
	XOR BH,BH
	MOV AL,BYTE PTR DST2_0[BX]
	DEC AL
	MOV DL,LDST0
	MUL DL
	ADD AX,2
	MOV WORD PTR DST7_3,AX

	CALL RS232C
	MOV WORD PTR CS:RDSTT_0,120		;X
	MOV WORD PTR CS:RDSTT_1,0		;Y
	MOV WORD PTR CS:RDSTT_2,31H
	MOV WORD PTR CS:RDSTT_3,0
	MOV WORD PTR CS:RDSTT_4,1
	XOR BX,BX
	MOV BL,BYTE PTR DST3
	MOV AX,OFFSET DST3F
	ADD AX,BX
	MOV WORD PTR CS:RDSTT_5,AX
	MOV AX,SEG DST3
	MOV WORD PTR CS:RDSTT_6,AX
	CALL RS232T

	MOV BYTE PTR DST2_0,1
	MOV BYTE PTR DST2_1,1
	MOV BYTE PTR DST2_2,2
	MOV BYTE PTR DST2_3,3
	MOV BYTE PTR DST2_4,4
Y14:	MOV BX,1
Y15:	MOV DL,BL
	DEC DL
	MOV AL,16
	MUL DL
	MOV WORD PTR CS:RDSTT_0,3*12		;X
	MOV WORD PTR CS:RDSTT_1,AX		;Y
	MOV WORD PTR CS:RDSTT_2,34H
	MOV WORD PTR CS:RDSTT_3,0
	CMP BL,BYTE PTR DST2_0
	JNZ Y16
	MOV WORD PTR CS:RDSTT_3,0FFH
Y16:	MOV WORD PTR CS:RDSTT_4,5
	MOV AL,LDST1
	MOV DL,BYTE PTR DST2_0[BX]
	DEC DL
	MUL DL
	ADD AX,2
	ADD AX,16
	MOV SI,AX
	MOV AL,BYTE PTR DST1[SI+0]
	MOV BYTE PTR DDST1[1],AL
	MOV AL,BYTE PTR DST1[SI+1]
	MOV BYTE PTR DDST1[2],AL
	MOV AL,BYTE PTR DST1[SI+2]
	MOV BYTE PTR DDST1[3],AL
	MOV AL,BYTE PTR DST1[SI+3]
	MOV BYTE PTR DDST1[4],AL
	MOV AL,2
	MOV DL,BYTE PTR DST2_0[BX]
	DEC DL
	MUL DL
	ADD AX,WORD PTR DST7_3
	MOV SI,AX
	MOV AL,BYTE PTR TC0_4
	CMP BYTE PTR DST0[SI+13],0
	JNZ Y17
	MOV AL,BYTE PTR TC0_5
Y17:	MOV BYTE PTR DDST1[0],AL
	MOV AX,OFFSET DDST1
	MOV WORD PTR CS:RDSTT_5,AX
	MOV AX,SEG DDST1
	MOV WORD PTR CS:RDSTT_6,AX
	CALL RS232T
	INC BX
	CMP BX,5				;4
	JZ  Y18
	JMP Y15
Y18:
	MOV AH,07H
	INT 21H
	CMP AL,'3'				;up arrow key
	JNE Y1D
	CMP BYTE PTR DST3,0
	JE  Y1A
	CMP BYTE PTR DST2_1,11
	JAE Y19
	JMP Y18
Y19:	SUB BYTE PTR DST2_1,10
	SUB BYTE PTR DST2_2,10
	SUB BYTE PTR DST2_3,10
	SUB BYTE PTR DST2_4,10
	JMP Y14
Y1A:	CMP BYTE PTR DST2_0,1
	JE  Y1B
	DEC BYTE PTR DST2_0
	JMP Y14
Y1B:	CMP BYTE PTR DST2_1,1
	JNE Y1C
	JMP Y18
Y1C:	DEC BYTE PTR DST2_1
	DEC BYTE PTR DST2_2
	DEC BYTE PTR DST2_3
	DEC BYTE PTR DST2_4
	JMP Y14
Y1D:
	CMP AL,'1'				;down arrow key
	JNE Y22
	CMP BYTE PTR DST3,0
	JE  Y1F
	MOV AL,BYTE PTR DST2_4			;DST2_3
	ADD AL,10
	CMP AL,BYTE PTR DST1[0]
	JBE Y1E
	JMP Y18
Y1E:	ADD BYTE PTR DST2_1,10
	ADD BYTE PTR DST2_2,10
	ADD BYTE PTR DST2_3,10
	ADD BYTE PTR DST2_4,10
	JMP Y14
Y1F:	CMP BYTE PTR DST2_0,4			;3
	JE  Y20
	INC BYTE PTR DST2_0
	JMP Y14
Y20:	MOV AL,BYTE PTR DST1[0]
	CMP BYTE PTR DST2_4,AL			;DST2_3,AL
	JNE Y21
	JMP Y18
Y21:	INC BYTE PTR DST2_1
	INC BYTE PTR DST2_2
	INC BYTE PTR DST2_3
	INC BYTE PTR DST2_4
	JMP Y14
Y22:
	CMP AL,'2'				;back light key
	JNE Y23
;	XOR BYTE PTR DST4,01H
;	MOV DX,300H				;*****
;	MOV AL,BYTE PTR DST4
;	OUT DX,AL
	JMP Y18
Y23:
	CMP AL,'4'				;MUX key
	JNZ Y24
	XOR BYTE PTR DST3,01H
	MOV WORD PTR CS:RDSTT_0,120		;X
	MOV WORD PTR CS:RDSTT_1,0		;Y
	MOV WORD PTR CS:RDSTT_2,31H
	MOV WORD PTR CS:RDSTT_3,0
	MOV WORD PTR CS:RDSTT_4,1
	XOR BX,BX
	MOV BL,BYTE PTR DST3
	MOV AX,OFFSET DST3F
	ADD AX,BX
	MOV WORD PTR CS:RDSTT_5,AX
	MOV AX,SEG DST3
	MOV WORD PTR CS:RDSTT_6,AX
	CALL RS232T
	JMP Y18
Y24:
	CMP AL,'0'				;acknowledge key
	JNZ Y27
	MOV BL,BYTE PTR DST2_0
	XOR BH,BH
	MOV AL,BYTE PTR DST2_0[BX]
	DEC AL
	MOV DL,2
	MUL DL
	ADD AX,WORD PTR DST7_3
	MOV SI,AX
	CMP BYTE PTR DST0[SI+13],0
	JNZ Y25
	MOV BYTE PTR DST0[SI+13],1
	MOV SI,WORD PTR DST7_3
	INC BYTE PTR DST0[SI+10]
	JMP Y26
Y25:	MOV BYTE PTR DST0[SI+13],0
	MOV SI,WORD PTR DST7_3
	DEC BYTE PTR DST0[SI+10]
Y26:	JMP Y14
Y27:
	CMP AL,' '				;reset key
	JNE Y28
	JMP Y00
Y28:
	CMP AL,'m'				;time range set
	JZ  Y29
	JMP Y2A
Y29:	PUSH WORD PTR DST2_0
	PUSH WORD PTR DST2_2
	MOV BL,BYTE PTR DST2_0
	XOR BH,BH
	MOV AL,BYTE PTR DST2_0[BX]
	DEC AL
	MOV DL,LDST1
	MUL DL
	ADD AX,2
	MOV SI,AX
	MOV WORD PTR DST7_4,SI			;the OFFSET in DST1
	MOV AX,WORD PTR DST1[SI+00]		;all length
	MOV WORD PTR DST6_0,AX
	MOV AX,WORD PTR DST1[SI+02]		;now start time
	MOV WORD PTR DST6_1,AX
	MOV AX,WORD PTR DST1[SI+04]		;now length
	MOV WORD PTR DST6_2,AX
	CALL TRS
	POP WORD PTR DST2_2
	POP WORD PTR DST2_0
	CALL RS232C
	MOV WORD PTR CS:RDSTT_0,120		;X
	MOV WORD PTR CS:RDSTT_1,0		;Y
	MOV WORD PTR CS:RDSTT_2,31H
	MOV WORD PTR CS:RDSTT_3,0
	MOV WORD PTR CS:RDSTT_4,1
	XOR BX,BX
	MOV BL,BYTE PTR DST3
	MOV AX,OFFSET DST3F
	ADD AX,BX
	MOV WORD PTR CS:RDSTT_5,AX
	MOV AX,SEG DST3
	MOV WORD PTR CS:RDSTT_6,AX
	CALL RS232T
	JMP Y14
Y2A:	JMP Y18


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

TRS	PROC
	PUSH AX
	PUSH BX
	PUSH CX
	PUSH DX
	PUSH SI
	PUSH DI
	PUSH BP
	MOV AX,WORD PTR DST6_0
	MOV WORD PTR DST5_0,AX			;all length
	MOV AX,WORD PTR DST6_2			;now length
	MOV WORD PTR DST5_1,AX
	MOV AX,WORD PTR DST6_1
	MOV WORD PTR DST5_2,AX			;now start time
	ADD AX,WORD PTR DST6_2
	MOV WORD PTR DST5_3,AX			;now end time

	CALL RS232C

	MOV WORD PTR CS:RDSTT_0,0*12		;X
	MOV WORD PTR CS:RDSTT_1,0*16		;Y
	MOV WORD PTR CS:RDSTT_2,34H
	MOV WORD PTR CS:RDSTT_3,0
	MOV WORD PTR CS:RDSTT_4,5
	MOV AX,OFFSET ATC0
	MOV WORD PTR CS:RDSTT_5,AX
	MOV AX,SEG ATC0
	MOV WORD PTR CS:RDSTT_6,AX
	CALL RS232T
	MOV WORD PTR CS:RDSTT_0,0*12		;X
	MOV WORD PTR CS:RDSTT_1,1*16		;Y
	MOV WORD PTR CS:RDSTT_2,34H
	MOV WORD PTR CS:RDSTT_3,0

⌨️ 快捷键说明

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