切换到宽版
  • 2797阅读
  • 20回复

[C51][原创diy]试验红外遥控小车 [复制链接]

上一主题 下一主题
离线lxa0
 

发帖
1128
M币
352
专家
10
粉丝
44
无线的、蓝牙的、wifi的。。。。。小车
都试验过了
这段时间试验了红外遥控的小车

详见下:
离线dralausky

发帖
2923
M币
11755
专家
8
粉丝
24
只看该作者 1楼 发表于: 03-12
啥也没上来啊,图呢
离线lxa0

发帖
1128
M币
352
专家
10
粉丝
44
只看该作者 2楼 发表于: 03-12
外观与电路图:




[ 此帖被lxa0在2018-03-12 19:41重新编辑 ]
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
离线lxa0

发帖
1128
M币
352
专家
10
粉丝
44
只看该作者 3楼 发表于: 03-12
电路图见下面:




[ 此帖被lxa0在2018-03-12 19:41重新编辑 ]
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
离线lxa0

发帖
1128
M币
352
专家
10
粉丝
44
只看该作者 4楼 发表于: 03-12
网络咋这么慢呀???
发个图片都不行?
离线lxa0

发帖
1128
M币
352
专家
10
粉丝
44
只看该作者 5楼 发表于: 03-12
所使用的红外遥控器:



本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
离线lxa0

发帖
1128
M币
352
专家
10
粉丝
44
只看该作者 6楼 发表于: 03-12
参考原代码:
仅供参考
不得用于商业!
违者必究!



;试验红外遥控小车汇编代码  
;2018-3-8晚修改完成
;at89c2051--11.0592MHz晶振
;p17与p10分别驱动左右电机,p37驱动led灯


org 0000h
ajmp mm
org 0013h
ajmp tt1

;主程序*********************************************************
org 0100h
mm:nop
mov p1,#00h
mov p1,#00h        
mov th1,#00h
mov tl1,#00h
mov tmod,#90h        ;T0设方式0,T1方式1并打开门控
mov tcon,#04h         ;T1由外部下降沿触发中断
mov ie,#84h             ;开INT1和总中断
mov ip,#04h             ;INT1外部中断优先
mov sp,#4fh             ;设堆栈入口
mov 08h,#38h          ;开始转换红外波头
mov 09h,#07h          ;转换8位一组波头
mov 10h,#30h          ;读红外波头存放首址
mov 11h,#10h          ;读红外波头16个
mov 20h,#00h          ;所有标志位
mov 21h,#00h          ;存放动作指令码      
clr p3.7    
m0:acall zh            
acall dz      
acall ccc
sjmp m0

;cc动作完成后恢复相关的寄存器<不占区>******************************
ccc:jnb 07h,ccc0
mov 30h,#00h
mov 31h,#00h
mov 32h,#00h
mov 33h,#00h
mov 34h,#00h
mov 35h,#00h
mov 36h,#00h
mov 37h,#00h
mov 38h,#00h
mov 39h,#00h
mov 3ah,#00h
mov 3bh,#00h
mov 3ch,#00h
mov 3dh,#00h
mov 3eh,#00h
mov 3fh,#00h
mov 20h,#00h            ;然后恢复相关单元
mov 21h,#00h
setb ex1                      ;全部动作完成最后开INT1中断
ccc0:ret    

;tt1 T1读红外代码子程序<占用区2>********************************
org 0200h
tt1:push dph          ;保护现场
push dpl
push acc
push psw
jb 01h,t3                ;若正在转换则返回
jb 02h,t3                ;若正在动作则返回
jb 00h,t2                ;收到遥控引导码则进入接收识别模式
mov th1,#00h        ;清T1,为接收做准备
mov tl1,#00h
setb 00h                 ;设接收遥控波头准备好标志位
setb tr1                  ;启动T1
sjmp t3
t2:setb psw.4          ;进入区2
clr psw.3
mov @r0,th1          ;从30h存放读进的红外波头
mov th1,#00h        ;清T1,准备读下一位
mov tl1,#00h
inc r0
djnz r1,t3                ;接收0fh个红外波头完成否?
mov 10h,#30h        ;存放波头首地址
mov 11h,#10h        ;存放波头数量
setb 01h                  ;设读取完成与允许转换标志位
clr tr1                      ;关T1
clr ex1                     ;关外部中断1
clr 00h                    ;恢复接收标致位
t3:pop psw
pop acc
pop dpl
pop dph
reti

;zh转换子程序<占用区1>******************************************
org 0280h
zh:push dph             ;将识别后的遥控信号转换成16位动作代码
push dpl
push acc
push psw
setb psw.3               ;进入区1
clr psw.4
jb 00h,h01              ;若正在接收则返回              
jb 02h,h01              ;若正在动作则返回
jb 01h,h02              ;若允许转换则继续    
h01:mov 08h,#38h
mov 09h,#07h
pop psw
pop acc
pop dpl
pop dph
ret
h02:mov a,30h
jnb acc.2,h01           ;以下8条是判别红外指令的地址码是否正确
mov a,31h               ;正确时应为HHHL LLHL(11100010B)
jnb acc.2,h01
mov a,32h
jnb acc.2,h01
mov a,36h
jnb acc.2,h01
mov a,33h
jnb acc.1,h01
mov a,34h
jnb acc.1,h01
mov a,35h
jnb acc.1,h01
mov a,37h
jnb acc.1,h01
mov 08h,#38h            ;从38h单元开始转换指令码
h03:mov a,@r0           ;地址码正确开始转换指令码
jb acc.2,h04
clr 08h                         ;21h的最低位置0
sjmp h05
h04: setb 08h             ;21h的最低位置1
h05: mov a,21h
rl a
mov 21h,a
inc 08h
djnz r1,h03             ;8位指令码转换完否?
setb 02h                 ;设置允许执行动作标志位                        
clr 01h                    ;清除允许转换标志位
ljmp h01

;dz动作子程序<不占区>**********************************************
org 0300h
dz:push dph
push dpl
push acc
push psw
jb 00h,d01                ;若正在接收则返回
jb 01h,d01                ;若正在转换则返回
jnb 02h,d01              ;允许动作否?
mov a,21h
cjne a,#50h,dz2         ;左转?
mov p1,#00h
nop
setb p1.7
nop
sjmp d00a
dz2:mov a,21h             ;右转?
cjne a,#48h,dz3
mov p1,#00h
nop
setb p1.0
nop                        
sjmp d00a
dz3:mov a,21h             ;前进?
cjne a,#44h,dz4
mov p1,#00h
nop
mov p1,#0ffh
nop
sjmp d00a
dz4:mov a,21h
cjne a,#54h,d00a         ;停止?
mov p1,#00h
mov p1,#00h
d00a:nop
mov 20h,#00h            ;清除全部标志
mov 21h,#00h            ;清除已完成的动作代码
setb 07h                      ;本次动作完成后设置标志
d01:pop psw
pop acc
pop dpl
pop dph
ret


end

本帖最近打赏记录:共1条打赏M币+8
离线lxa0

发帖
1128
M币
352
专家
10
粉丝
44
只看该作者 7楼 发表于: 03-12
唉~~~~~~~~~~~~~~~
总算发完了
离线luannan

发帖
78
M币
574
专家
1
粉丝
4
只看该作者 8楼 发表于: 03-12
汇编的表示不懂
离线zenghui8818

发帖
636
M币
1082
专家
0
粉丝
8
只看该作者 9楼 发表于: 03-12
能用汇编的必须赞一个,我早就忘了!