Discussion in "PIC Microcontroller Discussion" started by    cestudent    Nov 10, 2008.
Mon Nov 10 2008, 11:56 AM
#1
hello guyz
how r u all?

i have a problem while testing stepper motor
i wrote an assembly code to rotate the stepper motor for a Specific number of steps and then it should stop but the stepper is still moving!!! can u tell what to do coz i want to stop the stpper motor after the count=0 .
am using pic16f84a and 6 wire stepper motor



  
; 
;******************************************************************* 
; NOTES: 
; 
; 
;       PORTBO= NORTH POLE 
;       PORTB1= EAST POLE 
;       PORTB2= SOUTH POLE 
;       PORTB3= WEST POLE 
;***************************************************************** 


PORTA      EQU     5 
PORTB                      EQU     6 
STATUS      Equ    3 
TMR0      EQU   1 
COUNT      EQU   0CH 
COUNT1      EQU   0DH 
INTCON      EQU   0BH 
COUNTD      EQU   0FH 

;****************************************************************** 
        LIST    P=16F84A 
        
        org      0 
        goto    START 

;********************************************* 
  

DELAY   CLRF   TMR0 
   MOVLW   .10 
   MOVWF   COUNT 
   BCF   STATUS,5 
WAITA   BCF   INTCON,2 
WAITB   BTFSS   INTCON,2 
   GOTO   WAITB 
   DECFSZ   COUNT,1 
   GOTO   WAITA 
   RETURN 
   RETLW   0 
;************************************** 

START 
  
   BSF   STATUS,5 ;BANK1 
   MOVLW   B'00000000'       
   TRIS   PORTB               ; b0:b3 " stepper output " 
   MOVLW   B'00000011'       
   TRIS   PORTA    
   MOVLW   B'0000001' 
   OPTION 
   BCF     STATUS,5  ; BANK0 

   CLRF   PORTB 
   MOVLW   .10 
   MOVWF   COUNTD 
    
LOOP1    
   BSF   PORTB,4 
   CALL   DELAY 

   MOVLW   .1 
   MOVWF   PORTB 

   CALL   DELAY 
    


   MOVLW   .2 
   MOVWF   PORTB 


   CALL   DELAY 
    

   MOVLW   .4 
   MOVWF   PORTB 

   CALL   DELAY 
    
    
   MOVLW   .8 
   MOVWF   PORTB 
    

   BCF   PORTB,4 
   DECFSZ   COUNTD 
    GOTO   LOOP1 

   BSF   PORTB,5 
LL   NOP 
   GOTO LL 

   END 
    


plzz help me
Mon Nov 10 2008, 05:45 PM
#2
   BCF   PORTB,4
   DECFSZ   COUNTD
;    GOTO   LOOP1
;remove this instruction and try again.

   BSF   PORTB,5
LL   NOP
   GOTO LL

   END
Mon Nov 10 2008, 07:14 PM
#3
BCF   PORTB,4
   DECFSZ   COUNTD
    GOTO   LOOP1


The DECFSZ instruction is missing an operand.
Change to...

BCF   PORTB,4
   DECFSZ   COUNTD,1
    GOTO   LOOP1
Mon Nov 10 2008, 07:27 PM
#4
thanx alot Ajay & sashijoseph
am gonna check both codes and feed back with the results
Tue Nov 11 2008, 05:58 PM
#5
the problem has been solved with disabling the watchdog timer
thanx guyz for ur help

Thu Nov 13 2008, 07:25 AM
#6
great well my answer was wrong sorry.. i did not see your program properly.

[Topic moved to PIC Microcontroller Discussion]
Thu Nov 13 2008, 09:07 PM
#7
sorry guys i have an other problem

let me tell u what i do , i am doing lift project , in this code am using the input switches as floor requests and each floor request has specific number of steps and the lift should calculate the distance and the direction

but the problem when i tested the code the distance was wrong !!

maybe because i dont know how to tell the stepper motor to move for 30 steps for example or is there any calculation to do that in a correct way
here my code

