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!
Powered by vBulletin® Version 4.1.7 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.