Hello, this is the first I am using the pic16F887. My program is not showing anything on my LCD. I am sure the wiring is good. I would like to know if the initisialixing of the code is good. I took down an example from Melabs, but I saw there was no init strings as I usually do with my pic16F88.
http://melabs.com/resources/samples/x1/pbp/serbufx.htm
Ok here is my code. can somebody tell me if there is a problem with the begining ?? thanks
K
'/////////////////////////
'// Define section //
'/////////////////////////
'///////////////////////////
'// Interrupt section //
'///////////////////////////
'/////////////////////////
'// LCD configuration //
'/////////////////////////
DEFINE LCD_DREG PORTB ' Set LCD Data port
DEFINE LCD_DBIT 4 ' Set starting Data bit (0 or 4) if 4-bit bus
DEFINE LCD_RSREG PORTB ' Set LCD Register Select port
DEFINE LCD_RSBIT 1 ' Set LCD Register Select bit
DEFINE LCD_EREG PORTB ' Set LCD Enable port
DEFINE LCD_EBIT 0 ' Set LCD Enable bit
DEFINE LCD_BITS 4 ' Set LCD bus size (4 or 8 bits) '4 therefore put wire at 4, 5, 6 and 7 of LCD
DEFINE LCD_LINES 2 ' Set number of lines on LCD
DEFINE LCD_COMMANDUS 2500
DEFINE LCD_DATAUS 250
DEFINE CHAR_PACING 2000
pause 1000
'/////////////////////////
'// PIN configuration //
'/////////////////////////
DEFINE CCP1_REG PORTB 'Define output port of pulses out
DEFINE CCP1_BIT 3 'Define output port of pulses out
Define ADC_BITS 10 ' Set number of bits in result
Define ADC_CLOCK 3 ' Set clock source (3=rc)
Define ADC_SAMPLEUS 50 ' Set sampling time in uSec
'CMCON = 7 ' Disable analog comparator
'ANSEL = %11111111 ' set ANx as analog ?????????????????????????????
ADCON1 = %10000010 ' Right justified results for 10 bits
ADCON0 = %11000001 ' Internal OSC, AN0, Configure and turn on A/D Module
TRISB = %00000000 ' Set PORTB to all output
TRISA = %11111111 ' Set PORTA to all input
'TRISC = %00000000
'///////////////////////////////////////////////
'// Variable Declaration and initialization //
'///////////////////////////////////////////////
Battery_Switch var byte
i var byte
j var byte
Battery_Charge_Counter var byte
SDApin var PORTB.1 ' RTC data
SCLpin var PORTB.2 ' RTC clock
DB0 var byte[8]
bat var byte
Total_time var byte
Write_Address var byte
RTCSec var byte :RTCMin var byte :RTCHour var byte :RTCWDay var byte :RTCDay var byte :RTCMonth var byte :RTCYear var byte :RTCCtrl var byte
Write_Address = 0
lcdout $FE,1, "Bienvenue"
lcdout $FE,$C0, "Welcome"
pause 4000
I2CWRITE SDApin,SCLpin,$D0,$00,[$00,$00,$00,$00,$00,$00,$00,$00] ' Write to DS1307 to start counter at ZERO
PORTC.2 = Battery_Charge_Counter 'always 5v, push button to gnd
'////////////////////////////////////////////////////
'////////////////// PROGRAM /////////////////////////
'////////////////////////////////////////////////////
Mainloop:
lcdout $FE,1, " Appuyé sur Start "
lcdout $FE,$C0, "Press on Start to Begin"
pause 200
if PORTC.3 =0 then 'always 5v, push button to gnd
I2CRead SDApin,SCLpin,$D0,$00,[RTCSec,RTCMin,RTCHour,RTCWDay,RTCDay,RTCMonth,RTCY ear,RTCCtrl] 'read clock
I2CWRITE SDApin,SCLpin,$A0,Write_Address,[RTCSec] ' Write to External EEPROM
Write_Address= Write_Address + 1
I2CWRITE SDApin,SCLpin,$A0,Write_Address,[RTCMin] ' Write to External EEPROM
Write_Address= Write_Address + 1
I2CWRITE SDApin,SCLpin,$A0,Write_Address,[RTCHour] ' Write to External EEPROM
Write_Address= Write_Address + 1
I2CWRITE SDApin,SCLpin,$A0,Write_Address,[RTCDay] ' Write to External EEPROM
Write_Address= Write_Address + 1
Battery_Charge_Counter = Battery_Charge_Counter + 1
Endif
if PORTC.4 =0 then 'always 5v, push button to gnd
j=1
bat = 0
For i=0 to Battery_Charge_Counter
I2CRead SDApin,SCLpin,$A0,bat,[RTCSec,RTCMin,RTCHour,RTCDay]
lcdout $FE,1, " Time ", dec j
lcdout $FE,$C0, dec RTCDay, dec RTCHour, dec RTCMin, dec RTCSec
pause 3000
j = j + 1
i = i + 1
bat = bat + 4
next i
Endif
goto Mainloop
End