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

📄 r.txt

📁 pic得电机控制程序
💻 TXT
📖 第 1 页 / 共 2 页
字号:
        movlw   b'00001010'     ;Set Right data
        goto    drive_end       ;Jump to PORTA write
;-------
drive4
        movf    porta,w         ;Read PORTA
        sublw   b'000001010'    ;Check motor position
        bnz     drive6          ;Unmatch
        movf    mode,w          ;Read mode
        sublw   d'1'            ;Right ?
        bz      drive5          ;Yes. Right
        movlw   b'00000110'     ;No. Set Left data
        goto    drive_end       ;Jump to PORTA write
drive5
        movlw   b'00001001'     ;Set Right data
        goto    drive_end       ;Jump to PORTA write
;-------
drive6
        movf    porta,w         ;Read PORTA
        sublw   b'000001001'    ;Check motor position
        bnz     drive8          ;Unmatch
        movf    mode,w          ;Read mode
        sublw   d'1'            ;Right ?
        bz      drive7          ;Yes. Right
        movlw   b'00001010'     ;No. Set Left data
        goto    drive_end       ;Jump to PORTA write
drive7
        movlw   b'00000101'     ;Set Right data
        goto    drive_end       ;Jump to PORTA write
;-------
drive8
        movlw   b'00000101'     ;Compulsion setting

drive_end
        movwf   porta           ;Write PORTA
        goto    start           ;Jump to start

;*************  1msec Timer Subroutine  *****************
timer
        movlw   d'200'          ;Set loop count
        movwf   count2          ;Save loop count
tmlp    nop                     ;Time adjust
        nop                     ;Time adjust
        decfsz  count2,f        ;count - 1 = 0 ?
        goto    tmlp            ;No. Continue
        return                  ;Yes. Count end

;********************************************************
;             END of Stepper Motor controller
;********************************************************

        end
 


--------------------------------------------------------------------------------

Listing file of Stepper Motor controller

MPASM 02.50.02 Intermediate      STEP.ASM   3-9-2001  23:52:45         PAGE  1


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00001 ;********************************************************
                      00002 ;
                      00003 ;               Stepper Motor controller
                      00004 ;
                      00005 ;                                 Author : Seiichi Inoue
                      00006 ;********************************************************
                      00007 
                      00008         LIST            P=PIC16F84A
                      00009         INCLUDE         P16F84A.INC
                      00001         LIST
                      00002 ; P16F84A.INC  Standard Header File, Version 2.00'(modify)
                      00134         LIST
2007   3FF2           00010         __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
                      00011 
                      00012 ;****************  Label Definition  ********************
                      00013         CBLOCK  H'0c'
  0000000C            00014 MODE                            ;Operation mode
                      00015                                 ;0=stop 1=right 2=left
  0000000D            00016 COUNT1                          ;Wait counter
  0000000E            00017 COUNT2                          ;Wait counter(for 1msec)
                      00018         ENDC
                      00019 
  00000000            00020 RB0     EQU     0               ;RB0 of PORTB
  00000001            00021 RB1     EQU     1               ;RB1 of PORTB
  00000002            00022 RB2     EQU     2               ;RB2 of PORTB
  00000005            00023 RB5     EQU     5               ;RB5 of PORTB
  00000007            00024 RB7     EQU     7               ;RB7 of PORTB
                      00025 
                      00026 ;****************  Program Start  ***********************
0000                  00027         ORG     0               ;Reset Vector
0000   2805           00028         GOTO    INIT
0004                  00029         ORG     4               ;Interrupt Vector
0004   018B           00030         CLRF    INTCON          ;Clear Interruption reg
                      00031 
                      00032 ;****************  Initial Process  *********************
