📄 seat1.asm
字号:
; DATE 4/7/95
; PIC16C54 4.00 MHz
indadd equ 0 ; indirect addressing register
rtcc equ 1 ; counter
pc equ 2 ; program counter
status equ 3 ; status register
carry equ 0 ; carry bit
dcarry equ 1 ; digit carry bit
pdown equ 3 ; power down bit
watdog equ 4 ; watchdog timeout bit
fsr equ 4 ; file select register
z equ 2 ; zero
spare equ 7 ; spare bit in status reg
porta equ 5 ; 4 phase stepper motor
portb equ 6 ; inputs
sen_r equ 0 ; opto sensor inputs for end
sen_f equ 1 ; of travel
fwd equ 2 ; forward switch/ reverse switch
fudge equ 25h ; fudge in delay loop
; *********** registers ***********************************
timer equ 09h ; time counter
outpat equ 0ah ; current step pattern
count equ 0bh ; number of steps to move
tempry equ 0ch ; long timer
srate equ 0dh ; rate of step - delay
list p=16c54
org 00
; ******** cw / ccw lookup tables for stepper ***********
; incoming value points to next step sequence for motor
; depending if forward or reverse motion is required
convup addwf pc
retlw 0 ; 0
retlw 0 ; 1
retlw 0 ; 2
retlw 9 ; 3
retlw 0 ; 4
retlw 0 ; 5
retlw 3 ; 6
retlw 0 ; 7
retlw 0 ; 8
retlw 0ch ; 9
retlw 0 ; a
retlw 0 ; b
retlw 6 ; c
retlw 0 ; d
retlw 0 ; e
retlw 0 ; f
convdn addwf pc
retlw 0 ; 0
retlw 0 ; 1
retlw 0 ; 2
retlw 6 ; 3
retlw 0 ; 4
retlw 0 ; 5
retlw 0ch ; 6
retlw 0 ; 7
retlw 0 ; 8
retlw 3 ; 9
retlw 0 ; a
retlw 0 ; b
retlw 9 ; c
retlw 0 ; d
retlw 0 ; e
retlw 0 ; f
; ************ stepper delay ***************************
wait clrf rtcc
clrwdt
wa1 btfss rtcc,0
goto wa1
decfsz timer,1 ;9
goto wait
retlw 0
; ***************** main ***********************************
init clrf portb ; clear b
clrf porta
movlw 00h
tris porta ; set port a as outputs
movlw 0fh ; set up portb as inputs
tris portb ; send it to tris
movlw b'00000111' ; rtcc pre-scalar /256
option ; 256us per count
movlw b'00000011' ; initial position
movwf outpat ; load into register
main clrf porta ; turn off motor drive
main2 clrwdt
movfw portb
andlw 07h
addwf pc,f ; get position in table
goto main ; 0
goto main ; 1
goto for ; 2
goto for ; 3
goto main ; 4
goto rev ; 5
goto main ; 6
goto rev ; 7
for movf outpat,w ; get pattern for stepper
call convup ; convert step
goto out ; jump to common output section
rev movf outpat,w ; get pattern for stepper
call convdn ; convert step
out movwf outpat ; store current
movwf porta ; output it
movlw fudge ; get rate
movwf timer ; load temp reg
call wait ; delay
goto main2
org 1ffh ; reset vector
goto init
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -