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

📄 程序样本.txt

📁 飞思卡尔智能小车的开发程序,仅供大家参考交流
💻 TXT
字号:

      ENA   BIT   P2.2
      A1    BIT   P2.5
      A2    BIT   P2.4
      ENB   BIT   P2.3
      B1    BIT   P2.1
      B2    BIT   P2.0
;     KEYDN BIT   P2.6
      RF    BIT   P3.4
      LF    BIT   P3.3
      RF2   BIT   P3.1
      LF2   BIT   P3.0
      KEYUP BIT   P3.7
      C1    BIT   P1.1;挡板
      C2    BIT   P1.0
      D1    BIT   P1.2;闸门
      D2    BIT   P1.3
      E1    BIT   P1.5;提升
      E2    BIT   P1.4
      AH    EQU   60H
      BH    EQU   61H
      AIM   EQU   62H
      STEP  EQU   63H
      RUN   BIT   01H
      CHANG BIT   02H
      RUN2  BIT   03H
      TC    EQU   64H
      
      ORG   0000H
      AJMP  MAIN
      ORG   0003H
      AJMP  X0INT
      ORG   000BH
      AJMP  T0INT
;      ORG   0013H
;      AJMP  X1INT
      ORG   001BH
      AJMP  T1INT


      ORG   0030H
MAIN: MOV   SP,#30H
      MOV   P1,#00H
      MOV   P3,#0FFH
      MOV   P2,#0C0H
      MOV   STEP,#00
      MOV   TMOD,#12H
      SETB  IT0
      SETB  EA
      SETB  ET0
      SETB  ET1
      MOV   IP,#01H
      MOV   TH0,#200
      MOV   TL0,#200
      MOV   TH1,#00H
      MOV   TL1,#00H
      CLR   RUN
      CLR   RUN2
      MOV   TC,#00H
      
      

BODY: JB   KEYUP,START

XIA:  ACALL DOWN
      JNB   KEYUP,$
      JB    KEYUP,$
      ACALL STOPE
      JNB   KEYUP,$
      JB    KEYUP,$

START:MOV   AIM,#4
      SETB  EX0
      ACALL LINE2
      CLR   RUN
      ACALL STOP
      ACALL DELAY
      ACALL RPWM
      CLR   EX0
      ACALL DELAY
      ACALL DELAY
      JB    LF,$
      JB    LF,$
      JB    LF,$
      JNB   LF,$
      JNB   LF,$
      JNB   LF,$
      JB    LF,$
      JB    LF,$
      JNB   LF,$
      JNB   LF,$
      JNB   LF,$
      CLR   TR0
      SETB  EX0
      MOV   STEP,#5
      ACALL STOP
      MOV   AIM,#18
      ACALL UP
      ACALL LINE
      CLR   RUN
      ACALL STOP
      MOV   AIM,#20
      ACALL RPWM 
      JNB    RUN,$
      CLR    EX0
      ACALL  DELAY
      ACALL  DELAY
      CLR    TR0 
      ACALL STOP
      AJMP  ACTION
      

;---------------------------------
;#################################
;外部中断0,用来计步
;#################################
      
X0INT:PUSH  ACC
;     ACALL DELAY5MS      
      JB    P3.2,X0END1
      CLR   EX0
      SETB  TR1
      INC   STEP     
      MOV   A,STEP
      CJNE  A,AIM,X0END1
      SETB  RUN      
X0END1:POP   ACC
      RETI
      


;---------------------------------
T1INT:PUSH ACC
      CLR TF1
      CLR TR1
      MOV TH1,#00H
      MOV TL1,#00H
      INC TC
      MOV A,TC
      SETB TR1
      CJNE A,#10,ENX0
      CLR  TR1
      SETB EX0
      MOV  TC,#0      
      POP  ACC
      RETI
ENX0: SETB TR1
      POP  ACC
      RETI
      

;---------------------------------
;#################################
;寻迹行走子程序1(用到定时器0,R0,A)
;#################################
LINE: PUSH  ACC
      MOV   R0,#0
      MOV   AH,#20
      MOV   BH,#20
      CLR   CHANG

      SETB  A1
      CLR   A2
      SETB  B1
      CLR   B2
      SETB  ENA
      SETB  ENB
      SETB  TR0
LINE1:JB    RUN,OUTA
      JNB   RF,RESTA
      JNB   LF,RESTB
      JNB   CHANG,LINE1
    
REST: MOV   AH,#20
      MOV   BH,#20
      CLR   CHANG
      SJMP  LINE1

RESTA:JNB   LF,LINE1
      MOV   AH,#19
      MOV   BH,#2
      SETB  CHANG
      SJMP  LINE1
RESTB:JNB   RF,LINE1
      MOV   AH,#2
      MOV   BH,#19
      SETB  CHANG
      SJMP  LINE1
      
OUTA: CLR   RUN
      CLR   TR0
      POP   ACC
      RET