0005                  00033 INIT
0005   1683           00034         BSF     STATUS,RP0      ;Change to Bank1
0006   0185           00035         CLRF    TRISA           ;Set PORTA all OUT
0007   3027           00036         MOVLW   B'00100111'     ;RB0,1,2.5=IN RB7=OUT
0008   0086           00037         MOVWF   TRISB           ;Set PORTB
0009   3080           00038         MOVLW   B'10000000'     ;RBPU=1 Pull up not use
000A   0081           00039         MOVWF   OPTION_REG      ;Set OPTION_REG
000B   1283           00040         BCF     STATUS,RP0      ;Change to Bank0
000C   018C           00041         CLRF    MODE            ;Set mode = stop
000D   018D           00042         CLRF    COUNT1          ;Clear counter
000E   018E           00043         CLRF    COUNT2          ;Clear counter
000F   3005           00044         MOVLW   B'00000101'     ;Set PORTA initial value
0010   0085           00045         MOVWF   PORTA           ;Write PORTA
0011   1786           00046         BSF     PORTB,RB7       ;Set RB7 = 1
0012   1A86           00047         BTFSC   PORTB,RB5       ;RB5 = 0 ?
0013   2812           00048         GOTO    $-1             ;No. Wait
                      00049 
0014                  00050 START
MPASM 02.50.02 Intermediate      STEP.ASM   3-9-2001  23:52:45         PAGE  2


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                      00051 ;*************  Check switch condition  *****************
0014   1886           00052         BTFSC   PORTB,RB1       ;RB1(stop key) = ON ?
0015   2818           00053         GOTO    CHECK1          ;No. Next
0016   018C           00054         CLRF    MODE            ;Yes. Set stop mode
0017   2821           00055         GOTO    DRIVE           ;No. Jump to motor drive
0018                  00056 CHECK1
0018   1906           00057         BTFSC   PORTB,RB2       ;RB2(right key) = ON ?
0019   281D           00058         GOTO    CHECK2          ;No. Next
001A   3001           00059         MOVLW   D'1'            ;Yes. Set right mode
001B   008C           00060         MOVWF   MODE            ;Save mode
001C   2821           00061         GOTO    DRIVE           ;No. Jump to motor drive
001D                  00062 CHECK2
001D   1806           00063         BTFSC   PORTB,RB0       ;RB0(left key) = ON ?
001E   2821           00064         GOTO    DRIVE           ;No. Jump to motor drive
001F   3002           00065         MOVLW   D'2'            ;Yes. Set left mode
0020   008C           00066         MOVWF   MODE            ;Save mode
                      00067 
                      00068 ;********************  Motor drive  *********************
0021                  00069 DRIVE
0021   080C           00070         MOVF    MODE,W          ;Read mode
0022   1903 2814      00071         BZ      START           ;mode = stop
0024   1786           00072         BSF     PORTB,RB7       ;Set RB7 = 1
0025   1A86           00073         BTFSC   PORTB,RB5       ;RB5 = 0 ?
0026   2825           00074         GOTO    $-1             ;No. Wait
0027   3005           00075         MOVLW   D'5'            ;Set loop count(5msec)
0028   008D           00076         MOVWF   COUNT1          ;Save loop count
0029   2062           00077 LOOP    CALL    TIMER           ;Wait 1msec
002A   0B8D           00078         DECFSZ  COUNT1,F        ;count - 1 = 0 ?
002B   2829           00079         GOTO    LOOP            ;No. Continue
002C   1386           00080         BCF     PORTB,RB7       ;Set RB7 = 0
002D   1E86           00081         BTFSS   PORTB,RB5       ;RB5 = 1 ?
002E   282D           00082         GOTO    $-1             ;No. Wait
002F   0805           00083         MOVF    PORTA,W         ;Read PORTA
0030   3C05           00084         SUBLW   B'000000101'    ;Check motor position
0031   1D03 283B      00085         BNZ     DRIVE2          ;Unmatch
0033   080C           00086         MOVF    MODE,W          ;Read mode
0034   3C01           00087         SUBLW   D'1'            ;Right ?
0035   1903 2839      00088         BZ      DRIVE1          ;Yes. Right
0037   3009           00089         MOVLW   B'00001001'     ;No. Set Left data
0038   2860           00090         GOTO    DRIVE_END       ;Jump to PORTA write
0039                  00091 DRIVE1
0039   3006           00092         MOVLW   B'00000110'     ;Set Right data
003A   2860           00093         GOTO    DRIVE_END       ;Jump to PORTA write
                      00094 ;-------
