help with pic16f887


Closed Thread
Results 1 to 40 of 61

Hybrid View

  1. #1
    Join Date
    Sep 2006
    Posts
    747


    Did you find this post helpful? Yes | No

    Default

    Hi I copied this program from a thread. It is suppose to be working, but I keep getting zeros in on my LCD:

    anyone ?

    Code:
    '/////////////////////////
    '// EEPROM and test program
    '//	Using the PIC16F887
    '//
    '/////////////////////////
    
    '/////////////////////////
    '// Define section //
    '/////////////////////////
    
    '@ __config _CONFIG1, _INTRC_OSC_NOCLKOUT & _WDT_ON & _MCLRE_OFF & _LVP_OFF & _CP_OFF
    OSCCON = %01110000 '8 Mhz
    DEFINE OSC 8
    ANSELH = 0
    
    
    '/////////////////////////
    '// 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  RB.4, RB.5, RB.6, RB.7
    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
    
    
    SDA var PORTC.4                     ' RTC data 
    SCL var PORTC.3                     ' RTC clock
    DB0 var byte[8]
    
    TRISB= %11111111
    TRISC= %00000000
    gosub write_eeprom
    
    read_eeprom:                          ' Read time Secs,Mins,Hours,Day,Date,Month,Year,Control
    I2CREAD SDA,SCL,$A1,$00,[STR DB0\8] ' Read 8 bytes from EEPROM
    lcdout $fe,1,"Time=",hex2 DB0[2],":",hex2 DB0[1],":",hex2 DB0[0]    'bit 0=sec, bit 1=min, bit 2=hrs
    lcdout $fe,$c0,"Date=",hex2 DB0[4],":",hex2 DB0[5],":",hex2 db0[6]  'bit 4=day, bit 5=month, bit 6=year
     pause 50
    goto read_eeprom
    end
    
    Write_eeprom:                          ' Set time & date to 19:00:00  14th Feb 201
    pause 1000
    I2CWRITE SDA,SCL,$A0,$00,[$00,$00,$19,$7,$14,$2,$10,$80] ' Write to EEPROM
    pause 10
    RETURN

  2. #2
    Join Date
    Sep 2006
    Posts
    747


    Did you find this post helpful? Yes | No

    Default What ??

    humm
    ok
    from this thread:http://www.picbasic.co.uk/forum/showthread.php?t=12671
    The huy has a pic16F887 like mine, but his SDA and SCL are on portB2 and B1... My datasheet tells me C4 and C3......

  3. #3
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    Code:
    read_eeprom:                          ' Read time Secs,Mins,Hours,Day,Date,Month,Year,Control
    I2CREAD SDA,SCL,$A1,$00,[STR DB0\8] ' Read 8 bytes from EEPROM
    lcdout $fe,1,"Time=",hex2 DB0[2],":",hex2 DB0[1],":",hex2 DB0[0]    'bit 0=sec, bit 1=min, bit 2=hrs
    lcdout $fe,$c0,"Date=",hex2 DB0[4],":",hex2 DB0[5],":",hex2 db0[6]  'bit 4=day, bit 5=month, bit 6=year
    Are you using a RTC or EEPROM?
    Dave
    Always wear safety glasses while programming.

  4. #4
    Join Date
    Sep 2006
    Posts
    747


    Did you find this post helpful? Yes | No

    Default

    originally I was using both, but for trouble shooting purposes i am using only the eeprom module 24LC1025 from microchip. After I get I2C going i will add.

    K
    I should of commented out some information,
    Last edited by lerameur; - 3rd December 2010 at 00:21.

  5. #5
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    Take a look at this and see if you can get the EEPROM working. It is about as simple as it gets for testing.
    http://www.picbasic.co.uk/forum/cont...-EEPROM-Part-1
    Dave
    Always wear safety glasses while programming.

  6. #6
    Join Date
    Mar 2003
    Location
    Commerce Michigan USA
    Posts
    1,166


    Did you find this post helpful? Yes | No

    Default

    lerameur, I just thought I would ask... Where is the Write Protect line tied? It should not be tied to VCC as this would Write Protect the device. I have used these 24LC1025's over the past few years and have never had a problem with them. I use the I2CWRITE and I2CREAD commands. Just thought I would ask....

    Dave Purola,
    N8NTA

  7. #7
    Join Date
    Sep 2006
    Posts
    747


    Did you find this post helpful? Yes | No

    Default

    Humm I will check when I get back home this afternoon. I remember reading this in the pin description from the 20LC1025 pdf manual. Maybe I made a mistake, and at this point I truly hope i did, thanks for the cue.

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts