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
Forum Activity
diana1234 Avatar
Posted By diana1234
Wed Jul 23 2014, 07:20 AM
@ Ajay sirMay be there is power supply problem i t...
pravin_35 Avatar
Posted By pravin_35
Wed Jul 23 2014, 04:29 AM
Hi, Need library or sample code for PIC16f882,, Do...
Anup Teke Avatar
Posted By Anup Teke
Wed Jul 23 2014, 03:28 AM
Sir,I was doing like thisMCP3901_CS = 0;WriteSPI1(0x01);TempData = ReadSPI1( );TempData <<= 8;TempData |= ReadSPI1( );TempData <<= 8;TempData |= ReadSPI1( );MCP3901_CS = 1;and my problem solved by doing like thisMCP3901_CS = 0; WriteSPI1(0x01); TempData = ReadSPI1( ); TempData <<= 8; MCP3901_CS = 1; MCP3901_CS = 0; WriteSPI1(0x03); TempData |= ReadSPI1( ); TempData <<= 8; MCP3901_CS = 1; MCP3901_CS = 0; WriteSPI1(0x05); TempData |= ReadSPI1( ); MCP3901_CS = 1;
pravin_35 Avatar
Posted By pravin_35
Wed Jul 23 2014, 12:57 AM
Can the Pickit3 read the Pics signature bytes and ...
ExperimenterUK Avatar
Posted By ExperimenterUK
Tue Jul 22 2014, 04:24 PM
Can the Pickit3 read the Pics signature bytes and ...
ExperimenterUK Avatar
Posted By ExperimenterUK
Tue Jul 22 2014, 04:16 PM
Does the DS1307 keep time ?That is, if you set it ...
pravin_35 Avatar
Posted By pravin_35
Tue Jul 22 2014, 01:05 PM
hi... i have done with a simple blinky program wi...
pravin_35 Avatar
Posted By pravin_35
Tue Jul 22 2014, 07:23 AM
Autoscale does not know what settings you keep on ...
ajay_bhargav Avatar
Posted By ajay_bhargav
Tue Jul 22 2014, 02:19 AM
[Topic moved to PIC Microcontroller Discussion For...
ajay_bhargav Avatar
Posted By ajay_bhargav
Tue Jul 22 2014, 02:18 AM
[Topic moved to electronics discussion forum]

Conversation

Wed Jul 23 2014, 05:49 AM
R.ABHISHEK
sir,pls message on microcontroller 8051 assambly language new program
Wed Jul 23 2014, 05:47 AM
R.ABHISHEK
sir,pls message on 8051 microcontroller assambly language program new quastions
ajay_bhargav
Tue Jul 22 2014, 09:18 AM
@Pragya Android application is taken from google play. Only Author has its source with him. Application is only used in this project.
Tue Jul 22 2014, 04:58 AM
Pragya
plz send me 8051 code and android code for android based device controller via Bluetooth .Here in this project I am using Hc-06 Bluetooth module
Thu Jul 10 2014, 09:57 AM
Caleb
plz someone mail me the source code for that project
Thu Jul 10 2014, 09:57 AM
Caleb
http://www.8051projects.net/download-d188-control-your-pc-tv-remote.html
ExperimenterUK
Tue Jul 08 2014, 03:25 PM
Post questions in the forum.. this area is for chat
Tue Jul 08 2014, 08:15 AM
P.Panchanyam
Sir i want some new ideas for my final year projects ,which would help for our soceity in future
Tue Jul 08 2014, 01:39 AM
jasvinder
Dear Sir Ref. to the discussion held with under sign, the detail is as under--- We are in weighing scale field since 1986. We are assembling the scales by purchasing the material from out source ( From India and other countries). Now we decide to make our own Card in our decided shape. So we want to develop a universal card , which we can make all types of scales of up 100000 counts with 7 segment LED Display . Also with other features like Printing, Counting, RS232 Etc. And Three Pass words at different levels. And we can edit the Softwear. What else you can provide in this field, also mention. We will pay you the development , softwear and testing charges. And up-gradation charges at time to time. Our web site is modern-scales.com Kindly revert.
Mon Jul 07 2014, 09:20 AM
tadashige matuda
Please tell me about pic instruction ADDWF fileName,f ; fileName=fileName+W. Why twice memory access (1)fileName+W,(2)fileName=fileName+W, be able in one instruction cycle. For MOVWF fileName ; memory access once in an one instruction cycle.

Downloads

Comments

vinosentinal
Mon Jul 21 2014, 08:28 PM
niks_here
Sun Jul 20 2014, 05:38 PM
athiramsankar
Sun Jul 20 2014, 12:00 PM
salemalqahtani
Sun Jul 20 2014, 12:55 AM
nagarajan.electro
Sat Jul 19 2014, 12:49 AM
praru
Sat Jul 12 2014, 07:51 AM
nmcleod1993
Thu Jul 10 2014, 09:02 AM
abdulmannan39
Thu Jul 10 2014, 05:50 AM

Online

Guests: 50, Members: 0 ...

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

Members: 37479
Newest member: vinosentinal