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

📄 pp.asm

📁 实现抢答器的功能
💻 ASM
字号:
		ORG	0000H
		AJMP	MAIN
		ORG	000BH
		LJMP	PTF0
		ORG	001BH
		LJMP	PTF1
MAIN:		MOV	R1,#30
		MOV	R2,#60
		MOV	35H,20		  ;20次1S
		SETB 	ET0
         	SETB	 ET1
		MOV	TH0,#3CH	  ;定时器0赋值
		MOV	TL0,#0B0H
		MOV	TH1,#3CH	  ;定时器1赋值
		MOV	TL1,#0B0H
		MOV	TMOD,#01H         ;T0计数器方式1,gate为0
		MOV	TMOD,#10H	  ;T1计数器方式1,gate为0
					;MOV	SCON待定
MAIN0:		JNB    	P3.3,FD           ;抢答开始
		JNB	P3.3,INIT0
		AJMP	MAIN0

INIT0:		SETB	TR0	 	 ;开启定时器
		SETB	EA		 ;允许中断		

START:		JNB	P1.0,FD          ;抢答过程
		JNB	P1.0,D1
		JNB	P1.1,FD
		JNB	P1.1,D2
		JNB	P1.2,FD
		JNB	P1.2,D3
		JNB	P1.3,FD
		JNB	P1.3,D4
		JNB	P1.4,FD
		JNB	P1.4,D5
		JNB	P1.5,FD
		JNB	P1.5,D6
		JNB	P1.6,FD
		JNB	P1.6,D7
		JNB	P1.7,FD
		JNB	P1.7,D8
		CJNE	R1,#0,START
		CLR	TR0
		LCALL	NOISE
		AJMP	MAIN	

FD:		MOV	R3,#250 	  ;由12MHZ晶震频率计算出的100MS防抖
FD0:		MOV	R4,#200
FD1:		DJNZ	R4,FD1
		DJNZ	R3,FD0
		RET

D1:		CLR	TR0     	  ;关闭定时器
		MOV	R6,#1
		LCALL	DISPLAY2	  ;显示抢答者号码
		LCALL	NOISE		  ;报警		 
		LCALL	ANS

D2:		CLR	TR0     	  
		MOV	R6,#2
		LCALL	DISPLAY2	 
		LCALL	NOISE		 
		LCALL	ANS

D3:		CLR	TR0     	  
		MOV	R6,#3
		LCALL	DISPLAY2	 
		LCALL	NOISE		 
		LCALL	ANS

D4:		CLR	TR0     	  
		MOV	R6,#4
		LCALL	DISPLAY2	 
		LCALL	NOISE		 
		LCALL	ANS

D5:		CLR	TR0     	  
		MOV	R6,#5
		LCALL	DISPLAY2	 
		LCALL	NOISE		 
		LCALL	ANS

D6:		CLR	TR0     	  
		MOV	R6,#6
		LCALL	DISPLAY2	 
		LCALL	NOISE		 
		LCALL	ANS
		
D7:		CLR	TR0     	  
		MOV	R6,#7
		LCALL	DISPLAY2	 
		LCALL	NOISE		 
		LCALL	ANS

D8:		CLR	TR0     	  
		MOV	R6,#8
		LCALL	DISPLAY2	 
		LCALL	NOISE		 
		LCALL	ANS

ANS:		SETB	TR1		  ;开启计数器2
   		LCALL	DISPLAY1	  ;显示时间
		CJNE	R5,#0,ANS
		LCALL	NOISE
		LCALL	RESTART

RESTART:	JNB	P3.2,FD3
FD3:		LCALL	FD	
		JNB	P3.2,M0
M0:		LJMP	MAIN

PTF0:		MOV	TH0,#3CH	 
		MOV	TL0,#0B0H
		MOV	A,R1                    
		LCALL	DISPLAY1
		DJNZ	35H,PTF00
		DEC	R1
PTF00:		RETI

PTF1:		MOV	TH0,#3CH	 
		MOV	TL0,#0B0H
		MOV	A,R2                  
		LCALL	DISPLAY1
		DJNZ	35H,PTF10
		DEC	R2
PTF10:		RETI
		
		
DISPLAY1:	MOV	R7,#2		 ;书180页,串口静态显示	
		MOV	B,#10
		DIV	AB		 ;将A分解成十位与个位,分别放于A与B
		MOV	7FH,B
		MOV	7EH,A
		MOV	A,7FH
		ACALL	DISPLAY
		MOV	A,7EH
		ACALL	DISPLAY	

DISPLAY2:	MOV	A,R6
DISPLAY:	MOV	DPTR,#SEGTAB
		MOVC	A,@A+DPTR
		MOV	SBUF,A
		RET
SEGTAB:		DB	3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH	     ;0,1,2,3,4,5,6,7,8,9	

NOISE:		MOV	R6,#3		;蜂鸣器子程序
BEEPL:		CLR	P2.7
		LCALL	DEL2
		SETB	P2.7
		LCALL	DEL1
		DJNZ	R6,BEEPL
		RET
DEL1:		MOV	R7,#20
DEL2:		MOV	R7,#10
		SJMP	DEL3
DEL3:		MOV	R3,#0C4H
DEL4:		MOV	R4,#50H
		DJNZ	R4,$
		DJNZ	R3,DEL4
		DJNZ	R7,DEL3
		RET	


END

⌨️ 快捷键说明

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