⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 多功能遥控小车的硬件软件设计程序.txt

📁 多功能遥控小车的硬件软件设计程序.rar
💻 TXT
字号:
六、使小车前进、后退、左转弯、右转弯、左滚动、右滚动的基本指令
◆ MOV    P2,#11111010B ; 小车前进
    LCALL  K1             ; 调延时3秒子程序K1。改变延时时间长短,可改
; 变小车的前进路程。
    MOV    P2,#11111111B ; 小车停止前进
◆ MOV    P2,#11110101B ; 小车后退
    LCALL  K1             ; 调延时3秒子程序K1
    MOV    P2,#11111111B ; 小车停止后退
◆ MOV    P2,#11110110B ; 小车左转弯
    LCALL  K2             ; 调延时1秒子程序K2。如果小车转弯的角度大于
; 或小于90度,可调整延时时间长短实现之
    MOV    P2,#11111111B ; 小车停止左转弯 
◆ MOV    P2,#11111001B ; 小车右转弯
    LCALL  K2             ; 调延时1秒子程序K2
    MOV    P2,#11111111B ; 小车停止左转弯
◆ MOV    P2,#11110110B ; 小车左滚动
    LCALL  K3             ; 调较长时间延时5秒子程序K3
    MOV    P2,#11111111B ; 小车停止左滚动
◆ MOV    P2,#11111001B ; 小车右滚动
    LCALL  K2             ; 调较长时间延时5秒子程序K3
    MOV    P2,#11111111B ; 小车停止右滚动
七、完整程序清单
      ORG    0000H            
      LJMP   MAIN           ; 跳到MAIN
      ORG    0003H          ; 外部中断0入口地址
      LJMP   BB             ; 跳到外部中断0服务子程序首地址BB
      ORG    000BH          ; T0中断入口地址
      LJMP   CC             ; 跳到T0外部中断服务子程序首地址CC
      ORG    0013H          ; 外部中断1入口地址
      LJMP   DD             ; 跳到外部中断1服务子程序首地址DD
;◆ 外部中断0设置
 MAIN:MOV    SP,#30H        ; 堆栈指针指向30H 
SETB   IT0            ; 设置外部中断0为下降沿触发方式
      SETB   EX0            ; 设置外部中断0分开关接通(中断源允许)
;◆ 外部中断1设置
      SETB   IT1            ; 设置设置外部中断1为下降沿触发方式
      SETB   EX1            ; 设置外部中断1分开关接通(中断源允许)
;◆ TO外部中断设置
      MOV    TMOD,#00000110B; 设置T0方式2为对外部引脚计数功能
      SETB   ET0            ; 设置T0分开关接通(T0中断源允许)
      MOV    TL0,#0FFH      ; T0装满初值
      MOV    TH0,#0FFH
      SETB   TR0            ; 启动T0 
;◆ 中断总允许
      SETB   EA             ; 设置3个中断总允许
;◆ 查询哪个按键被按下
  AA: JNB    P1.0,Z1        ; P1.0=1,顺序执行,P1.0=0,短转移到Z1
      JNB    P1.1,Z2        ; P1.1=1,顺序执行,P1.1=0,短转移到Z1
      JNB    P1.2,Z3        ; P1.2=1,顺序执行,P1.2=0,短转移到Z1
      JNB    P1.3,Z4        ; P1.3=1,顺序执行,P1.3=0,短转移到Z1
      JNB    P1.4,Z5        ; P1.4=1,顺序执行,P1.4=0,短转移到Z1
      JNB    P1.5,Z6        ; P1.5=1,顺序执行,P1.5=0,短转移到Z1
      SJMP   AA             ; 跳回AA,继续查询哪个按钮被按下
  Z1:LJMP   A1              ; 长转移到A1
  Z2:LJMP   A2              ; 长转移到A2
  Z3:LJMP   A3              ; 长转移到A3
  Z4:LJMP   A4              ; 长转移到A4
  Z5:LJMP   A5              ; 长转移到A5
  Z6:LJMP   A6              ; 长转移到A6 
;  按压发射按钮① 使小车前进
A1: MOV    P2,#11111010B    ; 小车前进
    LCALL  K2               ; 延时2秒
    MOV    P2,#11111111B    ; 停止前进
    LJMP   AA               ; 返回AA,继续查询
;  按压发射按钮② 使小车后退
A2: MOV    P2,#11110101B    ; 小车后退
    LCALL  K2               ; 延时2秒
    MOV    P2,#11111111B    ; 停止 
    LJMP   AA               ; 返回AA,继续查询
