PDA

View Full Version : help with ad pic16f88



lopgar71
- 12th April 2014, 23:39
:)Hi all, please help me, the example program page on the PIC16F88 ad converter did not work,
shows me error ANSEL =% 00010000
Greetings!

Acetronics2
- 13th April 2014, 09:17
Hi,

WHICH example program ?, what page ? which 16F88 ? ... :D

please show your program listing here ...
so we can answer you something useful else than " may be it will rain, may be sun will shine tomorrow " ...

Alain

Amoque
- 13th April 2014, 10:45
It may be as easy as removing the [SPACE] between the percent symbol and the binary value as : %00000000. I don't know that, because (as Alain suggests) I have seen neither the code nor the error, but I am foolish enough to risk a guess!

Acetronics2
- 13th April 2014, 15:09
Here is MPLAB Answer for this ghost space ...


WARNING Line 38: Bad token "%".
C:\PROGRAM FILES\MICROCHIP\MPLAB IDE\PROJETS\TWINAIR_LIGHTS3.BAS WARNING Line 38: 01110000 Malformed binary numeric, value truncated.
Loaded C:\Program Files\Microchip\MPLAB IDE\Projets\Twinair_Lights3.COF.
BUILD SUCCEEDED: Sun Apr 13 16:06:36 2014


just a WARNING ... but compiling still occurs ...

note the generated HEX shows $70 for right scripting and $F0 for the wrong script

Alain

lopgar71
- 14th April 2014, 23:43
Hi, this is the code sample page of melabs,
Error when compiling throws me online 23

what happens?

Greetings!


' Name : ADCX18.pbp
' Compiler : PICBASIC PRO Compiler 2.6
' Assembler : PM or MPASM
' Target PIC : PIC16F88 or similar
' Hardware : LAB-X18 Experimenter Board
' Oscillator : 4MHz external crystal
' Keywords : ADCIN, LCDOUT
' Description : PICBASIC PRO program to read potentiometer on LAB-X18
' and display on LCD.
'

' Define LCD pins
Define LCD_DREG PORTA
Define LCD_DBIT 0
Define LCD_RSREG PORTB
Define LCD_RSBIT 6
Define LCD_EREG PORTB
Define LCD_EBIT 3

' Allocate variables
x Var Byte

ANSEL = %00010000 ' Make the pot input analog and rest digital
CMCON = 7 ' Set PORTA to digital
Pause 100 ' Wait for LCD to start

mainloop:
Adcin 4, x ' Read the pot
Lcdout $fe, 1, "pot=", #x ' Send value to LCD
Pause 100 ' Do it about 10 times a second
Goto mainloop ' Do it forever

End

AvionicsMaster1
- 15th April 2014, 14:27
Just FYI "CMCON = 7 ' Set PORTA to digital" actually turns off the comparators and doesn't set the ports to digital.

It also looks as if you need to set the ADCON bits 3-5 also to use ports as analog inputs.

Shouldn't this "Lcdout $fe, 1, "pot=", #x ' Send value to LCD" read "Lcdout $fe, 1, "pot=", DECx ' Send value to LCD"? I [U]think[U] the # returns ASCII and NOT decimail numbers. Which may or may not be what you are seeking.

Best wishes

lopgar71
- 16th April 2014, 00:17
thanks, proves what you suggest and I'll tell you then,
Greetings!

lopgar71
- 18th April 2014, 03:08
Hi all, this code works with adc pic, thanks for your help,
Greetings!

DATO VAR BYTE
CMCON=7
DEFINE ADC_BITS 8
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50
ANSEL=%0100000
LED VAR PORTB.0
HIGH LED
PAUSE 100
LOW LED
PAUSE 200
INICIO:
ADCIN 5,DATO
LCDOUT $FE,$C4,DEC dato
PAUSE 300
GOSUB INICIO
END

Demon
- 18th April 2014, 03:57
You probably want GOTO, not GOSUB.

Robert

lopgar71
- 19th April 2014, 02:19
Thanks, that's the right way.
I'm working with a lm35z converter pic with 8 bits, as I can convert the value to degrees Celsius gives me?