Krokový motor - pic

Dobrý den,

potřeboval bych pomoci s krokovým motorem, úkol mám do škole.

Zadání:

2 tlačítka, 2 páčky, 6 ledek. 1. tlačítko (portb,4) ubírá rychlost krok. motoru, 2. tlačítko (portb,5) zvyšuje rychlost. 1. páčka (portb,6) mění směr otáčení, 2. páčka (portb,7) vypíná a zapíná točení motoru. 6 ledek znázorňuje otáčení, takže je to takový světelný had (ledky porta, 0-5). Dále krokový motor má mít 8 rychlostí, takže nesmí mít 9 a rychlost krok. motoru má být vidět na displeji.

… a abych nezapomněl, tlačítko se má testovat při zmáčknutí a odmáčknutí.

Něco jsem se pokusil udělat, dělal jsem na tom docela dlouho a měl jsem víc verzí. Tato verze dělá pouze to, že zapíná a vypíná krok. motor, světelný had běží, ale rychlost regulovat nejde. Dále jde měnit směr. Víc bohužel nemám a už si nevím rady jak bych to měl udělat, byl bych rád za rady, děkuji.

PIC16F873

BSF STATUS,RP0
CLRF TRISA
MOVLW 0xF0
MOVWF TRISB
BCF STATUS,RP0

reg1			equ 20h
reg2			equ 21h

minrychlost 	equ	b'10000000'
maxrychlost 	equ 	b'00000001'
rychlost		equ	b'00000000'

dispw
cekej

start

CLRWDT

BTFSS	PORTB,7
GOTO	start
BTFSS	PORTB,6
GOTO	dozadu
GOTO	dopredu

dozadu

CALL	prgm2

MOVLW	B'000001'
MOVWF	PORTA
CALL	delay
MOVLW	B'000010'
MOVWF	PORTA
CALL	delay
MOVLW	B'000100'
MOVWF	PORTA
CALL	delay
MOVLW	B'001000'
MOVWF	PORTA
CALL	delay
MOVLW	B'010000'
MOVWF	PORTA
CALL	delay
MOVLW	B'100000'
MOVWF	PORTA
CALL	delay
GOTO	zmenarychlost	

dopredu

CALL	prgm1

MOVLW	B'100000'
MOVWF	PORTA
CALL	delay
MOVLW	B'010000'
MOVWF	PORTA
CALL	delay
MOVLW	B'001000'
MOVWF	PORTA
CALL	delay
MOVLW	B'000100'
MOVWF	PORTA
CALL	delay
MOVLW	B'000010'
MOVWF	PORTA
CALL	delay
MOVLW	B'000001'
MOVWF	PORTA
CALL	delay

zmenarychlost

BTFSC	PORTB,4
GOTO	pricte
BTFSS	PORTB,5
GOTO	start
GOTO	odecte

pricte

CALL	prgm3

MOVLW		maxrychlost
SUBWF		rychlost,W
BTFSS		STATUS,Z
GOTO		start

RRF		rychlost,W
dispw
GOTO 		start

odecte

CALL		prgm4

MOVLW		minrychlost
SUBWF		rychlost,W
BTFSS		STATUS,Z
GOTO		start

RLF		rychlost,W
dispw
GOTO start

prgm1 ;podprogram pro zjištění změny směru otáčení, pro směr dopředu

BTFSC	PORTB,6
GOTO	$+3
MOVLW	minrychlost		;rychlost 1
MOVWF	PORTA
RETURN

prgm2 ;podprogram pro zjištění změny směru otáčení, pro směr dozadu

BTFSS	PORTB,6
GOTO	$+3
MOVLW	minrychlost		;rychlost 1
MOVWF	PORTA
RETURN

prgm3 ;podprogram pro zjištění stavu tlačítka 4, zdali bylo odmáčknuto

BTFSS	POTRB,4
GOTO	$+
MOVLW	
MOVWF	
RETURN

prgm4 ;podprogram pro zjištění stavu tlačítka 5, zdali bylo odmáčknuto

BTFSC	POTRB,5
GOTO	$+
MOVLW	
MOVWF
RETURN

delay

CLRF	 reg1
MOVLW    rychlost
	MOVWF    reg2

wait

INCFSZ	reg1,1
GOTO	wait
DECFSZ	reg2,1
GOTO	wait
	RETURN

Omlouvám se nejde mi sem přidat ten soubor, tak jsem to sem zkopírovat ten program.