PDA

View Full Version : Moving the LCD



PICante
- 12th April 2008, 19:04
Hi all!

I’ve got a 16F88 and I’m trying to free up a few A/D inputs by moving the LCD to portB only. The beginning of the code I am trying to use looks like this:

DEFINE OSC 8
OSCCON = %01110000 ' INTRC = 8MHz
TRISB = 0

'---------------- move LCD to portB---------
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 5
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 4
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
'------------------

LCDOUT $FE, 1,"TEST"

----

The LCD is hooked up like this: LCD – Pin. 4 – 11, 6 – 10, 11 – 6, 12 – 7, 13 – 8, 14 - 9
Only thing I get on the LCD is blocks on the top row and it’s permanent.
I could use some help here, I’m stuck.

Thanks!

mister_e
- 12th April 2008, 20:02
Assuming everything else is well connected (R/W to gnd, contrast pot etc etc), i feel 2 possible mistakes.

1. you haven't set your config fuses to use the Internal OSC.
2. You haven't disable the LVP config fuses.

One or the other.. or both.

PICante
- 12th April 2008, 20:18
Hi Steve,

Thanks for the suggestions.
Yes, the rest of the LCD wiring are “as usual”.

However when I try to set the config fuses I get an error in MCS+ “Argument out of range (not a valid config register address)”

Even with only “@ __config _INTRC_IO” I get the same error. I am new to the 16F88, previously I have used only the 16F628A and no such errors occurred.

Thanks.

mister_e
- 12th April 2008, 20:30
This one is a little funky... open p16F88.inc file (in your MpasmSuite folder)... go at the end and... you'll discover those lines


; To use the Configuration Bits, place the following lines in your source code
; in the following format, and change the configuration value to the desired
; setting (such as CP_OFF to CP_ALL). These are currently commented out here
; and each __CONFIG line should have the preceding semicolon removed when
; pasted into your source code.

;Program Configuration Register 1
; __CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _PWRTE_OFF & _WDT_OFF & _HS_OSC

;Program Configuration Register 2
; __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF

PICante
- 12th April 2008, 20:34
Thanks Steve,

I’ll try this and get back with the result later!
Will try to figure out which bits I need and how the should be set.

Thanks again!

PICante
- 12th April 2008, 21:54
Hello again!

I made a small change to the config bits (_INTRC_IO ) and get “Owerwriting previous address contents (2007)” from MCS+. The exact same message pops up with the config bits unchanged. I found a few differences in “P16F88.inc” compared to the datasheet, one example is “BODEN” vs “BOREN” and I am not sure what to make of this. Here’s how the code looks now:


@ __CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _PWRTE_OFF & _WDT_OFF & _INTRC_IO

@ __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF

DEFINE OSC 8
OSCCON = %01110000 ' INTRC = 8MHz
TRISB = 0

'---------------- move LCD to portB---------
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 5
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 4
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
'------------------

LCDOUT $FE, 1,"TEST"




Thanks!

Archangel
- 12th April 2008, 22:12
Hello again!
I found a few differences in “P16F88.inc” compared to the datasheet, one example is “BODEN” vs “BOREN” and I am not sure what to make of this. Here’s how the code looks now:


@ __CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _PWRTE_OFF & _WDT_OFF & _INTRC_IO

@ __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF

DEFINE OSC 8
OSCCON = %01110000 ' INTRC = 8MHz
TRISB = 0

'---------------- move LCD to portB---------
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 5
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 4
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
'------------------

LCDOUT $FE, 1,"TEST"




Thanks!
Do it the way it is in the 16F88.inc file
The configs liisted require you to use MPASM as the assembler.

mister_e
- 12th April 2008, 22:18
Joe, he use MPASM already, hence why he got Argument out of range (not a valid config register address)” ;)

Picante, read this one...
http://www.picbasic.co.uk/forum/showpost.php?p=6775&postcount=5

PICante
- 12th April 2008, 22:30
Hi Joe.

I am using MPASM!


Thanks.

Archangel
- 12th April 2008, 22:46
Hi Joe.

I am using MPASM!


Thanks.

OK good. Seems I always get in trouble when using the Wife's computer . . .
OK so all you have to do is open the 16f88.inc file in PBP and insert a semicolon before the config statement like so:
;__config _CONFIG1, _HS_OSC & _WDT_ON & _LVP_OFF & _CP_OFF and it will compile.

PICante
- 13th April 2008, 01:03
Allright, I edited the PBP inc file by changing the oscillator to internal this way I don’t need the config fuses in the code. Right or wrong, it’s convenient when testing out things and I am on to the next step in the code, the ADCIN. We’ll see how that will develop, might need more help in the near future.

Thanks for now Guys!

You’re the best!