;  按压发射按钮③ 使小车左滚动
A3: MOV    P2,#11111001B    ; 小车左转弯或左滚动
    LCALL  K2               ; 延时2秒
    LCALL  K2
    MOV    P2,#11111111B    ; 停止
    LJMP   AA               ; 返回AA,继续查询
;  按压发射按钮④ 使小车右滚动
A4: MOV    P2,#11110110B    ; 小车右左转弯或右滚动
    LCALL  K2               ; 延时2秒
    LCALL  K2
    MOV    P2,#11111111B    ; 停止
    LJMP   AA               ; 返回AA,继续查询
;  按压发射按钮⑤ 使小车走"口"字
;  小车前进左转弯
A5: MOV    P2,#11111010B    ; 小车前进
    LCALL  K2               ; 延时2秒
    MOV    P2,#11111111B    ; 停止前进
    MOV    P2,#11111001B    ; 小车左转弯
    LCALL  K04              ; 延时0.4秒
    MOV    P2,#11111111B    ; 停止
    SJMP   A5               ; 跳回A5,继续走"口"字
;  按压发射按钮⑥ 使小车走"8"字(请读者自行编写)
;  小车前进,左转弯,共4次
A6:MOV    R0,#4
A7: MOV    P2,#11111010B    ; 小车前进
    LCALL  K2               ; 延时2秒
    MOV    P2,#11111111B    ; 停止前进
    MOV    P2,#11111001B    ; 小车左转弯
    LCALL  K04              ; 延时0.4秒
    MOV    P2,#11111111B    ; 停止
    DJNZ   R0,A7
;  小车前进,右转弯,共4次
    MOV    R0,#4
A8: MOV    P2,#11111010B    ; 小车前进
    LCALL  K2               ; 延时2秒
    MOV    P2,#11111111B    ; 停止前进
MOV    P2,#11110110B    ; 小车右转弯
    LCALL  K04              ; 延时2秒
    MOV    P2,#11111111B    ; 停止
    DJNZ   R0,A8
LJMP   A6               ; 跳回A5,继续走"8"字
;  中断服务子程序
;  外部中断0服务子程序
BB: MOV    P2,#11110101B    ; 小车后退
    LCALL  D04              ; 延时0.4秒
    MOV    P2,#11111111B    ; 停止
    LCALL  D04              ; 延时0.4秒
    MOV    P2,#11110110B    ; 小车右转弯
    LCALL  D04              ; 延时0.4秒
    MOV    P2,#11111111B    ; 停止
    LCALL  D04              ; 延时0.4秒
    CLR    TCON.1           ; 去除开关抖动产生的再次中断
    RETI                    ; 返回到断点
;  外部中断1服务子程序
DD: MOV    P2,#11110101B    ; 小车后退
    LCALL  D04              ; 延时0.4秒
    MOV    P2,#11111111B    ; 停止
    LCALL  D04              ; 延时0.4秒
    MOV    P2,#11111001B    ; 小车左转弯
    LCALL  D04              ; 延时0.4秒
    MOV    P2,#11111111B    ; 停止
    LCALL  D04              ; 延时0.4秒
    CLR    TCON.3           ; 去除开关抖动产生的再次中断
    RETI                    ; 返回到断点
;  T0中断服务子程序
CC: MOV    P2,#11110101B    ; 小车后退
    LCALL  D04              ; 延时0.4秒
    MOV    P2,#11111111B    ; 停止
    LCALL  D04              ; 延时0.4秒
    MOV    P2,#11111001B    ; 小车左转弯
    LCALL  D04              ; 延时0.4秒
    MOV    P2,#11111111B    ; 停止
    LCALL  D04              ; 延时0.4秒
    CLR    TCON.5           ; 去除开关抖动产生的再次中断
    RETI                    ; 返回到断点 
; 延时2秒子程序
 K2:MOV    R1,#20
 B1:MOV    R2,#0FFH
 B2:MOV    R3,#80H
 B3:NOP
    DJNZ   R3,B3
    DJNZ   R2,B2
    DJNZ   R1,B1
    RET
; 延时0.4秒子程序
 K04:MOV    R4,#3
 E1:MOV    R5,#0FFH
 E2:MOV    R5,#80H
 E3:NOP
    DJNZ   R6,E3
    DJNZ   R5,E2
    DJNZ   R4,E1
    RET
; 延时0.4秒子程序
 D04:MOV    R1,#3
 D1:MOV    R2,#0FFH
 D2:MOV    R3,#80H
 D3:NOP
    DJNZ   R3,D3
    DJNZ   R2,D2
    DJNZ   R1,D1
    RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -