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

📄 ht1621.dt

📁 HT1621的驱动 芯片用EM78P458
💻 DT
字号:
;FOR LCM 1621
;R1--传递指令码/显示码
;R0--传递地址


;单LCD屏+MPU+双PLL麦克风程序

;芯片为EM78P447SBP
;振荡模式为4MHz晶振
;看门狗关,指令周期为2个CLOCK

;==============寄存器的定义========================
	R0 == 0X00
	TCC == 0X01
	PC == 0X02

	SREG == 0X03
	C==0
	DC==1
	Z==2
	P==3
	T==4
	PS0==5
	PS1==6
	CMPOUT==7

	R4 ==  0X04

	P5 == 0X05
	K1 == 0
	K2 == 1
	K3 == 2
	K4 == 3
	K5 == 4
	DAT== 5
	_WR== 6
	CS == 7
	
	P6 == 0X06
	AB1==0
	AF1==1
	ANT1==2
	RF1==3
	AB2==4		;无上拉
	AF2==5
	ANT2==6
	RF2==7
	
	
	
	

	IOCB == 0XB	;下拉控制
	IOCC == 0XC	;漏极开路控制
	IOCD == 0XD	;上拉控制
	
	R_F == 0XF	;中断状态寄存器
	IOCF== 0XF	;IOW中断屏蔽寄存器
		
;ADC Contro Registers
	ADDATA == 0XA	;MOV
	ADCONR == 0X9	;MOV
	ADRUN==4
	ADPD==3
	ADIS2==2	;模拟输入选择
	ADIS1==1
	ADIS0==0
	ADCONC == 0XA	;IOW
	VREFS==7	;参考电压,0为工作电压
	CE==6
	COE==5
	IMS2==4		;模拟和数据I/O口选择
	IMS1==3
	IMS0==2
	CKR1==1		;ADC时钟分频数
	CKR0==0
	GCON   == 0X9	;IOW
	OP2E==7		;增溢放大器2,==0时OP2关闭
	OP1E==6
	G22==5		;增溢选择
	G21==4
	G20==3
	G12==2
	G11==1
	G10==0
		

;============用户寄存器========================================

	TMP	==0XB
	FG	==0XC		;低两位
;	DATA	==0XD
;	==0XE		;低两位
	S1      == 0X10		;通用寄存器
	S2      == 0X11
	S3      == 0X12

	CNT0 	== 0X14
	CNT1	== 0X15
	ADRL	== 0X16
	ADRH	== 0X17
	DATA	== 0X18
	ADDR	== 0X19
;	== 0X1A
;	== 0X1B
;	== 0X1C
;	== 0X1D
;	== 0X1E
;	== 0X1F
;==========================STAR0===============================
	ORG	0
	JMP	INITIAL
	ORG	1		;软件中断地址
	RETI
	ORG	8		;硬件中断地址
	RETI
	ORG	10
;---------------------------------------------
CODEB:				;七段LED数据
	ADD	PC, A
	RETL 	@0XEB		;0
	RETL 	@0X0A		;1
	RETL 	@0X29		;2
	RETL 	@0X8F		;3
	RETL 	@0X4E		;4
	RETL 	@0XC6		;5
	RETL 	@0XE6		;6
	RETL 	@0X8A		;7
	RETL 	@0XEF		;8
	RETL 	@0XCF		;9
;----------------------------------------------
INITB:
	ADD	PC,A
	RETL 	@0X00		;0
	RETL 	@0X01		;1
	RETL 	@0X02		;2
	RETL 	@0X04		;3
	RETL 	@0X08		;4
	RETL 	@0X0E		;5
	RETL 	@0X0B		;6
	RETL 	@0X0E		;7
	RETL 	@0X0B		;8
	RETL 	@0X0E		;9
	RETL 	@0X0B		;10
	RETL 	@0X0F		;11
	RETL 	@0X0B		;12
	RETL 	@0X08		;13
	RETL 	@0X00		;14
	RETL 	@0X00		;15
	RETL 	@0X00		;16
	RETL 	@0X0E		;17
	RETL 	@0X0B		;18
	RETL 	@0X0E		;19
	RETL 	@0X0B		;20
	RETL 	@0X0E		;21
	RETL 	@0X0B		;22
	RETL 	@0X0F		;23
	RETL 	@0X0B		;24
	RETL 	@0X08		;25
	RETL 	@0X08		;26
	RETL 	@0X00		;27
	RETL 	@0X00		;28
	RETL 	@0X01		;29
	RETL 	@0X01		;30