003B                  00095 DRIVE2
003B   0805           00096         MOVF    PORTA,W         ;Read PORTA
003C   3C06           00097         SUBLW   B'000000110'    ;Check motor position
003D   1D03 2847      00098         BNZ     DRIVE4          ;Unmatch
003F   080C           00099         MOVF    MODE,W          ;Read mode
0040   3C01           00100         SUBLW   D'1'            ;Right ?
0041   1903 2845      00101         BZ      DRIVE3          ;Yes. Right
0043   3005           00102         MOVLW   B'00000101'     ;No. Set Left data
0044   2860           00103         GOTO    DRIVE_END       ;Jump to PORTA write
MPASM 02.50.02 Intermediate      STEP.ASM   3-9-2001  23:52:45         PAGE  3


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0045                  00104 DRIVE3
0045   300A           00105         MOVLW   B'00001010'     ;Set Right data
0046   2860           00106         GOTO    DRIVE_END       ;Jump to PORTA write
                      00107 ;-------
0047                  00108 DRIVE4
0047   0805           00109         MOVF    PORTA,W         ;Read PORTA
0048   3C0A           00110         SUBLW   B'000001010'    ;Check motor position
0049   1D03 2853      00111         BNZ     DRIVE6          ;Unmatch
004B   080C           00112         MOVF    MODE,W          ;Read mode
004C   3C01           00113         SUBLW   D'1'            ;Right ?
004D   1903 2851      00114         BZ      DRIVE5          ;Yes. Right
004F   3006           00115         MOVLW   B'00000110'     ;No. Set Left data
0050   2860           00116         GOTO    DRIVE_END       ;Jump to PORTA write
0051                  00117 DRIVE5
0051   3009           00118         MOVLW   B'00001001'     ;Set Right data
0052   2860           00119         GOTO    DRIVE_END       ;Jump to PORTA write
                      00120 ;-------
0053                  00121 DRIVE6
0053   0805           00122         MOVF    PORTA,W         ;Read PORTA
0054   3C09           00123         SUBLW   B'000001001'    ;Check motor position
0055   1D03 285F      00124         BNZ     DRIVE8          ;Unmatch
0057   080C           00125         MOVF    MODE,W          ;Read mode
0058   3C01           00126         SUBLW   D'1'            ;Right ?
0059   1903 285D      00127         BZ      DRIVE7          ;Yes. Right
005B   300A           00128         MOVLW   B'00001010'     ;No. Set Left data
005C   2860           00129         GOTO    DRIVE_END       ;Jump to PORTA write
005D                  00130 DRIVE7
005D   3005           00131         MOVLW   B'00000101'     ;Set Right data
005E   2860           00132         GOTO    DRIVE_END       ;Jump to PORTA write
                      00133 ;-------
005F                  00134 DRIVE8
005F   3005           00135         MOVLW   B'00000101'     ;Compulsion setting
                      00136 
0060                  00137 DRIVE_END
0060   0085           00138         MOVWF   PORTA           ;Write PORTA
0061   2814           00139         GOTO    START           ;Jump to start
                      00140 
                      00141 ;*************  1msec Timer Subroutine  *****************
0062                  00142 TIMER
0062   30C8           00143         MOVLW   D'200'          ;Set loop count
0063   008E           00144         MOVWF   COUNT2          ;Save loop count
0064   0000           00145 TMLP    NOP                     ;Time adjust
0065   0000           00146         NOP                     ;Time adjust
0066   0B8E           00147         DECFSZ  COUNT2,F        ;count - 1 = 0 ?
0067   2864           00148         GOTO    TMLP            ;No. Continue
0068   0008           00149         RETURN                  ;Yes. Count end
                      00150 
                      00151 ;********************************************************
                      00152 ;             END of Stepper Motor controller
                      00153 ;********************************************************
                      00154 
                      00155         END
MPASM 02.50.02 Intermediate      STEP.ASM   3-9-2001  23:52:45         PAGE  4

Label list has been deleted.


MEMORY USAGE MAP ('X' = Used,  '-' = Unused)

0000 : X---XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXX------- ----------------
2000 : -------X-------- ---------------- ---------------- ----------------

All other memory blocks unused.

Program Memory Words Used:   102
Program Memory Words Free:   922


Errors   :     0
Warnings :     0 reported,     0 suppressed
Messages :     0 reported,     0 suppressed


 

step_source.zip
step_hex.zip 



⌨️ 快捷键说明

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