Discussion in "PIC Microcontroller Discussion" started by    cestudent    Nov 10, 2008.
Mon Nov 10 2008, 06: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, 12: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, 02: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, 02:27 PM
#4
thanx alot Ajay & sashijoseph
am gonna check both codes and feed back with the results
Tue Nov 11 2008, 12:58 PM
#5
the problem has been solved with disabling the watchdog timer
thanx guyz for ur help

Thu Nov 13 2008, 02: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, 04: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, 04:23 PM ]
Fri Nov 14 2008, 09:27 AM
#8
any help ppl
Fri Nov 14 2008, 03: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, 04:04 PM ]
Sun Nov 16 2008, 09:11 AM
#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, 11:47 AM ]

Get Social

Information

Powered by e107 Forum System

Conversation

ExperimenterUK
Sat Sep 13 2014, 12:34 PM
jaimin1212,Pimpalkhare Create a thread for your question
jaimin1212
Sat Sep 13 2014, 02:35 AM
i want to make self balancing robot using MPU6050 using atmega8.. please help to get data of gyro and accelerometer from this sensor through atmega8.
Thu Sep 11 2014, 09:00 AM
Sunil Pimpalkhare
Hello sir, I am trying to make Wearfin project https://www.youtube.com/watch?v=iZ6PVBvQf-g so can u help me in teaching how to built the program???
Thu Sep 11 2014, 02:21 AM
hariom panday
plz hlp me in my project
iec.naga
Tue Sep 09 2014, 01:19 AM
spi
Mon Sep 08 2014, 08:14 AM
fameem
water changing in fish tank automatically using microcontoller with timer. send idea to me
dexter_a
Sat Sep 06 2014, 11:09 AM
hello guys
Sat Sep 06 2014, 10:10 AM
munaxa
plx guide me
Sat Sep 06 2014, 10:09 AM
munaxa
hi i want to buy plx guie me
ajay_bhargav
Sat Sep 06 2014, 03:10 AM
@Ben, Its hard to undrstand the context like this. If you can post in forum with some example code we might answer you better.

Downloads

Comments

deepbhadani
Fri Sep 19 2014, 01:08 PM
desaiakshay92
Fri Sep 19 2014, 12:45 AM
Fiddu
Thu Sep 18 2014, 02:28 AM
piku_123
Tue Sep 16 2014, 11:29 AM
qudor
Tue Sep 16 2014, 11:06 AM
sara_seecs
Tue Sep 16 2014, 10:53 AM
akshar
Fri Sep 12 2014, 12:45 PM
iec.naga
Tue Sep 09 2014, 01:09 AM

Online

Guests: 53, Members: 0 ...

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

Members: 37517
Newest member: deepbhadani
Forum Activity
kirangowle Avatar
Posted By kirangowle
Sat Sep 20 2014, 12:35 AM
Hello All,I want to connect normal speaker (as a s...
ajay_bhargav Avatar
Posted By ajay_bhargav
Wed Sep 17 2014, 12:59 AM
I think its important to list out the features of ...
ajay_bhargav Avatar
Posted By ajay_bhargav
Wed Sep 17 2014, 12:45 AM
you need to put a wait condition in ISR till the s...
akshar Avatar
Posted By akshar
Mon Sep 15 2014, 04:41 AM
sir,i used microcontroller 89v51rd2 in circuit. No...
bobparihar Avatar
Posted By bobparihar
Mon Sep 15 2014, 02:24 AM
i am programming interrupt 0 using 8051my task is....
ExperimenterUK Avatar
Posted By ExperimenterUK
Sat Sep 13 2014, 12:23 PM
There may not be an exact equivalent .You will hav...
akshar Avatar
Posted By akshar
Sat Sep 13 2014, 03:18 AM
Sir, Good Morning,Thank you for making me a member...
ajay_bhargav Avatar
Posted By ajay_bhargav
Thu Sep 11 2014, 12:52 AM
which compiler are you using? I suggest XC8 with M...
ajay_bhargav Avatar
Posted By ajay_bhargav
Thu Sep 11 2014, 12:49 AM
I always prefer Olimex Dev boards when it comes to...
ajay_bhargav Avatar
Posted By ajay_bhargav
Thu Sep 11 2014, 12:44 AM
master will always lower down the Chip select... s...