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

📄 seat1.asm

📁 pic得电机控制程序
💻 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 + -