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

📄 bus-tx.asm

📁 无线遥控玩具汽车源程序
💻 ASM
字号:
;五功能遥控车发射程序.
;MCU:2051
;OSC:12M
;DATE:08.05.18
;功能:
;前进(F)
;后退(B),
;左转(L),
;右转(R).
;加速(T).
;作者:徐增钟
;===================================================================================

KEY	EQU	P3		
DATAOUT	BIT	P1.0		;数据输出口.
LED	BIT	P1.1		;发射指示灯.
KEYBUF	EQU	70H		;键号存放单元.
KEYMASK BIT	01H		
KEYFLAG	BIT	05H
	ORG	0000H
	AJMP	START
	ORG	000BH
	AJMP	INTTCC
	ORG	0030H
;===================================================================================
CLEAR_RAM:
      	MOV	R0,#30H		;从30H单元开始.
	MOV	R3,#127		;清除127个单元
NEXT:	MOV	@R0,#00		;清除
	INC	R1		;
	DJNZ	R3,NEXT		;127个单元清完?;
	RET
;==================================================================================
;程序初始化;
BEGIN: 
	MOV	SP,#50H		;
	MOV	P1,#00H		;
	MOV	P3,#0FFH	;
	MOV	TMOD,#01H
	MOV	TH0,#0B1H
	MOV	TL0,#0E0H
	SETB	TR0
	SETB	EA
	SETB	ET0
	CLR	KEYFLAG
	SETB	KEYMASK	
	RET
;===================================================================================
START:  
        CALL	CLEAR_RAM	;清除RAM
	CALL	BEGIN		;程序初始化;
		
LOOP:		
	CALL	KEYON		;调用KEYSCAN
	
	AJMP	LOOP
	NOP
	NOP
	NOP
	AJMP	START
;===================================================================================
INTTCC: 
	MOV	TH0,#0B1H
	MOV	TL0,#0E0H
	SETB	KEYFLAG
	RETI
;===================================================================================
KEYON:  
	MOV	A,KEY        	
	CJNE	A,#0FFH,KEYSEND	
	JB	KEYMASK,ET	
	SETB	KEYMASK			
	CLR	LED	
	MOV	R5,#2		
X2:	MOV	R3,#4		
	CALL	SEND		
	DJNZ	R5,X2		
	SETB	DATAOUT		
	CALL	DY5MS		
	MOV	P1,#00		
ET:    
	RET	
;====================================================================================
KEYSEND:
	
	SETB	LED
	CLR	KEYMASK		
	CJNE	A,#0DFH,K1	
	MOV	R3,#10		;发送10个脉冲.
	AJMP	SEND		
	RET
K1:	CJNE	A,#0EFH,K2	
	MOV	R3,#40		;发送40个脉冲.
	AJMP	SEND		
	RET
K2:	CJNE	A,#0F7H,K3	
	MOV	R3,#64		;发送64个脉冲.
	AJMP	SEND		
	RET
K3:	CJNE	A,#0FBH,K4	
	MOV	R3,#58		;发送58个脉冲.
	AJMP	SEND		
	RET
K4:	CJNE	A,#0D7H,K5	
	MOV	R3,#34		;发送34个脉冲.
	AJMP	SEND		
	RET
K5:	CJNE	A,#0DBH,K6	
	MOV	R3,#28		;发送28个脉冲.
	AJMP	SEND		
	RET
K6:	CJNE	A,#0E7H,K7	
	MOV	R3,#46		;发送46个脉冲.
	AJMP	SEND		
	RET
K7:	CJNE	A,#0EBH,K8	
	MOV	R3,#52		;发送52个脉冲.
	AJMP	SEND		
K8:	CJNE	A,#0FFH,KEXIT	
KEXIT:  
	RET
;===================================================================================
DOUT:
	SETB	DATAOUT		
	CALL	DYMS5		
	CLR	DATAOUT		
	CALL	DYMS5
	DJNZ	R3,DOUT		
	MOV	P2,#00
	RET
SEND:  
	MOV	R1,#04				
N1:	SETB	DATAOUT	
	MOV	R4,#255
D1:     NOP
	NOP
	NOP
	NOP
	DJNZ	R4,D1	
	CLR	DATAOUT		
	CALL	DYMS5
	DJNZ	R1,N1
	AJMP	DOUT
	NOP
	NOP
	AJMP	START
;===================================================================================	
DYMS5:  
	MOV	R6,#250
D2:	
	DJNZ	R6,D2
	RET
;==================================================================================

DY5MS:
	MOV	R5,#4
D3:	MOV	R3,#248
	DJNZ	R3,$
	DJNZ	R5,D3
	RET	
;==================================================================================
	END

⌨️ 快捷键说明

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