; 
;*******************************************************************
; NOTES: 
; 
;
;       PORTBO= NORTH POLE
;       PORTB1= EAST POLE 
;       PORTB2= SOUTH POLE
;       PORTB3= WEST POLE 
;*****************************************************************


PORTA		EQU     5
PORTB           EQU     6 
STATUS		Equ 	3
TMR0		EQU	1
COUNT		EQU	0CH 
COUNT1		EQU	0DH
INTCON		EQU	0BH
COUNTD		EQU	20H
CURRENTCOUNT	EQU	21H 
DISTANCE	EQU	22H 

;******************************************************************
        LIST    P=16F84A
        __CONFIG 0x200B 
        org   	0
        goto 	START

;*********************************************
 

DELAY	CLRF	TMR0
	MOVLW	.3
	MOVWF	COUNT
	BCF	STATUS,5
WAITA	BCF	INTCON,2
WAITB	BTFSS	INTCON,2
	GOTO	WAITB
	DECFSZ	COUNT,1
	GOTO	WAITA
	RETURN
	RETLW	0
;**************************************

START 
 
	BSF	STATUS,5 ;BANK1
	MOVLW	B'00000000'		 ; SET B0 , B1 ,B2,B3,AS OUTPUT  
	TRIS	PORTB	
	MOVLW	B'00001111'		 ; SET A0 , A1 ,A2,A3,AS INPUT SWITCHES 
	TRIS	PORTA	
	MOVLW	B'0000001'
	OPTION
	BCF  	STATUS,5  ; BANK0 

	CLRF	PORTB
	


	MOVLW	.0
	MOVWF	CURRENTCOUNT 

loop1	BTFSS	PORTA,0 	; check for a floor1 request 
	goto	check1
	MOVLW	.0
	MOVWF	COUNTD
	GOTO	MAIN
		
	
check1	BTFSS	PORTA,1		; check for a floor2 request 
	goto	check2
	MOVLW	.30
	MOVWF	COUNTD
	GOTO	MAIN



check2	BTFSS	PORTA,2		; check for a floor3 request 
	goto	check3
	MOVLW	.50
	MOVWF	COUNTD
	GOTO	MAIN
	
	
check3	BTFSS	PORTA,3		; check for a floor4 request 

	goto	check4
	MOVLW	.70
	MOVWF	COUNTD
	GOTO	MAIN

check4	goto	loop1	


MAIN 



	MOVF	COUNTD,W
	subwf	CURRENTCOUNT,W   ; distanation is w 
	MOVWF	DISTANCE
	MOVF	COUNTD,W
	MOVWF	CURRENTCOUNT 
	btfss	STATUS,0        ; test if the result is positive or negative 
	goto	UP
	goto    DOWN

	



UP 	MOVLW	.8
	MOVWF	PORTB

	CALL   DELAY
	


 	MOVLW	.4
	MOVWF	PORTB


	CALL	DELAY 
	

 	MOVLW	.2
	MOVWF	PORTB

	CALL	DELAY 
	
	MOVLW	.1
	MOVWF	PORTB
	

	CALL	DELAY  
	DECFSZ	DISTANCE,1
 	GOTO	UP
	GOTO	loop1 
	 




DOWN 	MOVLW	.1
	MOVWF	PORTB

	CALL   DELAY
	


 	MOVLW	.2
	MOVWF	PORTB


	CALL	DELAY 
	

 	MOVLW	.4
	MOVWF	PORTB

	CALL	DELAY 
	
	MOVLW	.8
	MOVWF	PORTB
	

	CALL	DELAY  
	DECFSZ	DISTANCE,1
 	GOTO	DOWN 
	GOTO	loop1 
	 

END 



	
						



waiting for ur replies guyz


[ Edited Thu Nov 13 2008, 09:23 PM ]
Fri Nov 14 2008, 02:27 PM
#8
any help ppl
Fri Nov 14 2008, 08:55 PM
#9
You have routines UP and Down which presumably move the stepper one step either way.

Do they work ?
ie if you run UP 50 times, does it move 50 steps ?
if you run UP 50 times and then Down 50 times do you end up at the same place.?

