您现在的位置: 主页 > MCU > 单片机应用 > 光电自动轨迹跟踪车 -
本文所属标签:
为本文创立个标签吧:

光电自动轨迹跟踪车 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-08 

[导读]
;***********************************************************************; 光电自动轨迹跟踪车.dt;***********************************************************************PORT5 == 0x05 ;定义端

;***********************************************************************
; 光电自动轨迹跟踪车.dt
;***********************************************************************

本文引用地址: http://www.21ic.com/app/mcu/201806/761626.htm

PORT5 == 0x05 ;定义端口5,6,7
PORT6 == 0x06
PORT7 == 0x07
;-----------------------------------------------------------------------
IOCE == 0x0E ;定义WDT控制寄存器IOCE
;-----------------------------------------------------------------------
STATUS == 3 ;定义状态寄存器STATUS和零标志位Z_FLAG
Z_FLAG == 2
;---------------------------------------------------------------
DLY1 == 13 ;定义延时置数单元DLY1,DLY2,DLY3
DLY2 == 14
DLY3 == 15
TEMP == 16 ;定义暂存器单元TEMP,存放光电读入数据
;-----------------------------------------------------------------------
ORG 0x00

INIT: MOV A,@0x0FF ;设定P7口全部为输入
IOW PORT7
IOW PORT5
MOV A,@0x00 ;设定P6口全部为输出
IOW PORT6
MOV A,@0X11
IOW IOCE ;关闭看门狗功能
MOV A,@0x00 ;停止电机运行
MOV PORT6,A
;-----------------------------------------------------------------------
MAIN: MOV A,PORT7 ;读光电输入
AND A,@0B00000111 ;屏蔽高5位
XOR A,@0B00000111
MOV TEMP,A
BC STATUS,Z_FLAG ;清除零标志位
CHECK0: MOV A,TEMP
XOR A,@0B00000000 ;光电输入是000?
JBS STATUS,Z_FLAG
JMP CHECK1
JMP ACT000
CHECK1: MOV A,TEMP
XOR A,@0B00000001 ;光电输入是001?
JBS STATUS,Z_FLAG
JMP CHECK2
JMP ACT001
CHECK2: MOV A,TEMP
XOR A,@0B00000010 ;光电输入是010?
JBS STATUS,Z_FLAG
JMP CHECK3
JMP ACT010
CHECK3: MOV A,TEMP
XOR A,@0B00000011 ;光电输入是011?
JBS STATUS,Z_FLAG
JMP CHECK4
JMP ACT011
CHECK4: MOV A,TEMP
XOR A,@0B00000100 ;光电输入是100?
JBS STATUS,Z_FLAG
JMP CHECK5
JMP ACT100
CHECK5: MOV A,TEMP
XOR A,@0B00000101 ;光电输入是101?
JBS STATUS,Z_FLAG
JMP CHECK6
JMP ACT101
CHECK6: MOV A,TEMP
XOR A,@0B00000110 ;光电输入是110?
JBS STATUS,Z_FLAG
JMP CHECK7
JMP ACT110
CHECK7: MOV A,TEMP
XOR A,@0B00000111 ;光电输入是111?
JBS STATUS,Z_FLAG
JMP MAIN
JMP ACT111
;-----------------------------------------------------------------------
ACT000: NOP ;保持原状,无动作,返回
JMP MAIN
ACT001: MOV A,@0B00000100 ;稍偏右,M1仃转,M2正转
MOV PORT6,A
CALL TURNDELAY
JMP ACT101
ACT010: NOP ;无动作,返回
JMP MAIN
ACT011: MOV A,@0B00000100 ;偏右,M1仃转,M2正转
MOV PORT6,A
CALL TURNDELAY
JMP ACT101
ACT100: MOV A,@0B00000001 ;稍偏左,M1正转,M2仃转
MOV PORT6,A
CALL TURNDELAY
JMP ACT101
ACT101: MOV A,@0B00000101 ;沿黑色胶带正中前进,M1正转,M2正转
MOV PORT6,A
JMP MAIN
ACT110: MOV A,@0B00000001 ;偏左,M1正转,M2仃转
MOV PORT6,A
CALL TURNDELAY
JMP ACT101
ACT111: MOV A,@0B00001001 ;没有压到黑色胶带,M1正转、M2反转
MOV PORT6,A
CALL TURNDELAY
CALL TURNDELAY
JMP ACT101
;-----------------------------------------------------------------------
TURNDELAY:MOV A,@50 ;转弯延时约100毫秒,需调整
MOV DLY3,A
CALL DELAY
RET
;-----------------------------------------------------------------------
;延时时间 = 2mS * DLY3
DELAY: MOV A,@25 ;1*(DLY3)
MOV DLY2,A ;1*(DLY3)
INNER2: MOV A,@133 ;1*(DLY3)*(250)
MOV DLY1,A ;1*(DLY3)*(250)
INNER1: DJZ DLY1 ;1*(DLY3)*(250)*(133)
JMP INNER1 ;2*(DLY3)*(250)*(133)
DJZ DLY2 ;1*(DLY3)*(250)
JMP INNER2 ;2*(DLY3)*(250)
DJZ DLY3 ;1*(DLY3)
JMP DELAY ;2*(DLY3)
RET ;延时返回
EOP



              查看评论 回复



嵌入式交流网主页 > MCU > 单片机应用 > 光电自动轨迹跟踪车 -
 

"光电自动轨迹跟踪车 -"的相关文章

网站地图

围观()