Danke sehr für deinen Tipp, aber bei mir arbeitet es ohne Interrupts (ISR) mit GIE = 0, weil das in meinem Fall unnötig war.
Die Hardware ist dort skizziert: https://www.roboternetz.de/community...parsam-steuern ?
Code:
;2-phasiger bipolarer Getriebesteppercontroller mit 4,7 µF Elkos seriell mit Spulen
LIST P=16F676
include "P16F676.inc" ; 12 kHZ ext. RC Oszillator
__CONFIG _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _EXTRC_OSC_CLKOUT & _BODEN_OFF
#define MAN PORTC,0 ; Motor an, mit PORTA,2 (INT) verbunden
#define MLR PORTC,1 ; Drehrichtung
#define S1P PORTC,2 ; 1. Spule
#define S2P PORTC,3 ; 2. Spule
ORG 0
call Init
Main btfss MAN ; drehen bzw. schlafen
goto Schlaf
Main1 btfss MLR ; gewünschte Drehrichtung prüfen
goto LRot
goto RRot
LRot bcf S1P ; links drehen
call Del
bsf S2P
call Del
bsf S1P
call Del
bcf S2P
btfss MAN
goto Schlaf
goto Main1
RRot bsf S1P ; rechts drehen
call Del
bsf S2P
call Del
bcf S1P
call Del
bcf S2P
btfss MAN
goto Schlaf
goto Main1
Del nop
goto $+1
return
Schlaf bcf INTCON,INTF
bsf INTCON,INTE
sleep
goto Main1
Init movlw 7
movwf CMCON ; comparator off, RA0-2 digital I/O
bsf STATUS,RP0
bcf ADCON0,ADON ; ADC
clrf ANSEL ; off
bsf OPTION_REG,INTE ; INT on
movlw 2F
movwf TRISA
movlw 21
movwf TRISC
bcf STATUS,RP0
clrf PORTC
return
end
Lesezeichen