If so, congratulations your hardware works and
you have a way to measure floors , just decide how many loops of UP or Down is a floor.

The general layout of your program seems odd to me.
I would suggest something like,

Start
//Initialize variables
Main:

Read button:
call Check for button pressed //routine to read buttons..set new floor
call Calculate Distance and direction //routine to... guess what..
call Up_ Down loops //do a set number of loops
go to Read button. //Go round again




Use Calls and returns and less GOTOs


[ Edited Fri Nov 14 2008, 09:04 PM ]
Sun Nov 16 2008, 02:11 PM
#10
thanx ExperimenterUK for ur help and advice
i have a question when I output .1 this means that the stepper has to move one step right ?


[ Edited Sun Nov 16 2008, 04:47 PM ]

Get Social

Information

Powered by e107 Forum System

Conversation

Fri Jan 23 2015, 04:29 AM
lolokijuh
DJ Bakal tulungan mo ako s IC Tester
Fri Jan 23 2015, 04:29 AM
lolokijuh
sir help about IC Tester
Fri Jan 23 2015, 04:28 AM
lolokijuh
sir help me
Thu Jan 22 2015, 08:27 PM
1
-1'
Thu Jan 22 2015, 08:27 PM
1
1
Thu Jan 22 2015, 01:59 PM
apparao majji
could you please help in programming
Thu Jan 22 2015, 10:13 AM
avianash
hi my account is inactive plz help me
gaurav.k
Thu Jan 22 2015, 07:04 AM
not able top post any reply from my login... after pressing "post Reply "it takes me to a blank page
Thu Jan 22 2015, 04:06 AM
frankie
friend, that modification should be done in the program so that led up and down oscillation is one blink, thanks
Wed Jan 21 2015, 07:16 PM
1
-1'

Downloads

Comments

nawfel
Sat Jan 17 2015, 07:27 AM
Rohi123
Sat Jan 10 2015, 11:00 AM
safakarici
Fri Jan 09 2015, 08:55 PM
Nikita_Pinjare
Thu Jan 08 2015, 03:10 PM
mayank058
Wed Jan 07 2015, 05:43 AM
Overeating
Tue Jan 06 2015, 05:56 AM
trancebreaker11
Sun Jan 04 2015, 07:42 AM
akash474001
Thu Jan 01 2015, 05:49 AM

Online

Guests: 26, Members: 0 ...

most ever online: 182184
(Members: , Guests: 182184) on 06 Aug 2010: 05:37 AM

Members: 37573
Newest member: nawfel
Forum Activity
mayank058 Avatar
Posted By mayank058
Thu Jan 22 2015, 12:16 PM
dear sir, Now i want to generate a si...
mayank058 Avatar
Posted By mayank058
Tue Jan 20 2015, 06:40 AM
dear sir, Now its working properly. Th...
ajay_bhargav Avatar
Posted By ajay_bhargav
Tue Jan 20 2015, 04:36 AM
ajay_bhargav Avatar
Posted By ajay_bhargav
Tue Jan 20 2015, 04:35 AM
I found another issue with your code:calling PWMIn...
mayank058 Avatar
Posted By mayank058
Mon Jan 19 2015, 05:47 AM
dear sir, Please do it for me..
PsySc0rpi0n Avatar
Posted By PsySc0rpi0n
Sun Jan 18 2015, 08:23 PM
But it's a way to debug to consider to the future ...
ajay_bhargav Avatar
Posted By ajay_bhargav
Sun Jan 18 2015, 06:04 AM
I remember i created small library for lpc23xx ser...
ajay_bhargav Avatar
Posted By ajay_bhargav
Sun Jan 18 2015, 06:00 AM
It's obviously a personal choice. Digging into map...
ajay_bhargav Avatar
Posted By ajay_bhargav
Sun Jan 18 2015, 05:58 AM
@karan123 I suggest you to create a new thread for...
mayank058 Avatar
Posted By mayank058
Fri Jan 16 2015, 06:55 AM
dear sir, I used all these methods.. w...