;----------------------------------------------
FREQB:
	ADD	PC,A
	RETL 	@0X00		;0    低位数=0,25,50,75无显示
	RETL 	@0X01		;1    低位数=1,25显示,50,75无显示
	RETL 	@0X02		;2	低位数=2,50显示,25,75无显示
	RETL 	@0X03		;3	低位数=3,75显示,25,50无显示
	RETL 	@0X10		;4    高位数为小数点后的一个七段要显示的数
	RETL 	@0X11		;5
	RETL 	@0X12		;6
	RETL 	@0X13		;7
	RETL 	@0X20		;8
	RETL 	@0X21		;9
	RETL 	@0X22		;10
	RETL 	@0X23		;11
	RETL 	@0X30		;12
	RETL 	@0X31		;13
	RETL 	@0X32		;14
	RETL 	@0X33		;15
	RETL 	@0X40		;16
	RETL 	@0X41		;17
	RETL 	@0X42		;18
	RETL 	@0X43		;19
	RETL 	@0X50		;20
	RETL 	@0X51		;21
	RETL 	@0X52		;22
	RETL 	@0X53		;23
	RETL 	@0X60		;24
	RETL 	@0X61		;25
	RETL 	@0X62		;26
	RETL 	@0X63		;27
	RETL 	@0X70		;28
	RETL 	@0X71		;29
	RETL 	@0X72		;30
	RETL 	@0X73		;31
;----------------------------------------------
INITIAL:
	MOV	A,@0B10111011	;ANT1,ANT2下接
	IOW	IOCB
	MOV	A,@0B11111111	
	IOW	IOCC
	MOV	A,@0B11111110	;AB1上拉,AB2无上拉,外接
	IOW	IOCD
	MOV	A,@0B00011111
	IOW	P5
	MOV	A,@0B11111111
	IOW	P6
	DISI
INI1621:
	MOV	A,@0X01		;SYS EN
	MOV	DATA,A
	CALL	INCOM
	MOV	A,@0X03
;	MOV	A,@0X18		;RC 256K
	MOV	DATA,A
	CALL	INCOM
	MOV	A,@0X29		;BIAS 1/3(USE COM0-COM3)
	MOV	DATA,A
	CALL	INCOM
	
	CALL	DISALL		;开显示
W1S:	MOV	A,@0XC8		;延时1S
	MOV	S1,A
WW:	CALL	DELAY5MS
	DJZ	S1
	JMP	WW
	CALL	CLRALL		;关显示

	MOV	A,@0X21		;显示数据起始位置
	MOV	R4,A
	MOV	A,@0X01
	MOV	ADDR,A
INILCD:MOV	A,ADDR
	CALL	INITB
	MOV	R0,A
	MOV	DATA,A
	CALL	INDAT
	INC	R4
	INC	ADDR
	MOV	A,ADDR
	XOR	A,@31
	JBS	SREG,Z
	JMP	INILCD
WHILE:
	MOV	A,P5		;检测K1-K5,显示R1,R2,R3
	AND	A,@0X1F
	CALL	FREQB
	MOV	S2,A
	SWAP	S2
	MOV	A,S2
	AND	A,@0X0F
	CALL	CODEB
	MOV	S3,A
	SWAP	S3
	MOV	A,S3
	AND	A,@0X0F
	MOV	S1,A
	MOV	A,0X25
	AND	A,@0X01
	OR	A,S1
	MOV	DATA,A
	MOV	A,@0X5
	MOV	ADDR,A
	CALL	INDAT
	SWAP	S3
	MOV	A,S3
	AND	A,@0X0F
	MOV	DATA,A
	INC	ADDR
	CALL	INDAT
	SWAP	S2
	MOV	A,S2
	AND	A,@0X0F
	MOV	S3,A
	XOR	A,@0X01
	JBS	SREG,Z
	JMP	S50
	MOV	A,0X29
	OR	A,@0X01		;第9位R1=1
	MOV	0X29,A
	MOV	A,0X27
	AND	A,@0X0E
	MOV	0X27,A
	MOV	A,0X25
	AND	A,@0X0E
	MOV	0X25,A
	JMP	LOAD
S50:	MOV	A,S3
	XOR	A,@0X02
	JBS	SREG,Z
	JMP	S75
	MOV	A,0X27
	OR	A,@0X01		;第7位R2=1
	MOV	0X27,A
	MOV	A,0X29
	AND	A,@0X0E
	MOV	0X29,A
	MOV	A,0X25
	AND	A,@0X0E
	MOV	0X25,A
	JMP	LOAD
