📄 r.txt
字号:
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 + -