PDA

View Full Version : How to get .hex from this code??



irootsk
- 20th June 2009, 16:06
Hi guys.

I have been working with electronics for over 15years but i am absolutly newby with PIC's. That's include all stuff about programming them.
I've found one project which catched my eye. It's servo controller with PIC16F84A.
There is some sort of code, but i don't know how to use it. Can someone guide me what software i can use to get .hex file from that code?
I will really appreciate that.
Thanks a lot.

Best tegards
Brano

The project is here. (http://www.imagesco.com/articles/picservo/04.html)

Archangel
- 20th June 2009, 20:35
Hi Brano,
You will need the M E Labs PIC Basic Pro Compiler. It is available from:
http://www.rentron.com/PicBasic/PBP.htm
http://www.microengineeringlabs.com/
http://www.crownhill.co.uk/level3.php?cat=40

Michael Wakileh
- 20th June 2009, 22:56
...and http://www.mecanique.co.uk/....

Archangel
- 21st June 2009, 01:14
...and http://www.mecanique.co.uk/....

Omission unintentional, please pardon.

irootsk
- 21st June 2009, 02:17
Thank you guys for reply.
Doesn't the code from Listing 3 below have to be somehow modified?


'Manual control of two servomotors using 2 SPDT switches

'Use B1 to hold pulsewidth variable for servo 1
'Use B2 to hold pulsewidth variable for servo 2

'Initialize Variables

B1 = 150
B2 = 150

'start servo 1 at center position
'start servo 2 at center position

start:
IF pin1 = 0 Then left1
IF pin2 = 0 Then right1
IF pin4 = 0 Then left2
IF pin5 = 0 Then right2
PulsOut 0, B1
PulsOut 3, B2
Pause 18
GoTo start

'check for switch closures
'is sw1 left active?
'is sw1 right active?
'is sw2 left active?
'is sw2 right active?
'send current servo 1 position out
'send current servo 2 position out

'Routines for Servomotor 1
left1:
B1 = B1 + 1
PulsOut 0, B1
PulsOut 3, B2
Pause 18
IF B1 > 225 Then max1
GoTo start
right1:
B1 = B1 - 1
PulsOut 0, B1
PulsOut 3, B2
Pause 18
IF B1 < 75 Then min1
GoTo start
max1:
B1 = 225
GoTo start
min1:
B1 = 75
GoTo start



'increase the pulse width
'send current B1
'send current B2
'set frequency update about 50 hz
'maximum 2.25 millisecond


'decrease the pulse width
'send current B1
'send current B2
'set frequency update about 50 hz
'minimum .75 millisecond


'cap max B1 at 2.25 milliseconds


'cap min B1 at .75 millisecond

'Routines for Servomotor 2
left2:
B2 = B2 + 1
PulsOut 0, B1
PulsOut 3, B2
Pause 18
IF B2 > 225 Then max2
GoTo start
right2:
B2 = B2 - 1
PulsOut 0, B1
PulsOut 3, B2
Pause 18
IF B2 < 75 Then min2
GoTo start
max2:
B2 = 225
GoTo start
min2:
B2 = 75
GoTo start


Because if i try to compile it with MicroCode Studio - PICBASIC PRO, i'll receive too many errors like:
ERROR Line 15: Bad expresion. (ser1.txt)
There are errors almost for each line.
As i am absolute NOVICE in coding, those errors are bit over my head

I have seen some codes, where guys had something like:

#include < blablabla.h >
Does i need some .h file to be included? :confused:

ScaleRobotics
- 21st June 2009, 08:01
I have seen some codes, where guys had something like:

#include < blablabla.h >
Does i need some .h file to be included? :confused:

Right you are. The code looks like it was written for a Basic Stamp Pic Chip. For this, just add the include at the top of your program, then it will compile without errors.


DEFINE OSC 20 'define crystal speed. This is 20 mhz
include "bs1defs.bas" 'lets you use definitions same as Basic Stamp 1

Melanie
- 21st June 2009, 09:56
Looks like the code may work straight away with MeLabs PBC (Pic Basic Compiler) rather than PBP (Pic Basic Pro).

Acetronics2
- 21st June 2009, 13:15
DEFINE OSC 20 'define crystal speed. This is 20 mhz
include "bs1defs.bas" 'lets you use definitions same as Basic Stamp 1


Hi,

No,No ... error this code has been written for a 4 Mhz Pic or BS1 ... ( pulsout units are 10µs ! )

No need any "DEFINE OSC " then ...
nor "bs1defs" ... as pins are " genuine numbered " by PBP



Other project error : Pic and Servos MUST NOT share the same supply ... if you want them to work properly ...

and R2 / R4 might get their supply from +5 v ... NO MORE !

In other words ... soft may be Ok, as Mel states ... but not Hardw. !!!

Alain

ScaleRobotics
- 21st June 2009, 14:39
Thanks Alain, good catch on the pulseout.

But speaking of errors, when I try to compile on PBP without using:



INCLUDE "bs1defs.bas"


I get too many errors to compile. It gets stuck on the first mention of variables:


B2 = B2 + 1


How do you overcome this with Picbasic Pro, without using the include (and without defining each variable separately)? My manual states I must include "for compatibility sake", and that the include creates "the standard variables used with the Basic Stamps", not to mention that it compiles without errors when I use the include.....

Acetronics2
- 21st June 2009, 15:13
Hi,

Right ... definitly a Stamp dinausaur ...

So just add at the progam top:

B1 var Byte ' "B" stands for Byte, " W " for Word, ... in the Stamp language.
B2 var Byte

care must also be taken Stamp automatically resets variables to zero ... and PbP not !

I prefer writing it like that for " little RAM " processors ... like my old 16C84s ... than include BSx inc Files ...

Alain

irootsk
- 22nd June 2009, 03:34
thank you for all replys guys.

after modification of code with:


include "bs1defs.bas"

B1 VAR BYTE
B2 VAR BYTE

i was able to compile it.
When i press the coresponding button, servo1 react, but it's bit slow.
Servo2 doesn't react on button. It's just go full CW and then stop. And sometimes it buzzing.
Aslo, when i want to turn servo1, servo2 is trying to move.
But that's probably of shared power supply.
I will try to rebuilt it.

irootsk
- 22nd June 2009, 05:08
Actually, all i had to ad to the code was just
include "bs1defs.bas"

If i tried it with
B1 VAR BYTE
B2 VAR BYTE i received an error: Redefinition of VAR

irootsk
- 22nd June 2009, 22:01
One more question. What about Fuses? What should i set for my for that project? I've got MPASM from Microchip.