S75:MOV	A,0X25
	OR	A,@0X01		;第5位R3=1
	MOV	0X25,A
	MOV	A,0X29
	AND	A,@0X0E
	MOV	0X29,A
	MOV	A,0X27
	AND	A,@0X0E
	MOV	0X27,A
LOAD:
	MOV	A,0X25
	MOV	DATA,A
	MOV	A,@0X05
	MOV	ADDR,A
	CALL	INDAT
	MOV	A,0X27
	MOV	DATA,A
	INC	ADDR
	INC	ADDR
	CALL	INDAT
	MOV	A,0X29
	MOV	DATA,A
	INC	ADDR
	INC	ADDR
	CALL	INDAT
CH_ANT1:
	JBS	P6,ANT1
	JMP	ANT_10
	MOV	A,0X3E		;第30位R4=1
	OR	A,@0X08
	MOV	0X3E,A
	MOV	DATA,A
	MOV	A,@0X1E
	MOV	ADDR,A
	CALL	INDAT
	JMP	CANT2
ANT_10:	MOV	A,0X3E		;第30位R4=0
	AND	A,@0X07
	MOV	0X3E,A
	MOV	DATA,A
	MOV	A,@0X1E
	MOV	ADDR,A
	CALL	INDAT
CANT2:	JBS	P6,ANT2
	JMP	ANT_20
	MOV	A,0X39		;第25位R11=1
	OR	A,@0X01
	MOV	0X39,A
	MOV	DATA,A
	MOV	A,@0X19
	MOV	ADDR,A
	CALL	INDAT
	JMP	CH_AB
ANT_20:	MOV	A,0X39		;第25位R11=0
	AND	A,@0X0E
	MOV	0X39,A
	MOV	DATA,A
	MOV	A,@0X19
	MOV	ADDR,A
	CALL	INDAT
CH_AB:	JBS	P6,AB1
	JMP	AB_10
	MOV	A,0X3E		
	OR	A,@0X04		;第30位R5=1
	AND	A,@0XFD		;第30位R6=0
	MOV	0X3E,A
	MOV	DATA,A
	MOV	A,@0X1E
	MOV	ADDR,A
	CALL	INDAT
	JMP	CAB2
AB_10:	MOV	A,0X3E		
	OR	A,@0X02		;第30位R6=1
	AND	A,@0XFB		;第30位R5=0
	MOV	0X3E,A
	MOV	DATA,A
	MOV	A,@0X1E
	MOV	ADDR,A
	CALL	INDAT
CAB2:	JBS	P6,AB2
	JMP	AB_20
	MOV	A,0X39		
	OR	A,@0X02		;第25位R12=1
	AND	A,@0XFB		;第25位R13=0
	MOV	0X39,A
	MOV	DATA,A
	MOV	A,@0X19
	MOV	ADDR,A
	CALL	INDAT
	JMP	INIADC
AB_20:	MOV	A,0X39		
	OR	A,@0X04		;第25位R13=1
	AND	A,@0XFD		;第25位R12=0
	MOV	0X39,A
	MOV	DATA,A
	MOV	A,@0X19
	MOV	ADDR,A
	CALL	INDAT
INIADC:
	MOV	A,@0B00011100	;工作电压作参考,AD0-AD7模拟输入,T=fosc/4
	IOW	ADCONC
	CLR	R_F
	MOV	A,ADCONR
	AND	A,@0XF8
	OR	A,@0X01		;AD2(AF1)输入
	MOV	ADCONR,A
	BS	ADCONR,ADPD	;启动AD采样
	MOV	A,@0B00000000
	IOW	GCON		;关增溢放大器
	BS	ADCONR,ADRUN	;启动AD转换
CH_AF1:	JBC	ADCONR,ADRUN
	JMP	CH_AF1
	MOV	A,ADDATA
	MOV	TMP,A
	MOV	A,@0X1C
	MOV	ADRL,A
	MOV	A,@0X1D
	MOV	ADRH,A
	CLR	FG
	CALL	DISVUTS
	
	CLR	R_F
	MOV	A,ADCONR
	AND	A,@0XF8
	OR	A,@0X03		;AD4(RF1)输入
	MOV	ADCONR,A
	BS	ADCONR,ADRUN	;启动AD转换
