;五功能遥控车发射程序.;MCU:2051;OSC:12M;DATE:;功能:;前进(F);后退(B),;左转(L),;右转(R).;加速(T).;作者:徐增钟;===================================================================================KEY EQU P3 DATAOUT BIT ; BIT ; EQU 70H ; 01H KEYFLAG BIT 0000H AJMP 000BH AJMP 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;===================================================================================: 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 RETK1: CJNE A,#0EFH,K2 MOV R3,#40 ;发送40个脉冲. AJMP SEND RETK2: CJNE A,#0F7H,K3 MOV R3,#64 ;发送64个脉冲. AJMP SEND RETK3: CJNE A,#0FBH,K4 MOV R3,#58 ;发送58个脉冲. AJMP SEND RETK4: CJNE A,#0D7H,K5 MOV R3,#34 ;发送34个脉冲. AJMP SEND RETK5: CJNE A,#0DBH,K6 MOV R3,#28 ;发送28个脉冲. AJMP SEND RETK6: CJNE A,#0E7H,K7 MOV R3,#46 ;发送46个脉冲. AJMP SEND RETK7: CJNE A,#0EBH,K8 MOV R3,#52 ;发送52个脉冲. AJMP SEND K8: CJNE A,#0FFH,KEXIT KEXIT: RET;=====================
实例制作基于C51的无线遥控玩具汽车 来自淘豆网m.daumloan.com转载请标明出处.