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

📄 motors.lst

📁 代码保护功能处于持续发展中。Microchip 承诺将不断改进产品的代码保护功能。任何试图破坏Microchip 代码保护功能的行为均可视 为违反了《数字器件千年版权法案(Digital Mille
💻 LST
📖 第 1 页 / 共 2 页
字号:
MPASM 03.70.01 Released                            MOTORS.ASM   2-16-2006  19:50:42         PAGE  1


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00001 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                      00002 ;
                      00003 ;       Project:                Interfacing PICs 
                      00004 ;       Source File Name:       MOTORS.ASM              
                      00005 ;       Devised by:             MPB             
                      00006 ;       Date:                   19-8-05
                      00007 ;       Status:                 Working
                      00008 ;
                      00009 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                      00010 ;
                      00011 ;       Demonstrates DC, SERVO & STEPPER MOTOR control
                      00012 ;       Select motor and direction using push button inputs
                      00013 ;       DC Motor PWM speed control - working
                      00014 ;       DC Servo position control - rollover not fixed
                      00015 ;       Stepper direction control - working
                      00016 ;       
                      00017 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                      00018 
                      00019         PROCESSOR 16F877A
                      00020 ;       Clock = XT 4MHz, standard fuse settings
2007   3731           00021         __CONFIG 0x3731
                      00022 
                      00023 ;       LABEL EQUATES   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                      00024 
                      00025         INCLUDE "P16F877A.INC"  
                      00001         LIST
                      00002 ; P16F877A.INC  Standard Header File, Version 1.00    Microchip Technology, Inc.
                      00398         LIST
                      00026         ; standard register labels      
                      00027 
                      00028 ;----------------------------------------------------------
                      00029 ; User register labels
                      00030 ;----------------------------------------------------------
                      00031 
  00000020            00032 Count1  EQU     20              ; delay counter
  00000021            00033 Count2  EQU     21              ; delay counter
  00000022            00034 Target  EQU     22              ; servo target position
                      00035 
                      00036 ;----------------------------------------------------------
                      00037 ; PROGRAM BEGINS
                      00038 ;----------------------------------------------------------
                      00039 
0000                  00040         ORG     0               ; Default start address 
0000   0000           00041         NOP                     ; required for ICD mode
                      00042 
                      00043 ;----------------------------------------------------------     
                      00044 ; Port & PWM setup
                      00045 
0001   0000           00046 init    NOP
0002   1683 1303      00047         BANKSEL TRISB           ; Select control registers
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0004   0187           00048         CLRF    TRISC           ; Output for dc motors
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
MPASM 03.70.01 Released                            MOTORS.ASM   2-16-2006  19:50:42         PAGE  2


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0005   0188           00049         CLRF    TRISD           ; Output for stepper
0006   3002           00050         MOVLW   B'00000010'     ; Analogue input setup code
                      00051                                 ; PortA = analogue inputs
                      00052                                 ; Vref = Vdd
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0007   009F           00053         MOVWF   ADCON1          ; Port E = digital inputs
0008   30F9           00054         MOVLW   D'249'          ; PWM = 4kHz
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0009   0092           00055         MOVWF   PR2             ; TMR2 preload value    
                      00056 
000A   1283 1303      00057         BANKSEL PORTB           ; Select output registers
000C   0187           00058         CLRF    PORTC           ; Outputs off
000D   0188           00059         CLRF    PORTD           ; Outputs off
000E   3041           00060         MOVLW   B'01000001'     ; Analogue input setup code
000F   009F           00061         MOVWF   ADCON0          ; f/8, RA0, done, enable  
0010   3080           00062         MOVLW   D'128'          ; intial servo position
0011   00A2           00063         MOVWF   Target          
                      00064 
                      00065 ;----------------------------------------------------------
                      00066 ; MAIN LOOP
                      00067 ;----------------------------------------------------------
                      00068 
0012   1809           00069 but0    BTFSC   PORTE,0         ; wait for select button
0013   2812           00070         GOTO    but0
                      00071 
0014   300C           00072         MOVLW   B'00001100'     ; Select PWM mode
0015   0097           00073         MOVWF   CCP1CON         ; 
0016   3080           00074         MOVLW   D'128'          ; PWM = 50%
0017   0095           00075         MOVWF   CCPR1L          ;
                      00076 
0018   1C09           00077 but1    BTFSS   PORTE,0         ; wait for button release
0019   2818           00078         GOTO    but1
001A   202D           00079         CALL    motor           ; check for speed change
001B   1809           00080         BTFSC   PORTE,0         ; wait for select button
001C   2818           00081         GOTO    but1
001D   3000           00082         MOVLW   B'00000000'     ; deselect PWM mode
001E   0097           00083         MOVWF   CCP1CON         ; 
001F   0187           00084         CLRF    PORTC           ; switch off outputs
                      00085 
0020   1C09           00086 but2    BTFSS   PORTE,0         ; wait for button release
0021   2820           00087         GOTO    but2
0022   203B           00088         CALL    servo           ; move servo cw or ccw
0023   1809           00089         BTFSC   PORTE,0         ; wait for select button
0024   2820           00090         GOTO    but2
0025   0187           00091         CLRF    PORTC           ; switch off servo
                      00092 
0026   1C09           00093 but3    BTFSS   PORTE,0         ; wait for button release
0027   2826           00094         GOTO    but3
0028   2060           00095         CALL    step            ; output one step cycle         
0029   1809           00096         BTFSC   PORTE,0         ; wait for select button
002A   2826           00097         GOTO    but3            
002B   0188           00098         CLRF    PORTD           ; disable stepper outputs
002C   2812           00099         GOTO    but0            ; start again
MPASM 03.70.01 Released                            MOTORS.ASM   2-16-2006  19:50:42         PAGE  3


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00100 
                      00101 ;-----------------------------------------------------------
                      00102 ; SUBROUTINES
                      00103 ;-----------------------------------------------------------
                      00104 
                      00105 ; Change dc motor speed by one step and wait 1ms
                      00106 ; to debounce and control rate of change....................
                      00107 
002D   1487           00108 motor   BSF     PORTC,1         ; switch on motor LED
                      00109 
002E   1C89           00110         BTFSS   PORTE,1         ; inc speed?
Message[305]: Using default destination of 1 (file).
002F   0A95           00111         INCF    CCPR1L          ; yes
0030   30F8           00112         MOVLW   D'248'          ; max speed?
0031   0215           00113         SUBWF   CCPR1L,W        
0032   1D03           00114         BTFSS   STATUS,Z        
0033   2835           00115         GOTO    lower           ; no
Message[305]: Using default destination of 1 (file).
0034   0395           00116         DECF    CCPR1L          ; yes - dec speed
                      00117 
                      00118 
0035   1D09           00119 lower   BTFSS   PORTE,2         ; dec speed?
Message[305]: Using default destination of 1 (file).
0036   0B95           00120         DECFSZ  CCPR1L          ; yes - min speed?
0037   2839           00121         GOTO    done            ; no 
Message[305]: Using default destination of 1 (file).
0038   0A95           00122         INCF    CCPR1L          ; yes - inc speed
                      00123 
0039   2072           00124 done    CALL    onems           ; 1ms debounce
003A   0008           00125         RETURN
                      00126 
                      00127 ; Move servo 10 bits cw or ccw................................
                      00128 
003B   1607           00129 servo   BSF     PORTC,4         ; switch on servo LED
003C   1787           00130         BSF     PORTC,7         ; enable drive chip
003D   1889           00131         BTFSC   PORTE,1         ; move forward?
003E   284E           00132         GOTO    rev             ; no
                      00133 
003F   1C89           00134 wait1   BTFSS   PORTE,1         ; yes- wait for button..
0040   283F           00135         GOTO    wait1           ; ..release
0041   300A           00136         MOVLW   D'10'           ; add 10... 
Message[305]: Using default destination of 1 (file).
0042   07A2           00137         ADDWF   Target          ; ..to servo target position
0043   1687           00138         BSF     PORTC,5         ; move..
0044   1307           00139         BCF     PORTC,6         ; .. forward
                      00140 
0045   2078           00141 getfor  CALL    getADC          ; get position
0046   1403           00142         BSF     STATUS,C        ; set carry flag
0047   0822           00143         MOVF    Target,W        ; load position
Message[305]: Using default destination of 1 (file).
0048   029E           00144         SUBWF   ADRESH          ; compare with target 
0049   1C03           00145         BTFSS   STATUS,C        ; far enough?
004A   2845           00146         GOTO    getfor          ; no - repeat
MPASM 03.70.01 Released                            MOTORS.ASM   2-16-2006  19:50:42         PAGE  4


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00147         
004B   1287           00148         BCF     PORTC,5         ; yes - stop
004C   30FA           00149         MOVLW   D'250'          ; wait 250ms ..
004D   206D           00150         CALL    xms             ; .. before next step
004E   1909           00151 rev     BTFSC   PORTE,2         ; move reverse?
004F   0008           00152         RETURN                  ; no
                      00153 
0050   1D09           00154 wait2   BTFSS   PORTE,2         ; yes- wait for button..
0051   2850           00155         GOTO    wait2           ; ..release
0052   300A           00156         MOVLW   D'10'           ; yes - sub 10 from... 
Message[305]: Using default destination of 1 (file).
0053   02A2           00157         SUBWF   Target          ; .. servo target position
0054   1287           00158         BCF     PORTC,5         ; move ..
0055   1707           00159         BSF     PORTC,6         ; ..reverse
                      00160 
0056   2078           00161 getrev  CALL    getADC          ; get position
0057   1403           00162         BSF     STATUS,C        ; set carry flag
0058   0822           00163         MOVF    Target,W        ; load position
Message[305]: Using default destination of 1 (file).
0059   029E           00164         SUBWF   ADRESH          ; compare with target 
005A   1803           00165         BTFSC   STATUS,C        ; far enough?
005B   2856           00166         GOTO    getrev          ; no - repeat
                      00167         
005C   1307           00168         BCF     PORTC,6         ; yes - stop
005D   30FA           00169         MOVLW   D'250'          ; wait 250ms ..
005E   206D           00170         CALL    xms             ; .. before next step
005F   0008           00171         RETURN
                      00172 
                      00173 ; Output one cycle of stepper clock.........................
                      00174 
0060   1408           00175 step    BSF     PORTD,0         ; switch on stepper LED
0061   1488           00176         BSF     PORTD,1         ; enable stepper drive
                      00177         
0062   1C89           00178         BTFSS   PORTE,1         ; test cw button
0063   1508           00179         BSF     PORTD,2         ; select clockwise
0064   1D09           00180         BTFSS   PORTE,2         ; test ccw button
0065   1108           00181         BCF     PORTD,2         ; select counter-clockwise
                      00182 
0066   1588           00183         BSF     PORTD,3         ; clock high
0067   3019           00184         MOVLW   D'25'           ; load delay time
0068   206D           00185         CALL    xms             
0069   1188           00186         BCF     PORTD,3         ; clock low
006A   3019           00187         MOVLW   D'25'           ; load delay time
006B   206D           00188         CALL    xms             
                      00189 
006C   0008           00190         RETURN
                      00191 
                      00192 ; Stepper software delay ...................................
                      00193 
006D   00A1           00194 xms     MOVWF   Count2          ; receive x ms in W
006E   2072           00195 down2   CALL    onems
Message[305]: Using default destination of 1 (file).
006F   0BA1           00196         DECFSZ  Count2
MPASM 03.70.01 Released                            MOTORS.ASM   2-16-2006  19:50:42         PAGE  5


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0070   286E           00197         GOTO    down2
0071   0008           00198         RETURN
                      00199 
0072   30F9           00200 onems   MOVLW   D'249'          ; delay one millisec
0073   00A0           00201         MOVWF   Count1
0074   0000           00202 down1   NOP
Message[305]: Using default destination of 1 (file).
0075   0BA0           00203         DECFSZ  Count1
0076   2874           00204         GOTO    down1
0077   0008           00205         RETURN
                      00206 
                      00207 ; Read ADC input and store .................................
                      00208 
0078   151F           00209 getADC  BSF     ADCON0,GO       ; start ADC..
0079   191F           00210 wait    BTFSC   ADCON0,GO       ; ..and wait for finish
007A   2879           00211         GOTO    wait
                      00212         
007B   081E           00213         MOVF    ADRESH,W        ; store result, high 8 bits
007C   0008           00214         RETURN                          
                      00215         
                      00216 ;----------------------------------------------------------
                      00217         END                     ; of source code
MPASM 03.70.01 Released                            MOTORS.ASM   2-16-2006  19:50:42         PAGE  6


SYMBOL TABLE
  LABEL                             VALUE 

ACKDT                             00000005
ACKEN                             00000004
ACKSTAT                           00000006
ADCON0                            0000001F
ADCON1                            0000009F
ADCS0                             00000006
ADCS1                             00000007
ADDEN                             00000003
ADFM                              00000007
ADIE                              00000006
ADIF                              00000006
ADON                              00000000
ADRESH                            0000001E
ADRESL                            0000009E
BCLIE                             00000003
BCLIF                             00000003
BF                                00000000
BRGH                              00000002
C                                 00000000
C1INV                             00000004
C1OUT                             00000006
C2INV                             00000005
C2OUT                             00000007
CCP1CON                           00000017
CCP1IE                            00000002
CCP1IF                            00000002
CCP1M0                            00000000
CCP1M1                            00000001
CCP1M2                            00000002
CCP1M3                            00000003
CCP1X                             00000005
CCP1Y                             00000004

⌨️ 快捷键说明

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