# How to store values in Mikrobasic?

Status
Not open for further replies.

#### bigal_scorpio

##### Active Member
Hi to all,

Could anyone tell me how to store a value eg. if RB2 received an input high, and keep that value after power off and restart?

The MB manual is a bit vague in some areas and I can't find the info on the datasheets either, but that may be because I don't know what I'm looking for.

Thanks for looking...........Al

#### gaspode42

##### Member
Bigal

You need to use the EEPROM library. Have a look at the sample code, and please let me know if you still have problems.

#### bigal_scorpio

##### Active Member
Hi mate,

The EEprom part of the manual is very small. Took me all of a minute to read, but not understand! This is the example.
Example

for i = 0 to 20
EEPROM_Write(i, i + 6)
next i

What it doesn't tell me is the position or value of i, does it mean that whenever I use this command on ANY Pic that it will use the first available byte of EEprom?

Or is there a specific address that the manual assumes I know about.

I learn best from example but the manuals example does not give me enough info to sink in. I often think the wife is right and I do get thicker every day! hehehe

Regards............Al

#### ericgibbs

##### Well-Known Member
Hi mate,

The EEprom part of the manual is very small. Took me all of a minute to read, but not understand! This is the example.
Example

for i = 0 to 20
EEPROM_Write(i, i + 6)
next i

What it doesn't tell me is the position or value of i, does it mean that whenever I use this command on ANY Pic that it will use the first available byte of EEprom?

Or is there a specific address that the manual assumes I know about.

I learn best from example but the manuals example does not give me enough info to sink in. I often think the wife is right and I do get thicker every day! hehehe

Regards............Al

hi Al,
The PIC's internal EEPROM address start at 00 and inc upwards.

EDIT: whats the PIC type?

Last edited:

#### gaspode42

##### Member
Al

See if this makes more sense, please let me know if I can help more.
This code is for MBPro, I am not sure what version you are using

Code:
program Eeprom
dim counter as byte       ' loop variable
main:
ANSEL =   0               ' Configure AN pins as digital I/O
ANSELH =  0
C1ON_bit = 0             ' Disable comparators
C2ON_bit = 0
PORTB = 0
PORTC = 0
PORTD = 0
TRISB = 0
TRISC = 0
TRISD = 0
for counter = 0 to 31               ' Fill data buffer
EEPROM_Write(0x80+counter, counter) 'Write data to address 0x80+ii
next counter
EEPROM_Write(0x02,0xAA)          ' Write some data at address 2
EEPROM_Write(0x50,0x55)           ' Write some data at address 0150
Delay_ms(1000)                    ' Blink PORTB and PORTC diodes
PORTB = 0xFF                     ' to indicate reading start
PORTC = 0xFF
Delay_ms(1000)
PORTB = 0x00
PORTC = 0x00
Delay_ms(1000)
play
it on PORTB
play it on PORTC
Delay_ms(1000)
for counter = 0 to 31           ' Read 32 bytes block from address
0x100
PORTD = EEPROM_Read(0x80+counter) ' and display data on PORTC
Delay_ms(100)
next counter
end.

#### bigal_scorpio

##### Active Member
Hi Eric and Gaspode,

Thanks for the code Gaspode, it does make a bit more sense when there is a larger example than the manual's, starting to get my haed round it I think.

Eric, I don't have a specific Pic in mind yet but will probably opt for one of the 40 pinners 16F877 or 887 as I will need a good few inputs and outputs.

The thing I am trying to do is use momentary push buttons to switch things on or off with relays, but as I would be using the same switch for on and off I need the Pic to remember the state of the port when I turn off the ignition - you probably guessed its a car project by now - and keep the settings so I can leave things in the same state until I use the switch again.

I was thinking of just storing the whole port (s) that went to relays and writing them back on power up, but is it as easy as it sounds?

Regards...........Al

#### ericgibbs

##### Well-Known Member
The thing I am trying to do is use momentary push buttons to switch things on or off with relays, but as I would be using the same switch for on and off I need the Pic to remember the state of the port when I turn off the ignition - you probably guessed its a car project by now - and keep the settings so I can leave things in the same state until I use the switch again.

I was thinking of just storing the whole port (s) that went to relays and writing them back on power up, but is it as easy as it sounds?

Regards...........Al

hi Al,
Storing the state of switches etc in EEPROM is fairly easy to do.

Using basic.
i= PORTB.0
;The command
EEPROM_Write(0,i); will save the state of PORTB.0, only 1 bit!
but its more efficient if you write the complete port state to the EEPROM
i=PORTB
EEPROM_Write(0,i); all 8 bits, if thats where your switches are.
;
When you do a EEPROM READ, you can do a bit test on the individual bits

The 16F877 has 256 bytes of EEPROM addr 0x00 thru 0xff

Last edited:

#### bigal_scorpio

##### Active Member
Hi again Eric,

That seems to be just the job!

Would have replied sooner but my mate has just come out of hospital today after 14 weeks (stroke and brain bleed) only to find when his wife put the kettle on that the fuse box tripped out! So I have just spent 2 hours looking for the fault and failed. He had some mobility work done in the house while he was in hospital as he has one side not working yet and can't walk, and I wonder if they have pierced a cable somewhere and not noticed? So its floorboards up tomorrow. Doh!

But trust it to happen on his first day home eh! Sods law rules OK!

Anyway Eric I hope you are well, at least better that us in rotherham, we all seem to be going down hill fast

Al

Status
Not open for further replies.

Replies
5
Views
1K
Replies
7
Views
4K
Replies
5
Views
2K
Replies
2
Views
1K
Replies
3
Views
997