新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 51四驱无线遥控小车(200米有效距离)

51四驱无线遥控小车(200米有效距离)

作者: 时间:2016-11-29 来源:网络 收藏
源代码:;接收程序ORG  0          ;程序起始地址SJMP STAR       ;跳转到主程序ORG 30H         ;串口中断地址sjmp loop       ;跳转到中断服务程序STAR:MOV SP,#5FH     ;设置堆栈MOV SCON,#50H   ;串行数据格式(详情请参考51手册)MOV TMOD,#20H   ;定时器工作方式(请参考51手册)MOV PCON,#0     ;波特率不倍速(请参考51手册)MOV TH1,#0fdH   ;设置波特率在9600MOV TL1,#0fdH   ;设置波特率在9600SETB EA         ;开起中断clr ET1         ;关闭定时1中断SETB ES         ;开起串口中断SETB TR1        ;启动定时器1mov a,#0        ;mov p1,a        ;设置初始值,即开机p1输出00h小车不动作main:mov p1,a       ;把a值给p1端口sjmp main      ;无限循环main程序LOOP:         jnb  ri,$     ;判断接收位是否接收完clr  ri       ;接收完后清空接收位mov  a,sbuf   ;发送的数据给areti          ;返回后,a的值就会给p1END;发送程序ORG 0          ;程序起始地址SJMP START     ;跳转到主程序ORG 30H        ;串口中断地址START:MOV SP,#5FH    ;设置堆栈MOV TMOD,#20H  ;定时器工作方式(请参考51手册)MOV PCON,#0    ;波特率不倍速(请参考51手册)MOV SCON,#50H  ;串行数据格式(详情请参考51手册)MOV TH1,#0fdH  ;设置波特率在9600MOV TL1,#0fdHsetb EA        ;开起中断clr  ET1       ;关闭定时1中断setb ES        ;开起串口中断SETB TR1       ;启动定时器1main:lcall kcs      ;调用按键扫描程序jnz   key      ;有键按下则跳转到key程序段sjmp main      ;无限循环main程序kcs: mov p1,#0ffh   ;p1给初值mov a,p1       ;p1的数值给acpl a          ;取反aanl a,#0ffh    ;与运算ret           key:lcall delay     ;软件延时程序,按键去抖jb  acc.0,send1jb  acc.1,send2jb  acc.2,send3jb  acc.3,send4jb  acc.4,send5retDELAY:MOV R5,#20D1:MOV R6,#10D2:MOV R7,#100DJNZ R7,$DJNZ R6,D2DJNZ R5,D1ret    send1:mov  r1,#10101010b     ;前进指令sjmp sendsend2:mov  r1,#01010101b     ;后退指令sjmp sendsend3:mov  r1,#01011010b     ;左转指令sjmp sendsend4:mov  r1,#10100101b     ;右转指令sjmp sendsend5:mov  r1,#00h           ;停止指令sjmp sendsend: MOV SBUF,r1     ;指令给sbufJNB TI,$        ;判断是否发送完reti            ;中断返回END

上一页 1 2 3 下一页

评论


技术专区

关闭