;#################################
;方格内行走子程序2(用到定时器0,R0,A)
;#################################
LINE2:PUSH  ACC
      MOV   R0,#0
      MOV   AH,#20
      MOV   BH,#20
      CLR   CHANG

      SETB  A1
      CLR   A2
      SETB  B1
      CLR   B2
      SETB  ENA
      SETB  ENB
      SETB  TR0
LINE3:JB    RUN,OUTB
      JNB   RF2,RESTA2
      JNB   LF2,RESTB2
      JNB   CHANG,LINE3
    
REST2:MOV   AH,#19
      MOV   BH,#19
      CLR   CHANG
      SJMP  LINE3

RESTA2:JNB  LF2,LINE3
      MOV   AH,#19
      MOV   BH,#2
      SETB  CHANG
      SJMP  LINE3
RESTB2:JNB  RF2,LINE3
      MOV   AH,#2
      MOV   BH,#19
      SETB  CHANG
      SJMP  LINE3
      
OUTB: CLR   RUN
      CLR   TR0
      POP   ACC
      RET
;#########################
;T0定时器提供2路PWM信号
;#########################      
T0INT:INC   R0
      MOV   A,R0
JGA:  CJNE  A,AH,JGB
      CLR   ENA
JGB:  CJNE  A,BH,JG10
      CLR   ENB
JG10: CJNE  A,#20,JGEND
      SETB  ENA
      SETB  ENB
      MOV   R0,#0
JGEND:RETI
;--------------------------


;--------------------------
;延时子程序
;--------------------------
DELAY:MOV   R7,#200
DEY1: MOV   R6,#250
      DJNZ  R6,$
      DJNZ  R7,DEY1
      RET
      
DELAY1S:
      MOV   R5,#10
D1S1: ACALL DELAY
      DJNZ  R5,D1S1
      RET
      
DELAY500MS:
      MOV   R5,#5
D501: ACALL DELAY
      DJNZ  R5,D501
      RET

DELAY5MS:MOV  R7,#10
DELAY51: MOV  R6,#250
         DJNZ R6,DELAY51
         RET      

;--------------------------
;RIGHT,LEFT,AHEAD,BACK
;--------------------------

LPWM: PUSH  ACC
      MOV   R0,#0
      MOV   AH,#18
      MOV   BH,#8
      SETB  A1
      CLR   A2
      SETB  B1
      CLR   B2
      SETB  ENA
      SETB  ENB
      SETB  TR0
OUTL: POP   ACC
      RET

RPWM: PUSH  ACC
      MOV   R0,#0
      MOV   AH,#8
      MOV   BH,#15
      CLR   A1
      SETB  A2
      SETB  B1
      CLR   B2
      SETB  ENA
      SETB  ENB
      SETB  TR0
OUTR: POP   ACC
      RET
      
BRPWM: PUSH  ACC
      MOV   R0,#0
      MOV   AH,#8
      MOV   BH,#16
      SETB  A1
      CLR   A2
      CLR   B1
      SETB  B2
      SETB  ENA
      SETB  ENB
      SETB  TR0
      POP   ACC
      RET
      
      
RIGHT:CLR   ENA
      CLR   ENB
      ;CLR   A1
      ;CLR   A2
      CLR   B1
      SETB  B2
      ;SETB  ENA
      SETB  ENB
      RET
      
LEFT: CLR   ENA
      CLR   ENB
      CLR   A1
      SETB  A2
      SETB  B1
      CLR   B2
      SETB  ENA
      SETB  ENB
      RET
      
AHEAD:CLR   ENA
      CLR   ENB
      SETB  A1
      CLR   A2
      SETB  B1
      CLR   B2
      SETB  ENA
      SETB  ENB
      RET
      
BACK: CLR   ENA
      CLR   ENB
      CLR   A1
      SETB  A2
      CLR   B1
      SETB  B2
      SETB  ENA
      SETB  ENB
      RET
      
STOP: CLR   ENA
      CLR   ENB
      RET
;--------------------

ACTION:
      ;ACALL UP

      JB    KEYUP,$
      ACALL STOPE
      ACALL LETOUT
      ACALL DELAY1S
      ACALL STOPD
      ACALL DELAY1S
      ACALL DELAY1S
      ACALL DELAY500MS
      CLR   EX0
      ACALL BRPWM
      ACALL DELAY1S
      ACALL DELAY1S
      ACALL DELAY1S
      ACALL DELAY1S
      ACALL DELAY1S
      CLR   TR0
      ACALL STOP
      ACALL DANG
      ACALL DELAY1S
      ACALL DELAY1S
      ACALL STOPC
      ACALL DOWN
      ACALL DELAY1S
      ACALL DELAY1S
      ACALL DELAY1S
      ACALL STOPE
      SJMP  $
      

UP:   SETB  E1
      CLR   E2
      RET
DOWN: CLR   E1      
      SETB  E2
      RET
STOPE:CLR   E1
      CLR   E2
      RET
LETOUT:
      SETB  D1
      CLR   D2
      RET
STOPD:CLR   D1
      CLR   D2
      RET   
DANG: SETB  C1
      CLR   C2
      RET
STOPC:CLR   C1
      CLR   C2
      RET

      END
      
































































































⌨️ 快捷键说明

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