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

📄 new.asm

📁 二进制小数转为十进制BCD码的汇编程序
💻 ASM
字号:
;		R0 		LED显示标志,全程使用
;		R1		缓冲区读写标志,0:不可读;1:可读
;		R2R3	临时使用
;		R5R4	T0数据缓冲寄存器
;		R7R6	常数
		LED1 	DATA 	30H
		LED2 	DATA 	31H
		LED3	DATA 	32H
		LED4 	DATA 	33H
		SPEED1	DATA	34H
		SPEED2	DATA	35H
		LEDB1 	DATA 	36H
		LEDB2 	DATA 	37H
		LEDB3	DATA 	38H
		LEDB4 	DATA 	39H
		MUL1	DATA	40H
		MUL2	DATA	41H
		PMODE	DATA	42H
		EN1		BIT 	P3.0
		EN2 	BIT		P3.1
		EN3 	BIT 	P3.3
		EN4 	BIT 	P3.5
;**********************************************************************************
		ORG 	0000H
		AJMP 	MAIN
		ORG		0003H
		AJMP 	INTR0
		ORG 	001BH
		AJMP 	TIMER1
		ORG 	0100H
;**********************************************************************************
MAIN:	ACALL 	PTOMO
LOOP:	CJNE	R1,		#0,	LOOP_1 	    ;状态0,
		MOV		A,		R5
		SUBB	A,		SPEED2
		JZ		LOOP_0
		MOV		SPEED2,	R5
		MOV		R1,		#1
		AJMP	LOOP_1
LOOP_0:	MOV		A,		R4
		SUBB	A,		SPEED1
		JZ		LOOP
		MOV		SPEED1,	R4
		MOV		R1,		#1
LOOP_1:	CJNE	R1,		#1,		LOOP_2		;状态1,正在运行数据处理程序
		ACALL	GETSPEED
		MOV		R1,		#2
LOOP_2:	CJNE	R1,		#2,		LOOP		;状态2,计算结束,可用led显示
		MOV		LED1,	LEDB1
		MOV		LED2,	LEDB2
		MOV		LED3,	LEDB3	
		MOV		LED4,	LEDB4
		MOV		R1,		#0				
		AJMP	LOOP
;**********************************************************************************	
PTOMO:	MOV		R1,		#0
		MOV		R7,		#4EH
		MOV		R6,		#1EH
		MOV 	DPTR,	#LED_ASC
		MOV		LED1,	#0
		MOV		LED2,	#0
		MOV		LED3,	#0
		MOV		LED4,	#0
		MOV 	TMOD,	#11H	;T1为基准1ms定时,使用模式1,T0脉冲计数,使用模式1
		MOV 	TL0,	#0
		MOV 	TH0,	#0
		MOV 	TL1,	#18H	;初值应设为65536-1000
		MOV 	TH1,	#0FCH
		SETB	TR1
		SETB 	ET1
		SETB	TR0
		SETB	IT0
		SETB	EX0
		SETB 	EA	
		RET
;**********************************************************************************	 	
TIMER1:	MOV 	TL1,	#18H
		MOV 	TH1,	#0FCH
		MOV		A,		P3
		ANL		A,		#80H
		CJNE	R1,		#0,		TIMER_1
		ACALL 	DISPLAY
		RETI
TIMER_1:CJNE	R1,		#1,		TIMER_2
		ACALL	DISPLAY
TIMER_2:RETI
;**********************************************************************************	
INTR0:	MOV		R5,		TH0
		MOV		R4,		TL0
		MOV		TH0,	#0
		MOV		TL0,	#0
		RETI
;**********************************************************************************	
GETSPEED:MOV	R7,		#4EH
		MOV		R6,		#1EH
		MOV		R2,		#1H
		ACALL	DIV16
		MOV		LEDB1,	R3
		ACALL	MUL10
		ACALL	DIV16
		MOV		LEDB2,	R3
		ACALL	MUL10
		ACALL	DIV16	
		MOV		LEDB3,	R3
		ACALL	MUL10
		ACALL	DIV16
		MOV		LEDB4,	R3
		CLR		C
		MOV		A,		R6
		ADD		A,		R6
		MOV		R6,		A
		MOV		A,		R7
		ADDC	A,		R7
		MOV		R7,		A
		CLR		C
		MOV		A,		R6
		SUBB	A,		R4
		MOV		A,		R7
		SUBB	A,		R5
		JC		GETSPEED_1
		INC		LEDB4
		MOV		A,		LEDB4
		CJNE	A,		#0AH,	GETSPEED_1
		MOV		LEDB4,	#0
		INC		LEDB3
		MOV		A,		LEDB3
		CJNE	A,		#0AH,	GETSPEED_1
		MOV		LEDB3,	#0
		INC		LEDB2
		MOV		A,		LEDB2		
		CJNE	A,		#0AH,	GETSPEED_1
		MOV		LEDB2,	#0
		INC		LEDB1	
GETSPEED_1:RET
		
DIV16:	MOV		R3,		#0
DIV16_1:CLR		C
		MOV		A,		R6
		SUBB	A,		R4
		MOV		B,		A
		MOV		A,		R7
		SUBB	A,		R5
		JC		DIV16_3
DIV16_2:MOV		R7,		A
		MOV		R6,		B
		INC		R3
		AJMP	DIV16_1
DIV16_3:DJNZ	R2,		DIV16_2
		RET		

MUL10:	MOV		A,		R6
		MOV		B,		#10
		MUL		AB
		MOV		MUL1,	A
		MOV		MUL2,	B
		MOV		A,		R7
		MOV		B,		#10
		MUL		AB
		CLR		C
		ADD		A,		MUL2
		MOV		MUL2,	A
		MOV		A,		B
		ADDC	A,		#0
		MOV		R2,		A
		INC		R2
		MOV		R6,		MUL1
		MOV		R7,		MUL2
		RET
;**********************************************************************************
DISPLAY:PUSH	ACC
		DEC 	R0
		CJNE 	R0,		#0,		DIS_1
		SETB 	EN4
		MOV 	A,		LED1
		MOVC 	A,		@A+DPTR
		DEC		A
		MOV 	P1,		A
		CLR		EN1
		MOV 	R0,		#4
		AJMP 	DIS_END
DIS_1:	CJNE 	R0,		#1,		DIS_2
		SETB 	EN3
		MOV 	A,		LED4
		MOVC 	A,		@A+DPTR
		MOV 	P1,		A
		CLR 	EN4
		AJMP 	DIS_END
DIS_2:	CJNE 	R0,		#2,		DIS_3
		SETB 	EN2
		MOV 	A,		LED3
		MOVC 	A,		@A+DPTR
		MOV 	P1,		A
		CLR 	EN3
		AJMP 	DIS_END
DIS_3:	SETB 	EN1
		MOV 	A,		LED2
		MOVC 	A,		@A+DPTR
		MOV 	P1,		A
		CLR 	EN2
DIS_END:POP		ACC
		RET
;**********************************************************************************
LED_ASC:DB 		00000011B 		;0
		DB 		10011111B 		;1
		DB 		00100101B 		;2
		DB 		00001101B 		;3
		DB 		10011001B 		;4
		DB 		01001001B 		;5
		DB 		01000001B 		;6
		DB 		00011111B 		;7
		DB 		00000001B 		;8
		DB 		00001001B 		;9	

⌨️ 快捷键说明

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