propos.asm

来自「在定时器中断中做LED的PWM输出 AT89C2051实现A/D转换的C51程」· 汇编 代码 · 共 39 行

ASM
39
字号
;模拟出题程序(在P1.0上接按键)
X	DATA	30H		;被乘数存放单元。
Y	DATA	31H		;乘数存放单元。

	ORG	0000H
	LJMP	TEST
	
	ORG	100H
TEST:	LCALL	RAND
STOP:	LJMP	STOP

RAND:	SETB	P1.0		;将P1.0设置为输入状态,准备出题。
LOOP:	MOV	A,P1		;等待按键释放。
	JNB	ACC.0,LOOP
	MOV	R6,#10		;延时去抖动。
	MOV	R7,#0
LOOP1:	DJNZ	R7,LOOP1
	DJNZ	R6,LOOP1
	MOV	A,P1
	JNB	ACC.0,LOOP	;等待按键真正释放,防止连击现象。
	MOV	TMOD,#21H	;将T1设置为8位自动重装工作方式。
	MOV	TH1,#175	;对T1进行预置。
	MOV	TL1,#175
	SETB	TR1		;启动T1。
LOOP2:	MOV	A,P1		;检查按键状态。
	JB	ACC.0,LOOP2	;未按键,继续检查。
	CLR	TR1		;发现按下按键,停止T1运行。
	MOV	A,TL1		;取T1的当前值。
	CPL	A		;取反得到对应的题号。
	MOV	B,#9		;就题目分成9组。
	DIV	AB
	INC	A		;将组号0~8转换为被乘数1~9。
	MOV	X,A		;保存被乘数。
	INC	B		;将组内序号0~8转换为乘数1~9。
	MOV	Y,B		;保存乘数。
	RET

	END

⌨️ 快捷键说明

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