自动往返电动小汽车系统设计 第4页

自动往返电动小汽车系统设计 第4页
主程序
ORG   0000H  ;程序执行起始地址
LJMP  START ;跳至START
ORG   0003H  ;外中断0入口
LJMP  INTEX0 ;跳至INTEX0中断服务程序
ORG   000BH  ;定时器T0中断入口
RETI  ;中断返回
ORG   0013H  ;外中断1入口
LJMP  INTEX1 ;跳至INTEX1中断服务程序
ORG   001BH  ;定时器T1中断入口
LJMP  INTT1 ;跳至INTT1中断服务程序
ORG   0023H  ;串口中断入口
ETI  ;中断返回
ORG   002BH  ;定时器T2中断入口
RETI  ;中断返回
初始化程序  
CLEARMEMIO:    MOV  R0, #70H   ;清70H-76H显示单元
MOV  R7, #07H   ;循环次数
 ML0:     MOV  @R0, #00H   ;清0
          INC  R0     ;下一地址
          DJNZ R7, ML0    ;未完再循环
          MOV  TMOD,#10H    ;T1为16位定时器
          MOV  R4,#14H    ;1秒定时用(50毫秒20次)
          MOV  TL1,#0B0H   ;50毫秒定时用初值
          MOV  TH1,#3CH    ;
          MOV   20H,#00H    ;清0操作
          MOV   21H,#00H    ;
          MOV   22H,#00H    ;
          MOV   23H,#00H    ;
   MOV  24H,#00H   ;
          CLR   30H      ;清停车标志
          SETB  ET1      ;开T1中断
          SETB  EX1      ;开外中断1
          SETB  IT1      ;外中断1采用边沿触发
          SETB  IT0      ;外中断0优先级为1(最高)
          SETB  EX0      ;开外中断0
          SETB  EA       ;开总中断允许
          SETB  TR1     ;开启定时器T1
          RET         ;子程序返回
START:     LCALL  CLEARMEMIO   ;上电初始化
        SETB  P1.6     ;选择7.5V输出
        CLR   P1.7     ;选择7.5V输出
        SETB  P3.7     ;前进状态
        CLR   P3.6     ;前进状态
        CLR   P1.0     ;电机供电开始
MAIN:   LCALL  DISP     ;LED显示一次
        LJMP MAIN     ;转MAIN循环
        NOP         ;PC值出错处理
        NOP
     LJMP  START    ;重新初始化
INTEX0:    PUSH  ACC     ;堆栈保护
       PUSH  PSW     ;
       CLR   EX0     ;关中断
       LCALL  DISP     ;LED显示一次(延时抗干扰)
       JB   P3.2,IN0RET    ;P3.2为1退出(干扰)
       INC   23H     ;跑道计数器加1
       MOV   A,23H     ;数据入A
       CJNE  A,#06H,JUDGE1   ;不是第6道转JUDGE1
       LCALL  STOP     ;是第6道,停车
       LJMP  IN0RET     ;转中断退出
JUDGE1:    CJNE  A,#03H,JUDGE2   ;不是第3道转JUDGE2
       LCALL  STOPSLOW    ;是第3道,变慢车
       LJMP  IN0RET     ;转中断退出
JUDGE2:    CJNE  A,#04H,JUDGE3   ;不是第4道转JUDGE3
       LCALL  FAST     ;是第4道,变快车
       LJMP  IN0RET     ;转中断退出
JUDGE3:    CJNE  A,#05H,IN0RET   ;不是第5道转INORET退出
       LCALL  STOPSLOW    ;是第5道,变慢车
IN0RET:    CLR   IE0     ;清外中断0中断标志
       POP   PSW     ;恢复现场
       POP   ACC     ;
       LCALL  DL7MS     ;延时7毫秒(抗干扰)
       SETB  EX0     ;开外中断0
       RETI       ;中断返回
STOPSLOW:   CLR   P1.6     ;关7.5V电源
        CPL   P3.6     ;反向驱动(刹车)
        CPL   P3.7     ;反向驱动
        LCALL  DS50MS    ;刹车时间(可根据试车情况调整)
        LCALL  DS50MS    ;
        LCALL  DS50MS    ;
        CPL   P3.6     ;正向驱动
        CPL   P3.7     ;正向驱动
        SETB  P1.7     ;开4.3V电源
        RET      ;返回
FAST:     CLR   P1.7     ; 关4.3V电源
        SETB  P1.6     ; 开7.5V电源
        RET       ;返回
STOP:     MOV  23H,#00H    ;跑道计数单元清0
       CPL   P3.6     ;反向驱动(刹车)
       CPL   P3.7     ;反向驱动(刹车)
       LCALL  DS50MS     ;刹车时间
       LCALL  DS50MS     ;刹车时间(可调整)
       SETB  P1.0     ;关电机电源
       SETB  PT1       ;定时器T1为高优先级
       LCALL  DS10S     ;停车10秒

上一页  [1] [2] [3] [4] [5] [6] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有