CH_RF1:	JBC	ADCONR,ADRUN
	JMP	CH_RF1
	MOV	A,ADDATA
	MOV	TMP,A
	MOV	A,@0X0E
	MOV	ADRL,A
	MOV	A,@0X0D
	MOV	ADRH,A
	BS	FG,0
	CALL	DISVUTS
	
	CLR	R_F
	MOV	A,ADCONR
	AND	A,@0XF8
	OR	A,@0X05		;AD4(RF1)输入
	MOV	ADCONR,A
	BS	ADCONR,ADRUN	;启动AD转换
CH_RF2:	JBC	ADCONR,ADRUN
	JMP	CH_RF2
	MOV	A,ADDATA
	MOV	TMP,A
	MOV	A,@0X1B
	MOV	ADRL,A
	MOV	A,@0X1A
	MOV	ADRH,A
	BS	FG,0
	CALL	DISVUTS
	
	CLR	R_F
	MOV	A,ADCONR
	AND	A,@0XF8
	OR	A,@0X07		;AD4(RF1)输入
	MOV	ADCONR,A
	BS	ADCONR,ADRUN	;启动AD转换
AD_AF2:	JBC	ADCONR,ADRUN
	JMP	AD_AF2
	MOV	A,ADDATA
	MOV	TMP,A
	MOV	A,@0X0F
	MOV	ADRL,A
	MOV	A,@0X10
	MOV	ADRH,A
	BS	FG,0
	CALL	DISVUTS
	MOV	A,@0B00000000	;AD0模拟输入,AD1-AD7O数字I/O输入,T=fosc/4
	IOW	ADCONC
	JMP	WHILE
;===============================================
;  18    36    54   72     90     108    126
;  0.35  0.7   1    1.4    1.76   2.1    2.47
;
;	ADRL    ADRH
; AF1	1C(L)   1D(H)    V
;	
; RF1	0E(H)   0D(L)    U
;	
; AF2	1B(H)   1A(L)    T
;	
; RF2	0F(L)   10(H)    S
;
; FG_0 =0   AF1
; FG_0 =1   RF1,AF2,RF2
DISVUTS:
	MOV	A,@0X7E		;126
	SUB	A,TMP
	JBS	SREG,C
	JMP	CH_AF2
	MOV	A,ADRL
	ADD	A,@0X20
	MOV	R4,A
	MOV	A,@0X0F		;V1,V2,V3,V4=1
	MOV	R0,A
	MOV	DATA,A
	MOV	A,ADRL
	MOV	ADDR,A
	CALL	INDAT
	MOV	A,ADRH
	ADD	A,@0X20
	MOV	R4,A
	JBC	FG,0
	JMP	SIG11
	MOV	A,R0
	OR	A,@0X0E
	JMP	SIG21
SIG11:
	MOV	A,R0
	OR	A,@0X07		;V5,V6,V7=1
SIG21:
	MOV	R0,A
	MOV	DATA,A
	MOV	A,ADRH
	MOV	ADDR,A
	CALL	INDAT
	RET
CH_AF2:
	MOV	A,@0X6C		;108
	SUB	A,TMP
	JBS	SREG,C
	JMP	CH_AF3
	MOV	A,ADRL
	ADD	A,@0X20
	MOV	R4,A
	MOV	A,@0X0F		;V1,V2,V3,V4=1
	MOV	R0,A
	MOV	DATA,A
	MOV	A,ADRL
	MOV	ADDR,A
	CALL	INDAT
	MOV	A,ADRH
	ADD	A,@0X20
	MOV	R4,A
	JBC	FG,0
	JMP	SIG12
	MOV	A,R0
	OR	A,@0X0C		;V5,V6=1
	AND	A,@0X0D		;V7=0
	JMP	SIG22
SIG12:
	MOV	A,R0
	OR	A,@0X03		;V5,V6=1
	AND	A,@0X0B		;V7=0
SIG22:
	MOV	R0,A
	MOV	DATA,A
	MOV	A,ADRH
	MOV	ADDR,A
	CALL	INDAT
	RET
CH_AF3:
	MOV	A,@0X5A		;90
	SUB	A,TMP
	JBS	SREG,C
	JMP	CH_AF4
	MOV	A,ADRL
	ADD	A,@0X20
	MOV	R4,A
	MOV	A,@0X0F		;V1,V2,V3,V4=1
	MOV	R0,A
	MOV	DATA,A
	MOV	A,ADRL
	MOV	ADDR,A
	CALL	INDAT
	MOV	A,ADRH
	ADD	A,@0X20
	MOV	R4,A
	JBC	FG,0
	JMP	SIG13
	MOV	A,R0
	OR	A,@0X08		;V5=1
	AND	A,@0X09		;V6,V7=0
	JMP	SIG23
SIG13:
	MOV	A,R0
	OR	A,@0X01		;V5=1
	AND	A,@0X09		;V6,V7=0
SIG23:
	MOV	R0,A
	MOV	DATA,A
	MOV	A,ADRH
	MOV	ADDR,A
	CALL	INDAT
	RET
CH_AF4:
	MOV	A,@48		;72
	SUB	A,TMP
	JBS	SREG,C
	JMP	CH_AF5
	MOV	A,ADRL
	ADD	A,@0X20
	MOV	R4,A
	MOV	A,@0X0F		;V1,V2,V3,V4=1
	MOV	R0,A
	MOV	DATA,A
	MOV	A,ADRL
	MOV	ADDR,A
	CALL	INDAT
	MOV	A,ADRH
	ADD	A,@0X20
	MOV	R4,A
	JBC	FG,0
	JMP	SIG14
	MOV	A,R0
	AND	A,@0X01		;V5,V6,V7=0
	JMP	SIG24
SIG14:
	MOV	A,R0
	AND	A,@0X08		;V5,V6,V7=0
SIG24:
	MOV	R0,A
	MOV	DATA,A
	MOV	A,ADRH
	MOV	ADDR,A
	CALL	INDAT
	RET
CH_AF5:
	MOV	A,@36		;54
	SUB	A,TMP
	JBS	SREG,C
	JMP	CH_AF6
	MOV	A,ADRL
	ADD	A,@0X20
	MOV	R4,A
	MOV	A,@0X07		;V1,V2,V3=1, V4=0
	MOV	R0,A
	MOV	DATA,A
	MOV	A,ADRL
	MOV	ADDR,A
	CALL	INDAT
	MOV	A,ADRH
	ADD	A,@0X20
	MOV	R4,A
	JBC	FG,0
	JMP	SIG15
	MOV	A,R0
	AND	A,@0X01		;V5,V6,V7=0
	JMP	SIG25
SIG15:
	MOV	A,R0
	AND	A,@0X08		;V5,V6,V7=0
SIG25:
	MOV	R0,A
	MOV	DATA,A
	MOV	A,ADRH
	MOV	ADDR,A
	CALL	INDAT
	RET
CH_AF6:
	MOV	A,@24		;36
	SUB	A,TMP
	JBS	SREG,C
	JMP	CH_AF7
	MOV	A,ADRL
	ADD	A,@0X20
	MOV	R4,A
	MOV	A,@0X03		;V1,V2=1,V3,V4=0
	MOV	R0,A
	MOV	DATA,A
	MOV	A,ADRL
	MOV	ADDR,A
	CALL	INDAT
	MOV	A,ADRH
	ADD	A,@0X20
	MOV	R4,A
	JBC	FG,0
	JMP	SIG16
	MOV	A,R0
	AND	A,@0X01		;V5,V6,V7=0
	JMP	SIG26
SIG16:
	MOV	A,R0
	AND	A,@0X08		;V5,V6,V7=0
SIG26:
	MOV	R0,A
	MOV	DATA,A
	MOV	A,ADRH
	MOV	ADDR,A
	CALL	INDAT
	RET
CH_AF7:
	MOV	A,@12		;18
	SUB	A,TMP
	JBS	SREG,C
	JMP	CH_AF8
	MOV	A,ADRL
	ADD	A,@0X20
	MOV	R4,A
	MOV	A,@0X01		;V1=1, V2,V3,V4=0
	MOV	R0,A
	MOV	DATA,A
	MOV	A,ADRL
	MOV	ADDR,A
	CALL	INDAT
	MOV	A,ADRH
	ADD	A,@0X20
	MOV	R4,A
	JBC	FG,0
	JMP	SIG17
	MOV	A,R0
	AND	A,@0X01		;V5,V6,V7=0
	JMP	SIG27
SIG17:
	MOV	A,R0
	AND	A,@0X08		;V5,V6,V7=0
SIG27:
	MOV	R0,A
	MOV	DATA,A
	MOV	A,ADRH
	MOV	ADDR,A
	CALL	INDAT
	RET
CH_AF8:
	MOV	A,ADRL
	ADD	A,@0X20
	MOV	R4,A
	MOV	A,@0X00		;V1,V2,V3,V4=0
	MOV	R0,A
	MOV	DATA,A
	MOV	A,ADRL
	MOV	ADDR,A
	CALL	INDAT
	MOV	A,ADRH
	ADD	A,@0X20
	MOV	R4,A
	JBC	FG,0
	JMP	SIG18
	MOV	A,R0
	AND	A,@0X01		;V5,V6,V7=0
	JMP	SIG28
SIG18:
	MOV	A,R0
	AND	A,@0X08		;V5,V6,V7=0
SIG28:
	MOV	R0,A
	MOV	DATA,A
	MOV	A,ADRH
	MOV	ADDR,A
	CALL	INDAT
	RET
;========================HT1621================
CLRALL:
	CLR	ADDR
	CLR	DATA
LPL:	CALL	INDAT
	INC	ADDR
	MOV	A,@0X20
	XOR	A,ADDR
	JBS	SREG,Z
	JMP	LPL
	RET
;===============================================
DISALL:
	CLR	ADDR
	MOV	A,@0X0F
	MOV	DATA,A
LPH:	CALL	INDAT
	INC	ADDR
	MOV	A,@0X20
	XOR	A,ADDR
	JBS	SREG,Z
	JMP	LPH
	RET
;===============================================
INCOM:
	BC	P5,CS
	NOP
	MOV	A,@0X03
	MOV	S1,A
	MOV	A,@0X80
	MOV	TMP,A
SPT1:	RLC	TMP
	JBS	SREG,C
	JMP	ST0
	BS	P5,DAT
	JMP	SWT0
ST0:	BC	P5,DAT
SWT0:	NOP
	BC	P5,_WR
	NOP
	BS	P5,_WR
	NOP
	DJZ	S1
	JMP	SPT1
	MOV	A,@0X09
	MOV	S1,A
SPT2:	RLC	DATA
	JBS	SREG,C
	JMP	ST1
	BS	P5,DAT
	JMP	SWT1
ST1:	BC	P5,DAT
SWT1:	NOP
	BC	P5,_WR
	NOP
	BS	P5,_WR
	NOP
	DJZ	S1
	JMP	SPT2
	BS	P5,CS
	RET
;===============================================
INDAT:
	BC	P5,CS
	NOP
	MOV	A,@0X03
	MOV	S1,A
	MOV	A,@0XA0
	MOV	TMP,A
SPP1:	RLC	TMP
	JBS	SREG,C
	JMP	SB0
	BS	P5,DAT
	JMP	SWR0
SB0:	BC	P5,DAT
SWR0:	NOP
	BC	P5,_WR
	NOP
	BS	P5,_WR
	NOP
	DJZ	S1
	JMP	SPP1
	MOV	A,ADDR
	MOV	TMP,A
	RLC	TMP		;ADDRESS(FROM 0-31)
	RLC	TMP
	MOV	A,@0X06
	MOV	S1,A
SPP2:	RLC	TMP
	JBS	SREG,C
	JMP	SB1
	BS	P5,DAT
	JMP	SWR1
SB1:	BC	P5,DAT
SWR1:	NOP
	BC	P5,_WR
	NOP
	BS	P5,_WR
	NOP
	DJZ	S1
	JMP	SPP2
	MOV	A,DATA
	MOV	TMP,A
	RLC	TMP
	RLC	TMP
	RLC	TMP
	RLC	TMP
	MOV	A,@0X04
	MOV	S1,A
SPP3:	RLC	TMP
	JBS	SREG,C
	JMP	SB2
	BS	P5,DAT
	JMP	SWR2
SB2:	BC	P5,DAT
SWR2:	NOP
	BC	P5,_WR
	NOP
	BS	P5,_WR
	NOP
	DJZ	S1
	JMP	SPP3
	NOP
	BS	P5,CS
	RET
;==============================================================
DELAY5MS:			;延时5mS
	MOV	A, @10
	MOV	CNT0, A
P0_DLY:
	NOP
	MOV	A, @199
	MOV	CNT1, A
P0_LP:
	NOP
	NOP
	NOP
	DJZ	CNT1		;5 X 199 (LP_CNT1 = 199) = 995
	JMP	P0_LP		;5  +  995(P0_LP所有的指令) = 1000
	DJZ	CNT0		;1000 X 10 (LP_CNT0 = 2) = 10000
	JMP	P0_DLY		;10000 + 1 (CALL)+ 1(RET) + 2(2MOV) + 1(CALL) = 10005
	RET			;10005 * 0.5 = 5.0025(mS)
;===============================================================







⌨️ 快捷键说明

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