标题:
智能小车控制程序
[打印本页]
作者:
daniu
时间:
2014-12-27 16:47
标题:
智能小车控制程序
;======================================================================
;编写者:兰建文 时间:2009-7-24 地点:源点IC嵌入式培训机构
;多功能小车 (小车能寻迹、壁障、无线遥控、电机调速)
;使用ATMEL89C2051单片机
;P1.7控制后轮前进方向 P1.3----循迹左
;P1.6控制后轮后退方向 P1.2----循迹右
;P1.5控制前轮左转方向 P3.1----蜂鸣器
;P1.4控制前轮右转方向 P3.5----左转指示灯
;P3.2壁障红外检测 P3.4----右转指示灯
;P3.0无线遥控检测 P3.3控制555产生38KHZ红外线
;定时器中断0用于调节电机速度,调节PWM
;===========================系统程序===================================
ORG 0000H
JMP START
ORG 000BH
JMP IN_T1
ORG 0030H
;===========================程序开始===================================
START:
MOV P1,#0FFH ;端口初始化
MOV P3,#0FFH
MOV TMOD,#01H ;定时器0工作方式1
MOV TL0,#0D4H ;定时0.9ms 设定时初值
MOV TH0,#0FEH
MOV IE,#82H ;开总中断与定时器中断
SETB TR0 ;开定时器
MOV R1,#3 ;设置占空比
SETB F0 ;节拍标志位
MAIN:
JNB P1.2,NEXT1 ;判断是否左转,光电对管出轨迹,就继续判断。
JNB P1.3,NEXT2 ;判断是否右转,光电对管出轨迹,就右转。
;=========================== 小车直走===================================
NEXT4:
SETB P1.6 ;二个光电对管都在轨迹内,小车就向前直走。
SETB P1.5
SETB P1.4
SETB P3.5
SETB P3.4
JMP MAIN1
NEXT1:
JB P1.3,NEXT3
;=========================== 小车后退===================================
SETB P1.7 ;两个光电对管都出了轨迹就后退。
CLR P1.6
SETB P1.5
SETB P1.4
CLR P3.5 ;亮后退指示灯
CLR P3.4
;=========================== 小车左转 ==================================
NEXT3:
SETB P1.6
CLR P1.4
SETB P1.5
SETB P3.5
CLR P3.4 ;亮左转指示灯
JMP MAIN1
;=========================== 小车右转 ==================================
NEXT2:
SETB P1.6
SETB P1.4
CLR P1.5
CLR P3.5 ;亮右转指示灯
SETB P3.4
JMP MAIN1
;=============================调节PWM==================================
MAIN1:
JNB F0,MAIN
CLR F0
DJNZ R1,LL
MOV R1,#3
SETB P1.7
SETB P1.6
JMP MAIN
LL:
CLR P1.7
SETB P1.6
JMP MAIN
;==========================定时器中断0服务子程序=======================
;输入: TL0、TH0
;输出:无
;实现的功能:影响标志位F0
;======================================================================
IN_T1:
MOV TL0,#0D4H ;定时0.9MS
MOV TH0,#0FEH
SETB F0
RETI
;==========================延时子程序==================================
;输入: 无
;输出:无
;实现的功能:延时一段时间
;======================================================================
DELAY:
MOV R7,#200
L:
MOV R6,#200
DJNZ R6,$
DJNZ R7,L
RET
;===========================程序结束===================================
END
复制代码
作者:
whrui5033
时间:
2015-1-12 13:10
研究研究
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1