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

📄 counter.asm

📁 多个仿真例子
💻 ASM
字号:
COUNT	EQU	30H	;计数单元
BUF	EQU	31H	;显示缓冲区首地址,共2字节
	ORG	0
	LJMP	START
	ORG	3
	LJMP	JS
	ORG	30H
START:	MOV	SP,#60H
	SETB	IT0		;设INT0为边沿中断
	SETB	EX0		;允许INT0中断
	MOV	COUNT,#0	;计数单元清零
	SETB	P3.2		;设置INT0管脚为输入状态
	SETB	EA		;开中断
LOOP:	MOV     R6,COUNT	;取计数值
	LCALL	HTOB		;将计数值转换为BCD码
	MOV	BUF,R2		;存转换后的计数值
	MOV	BUF+1,R3
	LCALL	DISP
	SJMP	LOOP
;显示程序
;将BUF单元的2字节BCD码送数码管显示
DISP:	MOV	R0,#BUF
	MOV	R2,#2		;共显示2个字节的BCD码
	MOV	R3,#1		;位码初值
	MOV	A,@R0
	ANL	A,#0FH
	MOV	DPTR,#DISP_TAB
	MOVC	A,@A+DPTR
	MOV	P0,A		;送段码
	MOV	A,R3
	MOV	P2,#2
	LCALL	DELAY		;延时1ms
	MOV	A,@R0
	SWAP	A
	ANL	A,#0FH
	MOV	DPTR,#DISP_TAB
	MOVC	A,@A+DPTR
	MOV	P0,A		;送段码
	MOV	P2,#1
	LCALL	DELAY
	INC	R0
	MOV	A,@R0
	ANL	A,#0FH
	MOV	DPTR,#DISP_TAB
	MOVC	A,@A+DPTR
	MOV	P0,A		;送段码
	MOV	A,R3
	MOV	P2,#8
	LCALL	DELAY		;延时1ms
	MOV	A,@R0
	SWAP	A
	ANL	A,#0FH
	MOV	DPTR,#DISP_TAB
	MOVC	A,@A+DPTR
	MOV	P0,A		;送段码
	MOV	P2,#4
	LCALL	DELAY
	RET
DISP_TAB:DB	0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
	DB	80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH
;这是一个将16进制数转换为BCD码的程序
;待转换的16进制数在R6中,转换完的结果在R2R3中
;使用的寄存器A,,B,R6,R2,R3
HTOB:	MOV	A,R6
	MOV	B,#100
	DIV	AB
	MOV	R2,A
	MOV	A,B
	MOV	B,#10
	DIV	AB
	SWAP	A
	ADD	A,B
	MOV	R3,A
	RET
;计数程序
;计数值为1字节 存在COUNT单元
JS:	PUSH	PSW
	PUSH	ACC
	PUSH	DPH
	PUSH	DPL
	CLR	RS1
	SETB	RS0	;选择1区工作寄存器
	INC	COUNT
	POP	DPL
	POP	DPH
	POP	ACC
	POP	PSW
	RETI
DELAY:	MOV	R6,#250
L1:	NOP
	NOP
	DJNZ	R6,L1
	RET
	END

⌨️ 快捷键说明

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