'PIC16F636; programm to fill eeprom (24AA16) with data
'Block 0
'addr 0..240 reserved for character set
'Block 1
'addr 0..240 reserved for character set
'Block 2
'addr 0..60 reserved for character set
'Block 3
'addr 0..84 reserved for text "CV-CONTROL"
'addr 100..118 reserved for text "SET"
'addr 120.150 reserved for text "START"
'Block 4
'addr 0..84 reserved for text "PROG: min."
'addr 100..105 reserved for flame quadrant 1
'addr 110..115 reserved for flame quadrant 1
'addr 120..125 reserved for flame quadrant 1
'addr 130..135 reserved for flame quadrant 1
'addr 140..152 reserved for batt symbol
Define CLOCK_FREQUENCY = 4
Define CONFIG = 0x30c4
'OSCCON.IRCF2 = False
'OSCCON.IRCF1 = False
'OSCCON.IRCF0 = False
AllDigital
'Define SIMULATION_WAITMS_VALUE = 1
Symbol scl = PORTA.4
Symbol sda = PORTA.5
ConfigPin PORTC.4 = Output
Dim addr As Byte
Dim data As Byte
Dim look As Byte
Dim i As Byte
Dim a As Byte
Dim t As Byte
'WRITE DATA INTO EEPROM 24AA16
'first part of characterset
For addr = 0 To 240 Step 1 'van 0x20 t/m 0x47 (32 t/m 71)
data = LookUp(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14, 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12, 0x00, 0xc4, 0xc8, 0x10, 0x26, 0x46, 0x00, 0x36, 0x49, 0x55, 0x22, 0x50, 0x00, 0x00, 0x05, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00, 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00, 0x00, 0x14, 0x08, 0x3e, 0x08, 0x14, 0x00, 0x08, 0x08, 0x3e, 0x08, 0x08, 0x00, 0x00, 0x00, 0x50, 0x30, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x3e, 0x51, 0x49, 0x45, 0x3e, 0x00, 0x00, 0x42, 0x7f, 0x40, 0x00, 0x00, 0x42, 0x61, 0x51, 0x49, 0x46, 0x00, 0x21, 0x41, 0x45, 0x4b, 0x31, 0x00, 0x18, 0x14, 0x12, 0x7f, 0x10, 0x00, 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, 0x3c, 0x4a, 0x49, 0x49, 0x30, 0x00, 0x01, 0x71, 0x09, 0x05, 0x03, 0x00, 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, 0x06, 0x49, 0x49, 0x29, 0x1e, 0x00, 0x00, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x56, 0x36, 0x00, 0x00, 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, 0x00, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, 0x02, 0x01, 0x51, 0x09, 0x06, 0x00, 0x32, 0x49, 0x59, 0x51, 0x3e, 0x00, 0x7e, 0x11, 0x11, 0x11, 0x7e, 0x00, 0x7f, 0x49, 0x49, 0x49, 0x36, 0x00, 0x3e, 0x41, 0x41, 0x41, 0x22, 0x00, 0x7f, 0x41, 0x41, 0x22, 0x1c, 0x00, 0x7f, 0x49, 0x49, 0x49, 0x41, 0x00, 0x7f, 0x09, 0x09, 0x09, 0x01, 0x00, 0x3e, 0x41, 0x49, 0x49, 0x7a, 0x00), addr
I2CWrite sda, scl, 0xa0, addr, data
WaitMs 10
Next addr
'second part of characterset
For addr = 0 To 240 Step 1 'van 0x48 t/m 0x6F (72 t/m 111)
data = LookUp(0x7f, 0x08, 0x08, 0x08, 0x7f, 0x00, 0x00, 0x41, 0x7f, 0x41, 0x00, 0x00, 0x20, 0x40, 0x41, 0x3f, 0x01, 0x00, 0x7f, 0x08, 0x14, 0x22, 0x41, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x00, 0x7f, 0x02, 0x0c, 0x02, 0x7f, 0x00, 0x7f, 0x04, 0x08, 0x10, 0x7f, 0x00, 0x3e, 0x41, 0x41, 0x41, 0x3e, 0x00, 0x7f, 0x09, 0x09, 0x09, 0x06, 0x00, 0x3e, 0x41, 0x51, 0x21, 0x5e, 0x00, 0x7f, 0x09, 0x19, 0x29, 0x46, 0x00, 0x46, 0x49, 0x49, 0x49, 0x31, 0x00, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x00, 0x3f, 0x40, 0x40, 0x40, 0x3f, 0x00, 0x1f, 0x20, 0x40, 0x20, 0x1f, 0x00, 0x3f, 0x40, 0x38, 0x40, 0x3f, 0x00, 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, 0x07, 0x08, 0x70, 0x08, 0x07, 0x00, 0x61, 0x51, 0x49, 0x45, 0x43, 0x00, 0x00, 0x7f, 0x41, 0x41, 0x00, 0x00, 0x55, 0x2a, 0x55, 0x2a, 0x55, 0x00, 0x00, 0x41, 0x41, 0x7f, 0x00, 0x00, 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x01, 0x02, 0x04, 0x00, 0x00, 0x20, 0x54, 0x54, 0x54, 0x78, 0x00, 0x7f, 0x48, 0x44, 0x44, 0x38, 0x00, 0x38, 0x44, 0x44, 0x44, 0x20, 0x00, 0x38, 0x44, 0x44, 0x48, 0x7f, 0x00, 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, 0x08, 0x7e, 0x09, 0x01, 0x02, 0x00, 0x0c, 0x52, 0x52, 0x52, 0x3e, 0x00, 0x7f, 0x08, 0x04, 0x04, 0x78, 0x00, 0x00, 0x44, 0x7d, 0x40, 0x00, 0x00, 0x20, 0x40, 0x44, 0x3d, 0x00, 0x00, 0x7f, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x41, 0x7f, 0x40, 0x00, 0x00, 0x7c, 0x04, 0x18, 0x04, 0x78, 0x00, 0x7c, 0x08, 0x04, 0x04, 0x78, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00), addr
I2CWrite sda, scl, 0xa2, addr, data
WaitMs 10
Next addr
'third part of characterset
For addr = 0 To 60 Step 1 'van 0x70 t/m 0x7A (112 t/m 122
data = LookUp(0x7c, 0x14, 0x14, 0x14, 0x08, 0x00, 0x08, 0x14, 0x14, 0x18, 0x7c, 0x00, 0x7c, 0x08, 0x04, 0x04, 0x08, 0x00, 0x48, 0x54, 0x54, 0x54, 0x20, 0x00, 0x04, 0x3f, 0x44, 0x40, 0x20, 0x00, 0x3c, 0x40, 0x40, 0x20, 0x7c, 0x00, 0x1c, 0x20, 0x40, 0x20, 0x1c, 0x00, 0x3c, 0x40, 0x30, 0x40, 0x3c, 0x00, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, 0x0c, 0x50, 0x50, 0x50, 0x3c, 0x00, 0x44, 0x64, 0x54, 0x4c, 0x44, 0x00), addr
I2CWrite sda, scl, 0xa4, addr, data
WaitMs 10
Next addr
'tekst "CV-CONTROL"
For addr = 0 To 84 Step 1
data = LookUp(0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, 0xbe, 0xbe, 0xbe, 0xdd, 0xff, 0xe0, 0xdf, 0xbf, 0xdf, 0xe0, 0xff, 0xef, 0xef, 0xef, 0xef, 0xef, 0xff, 0xc1, 0xbe, 0xbe, 0xbe, 0xdd, 0xff, 0xc1, 0xbe, 0xbe, 0xbe, 0xc1, 0xff, 0x80, 0xfb, 0x0f7, 0xef, 0x80, 0xff, 0xfe, 0xfe, 0x80, 0xfe, 0xfe, 0xff, 0x80, 0xf6, 0xe6, 0xd6, 0xb9, 0xff, 0xc1, 0xbe, 0xbe, 0xbe, 0xc1, 0xff, 0x80, 0xbf, 0xbf, 0xbf, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff), addr
I2CWrite sda, scl, 0xa6, addr, data
WaitMs 10
Next addr
'tekst "SET"
For addr = 100 To 118 Step 1
look = addr - 100
data = LookUp(0xff, 0xff, 0xb9, 0xb6, 0xb6, 0xb6, 0xce, 0xff, 0x80, 0xb6, 0xb6, 0xb6, 0xbe, 0xff, 0xfe, 0xfe, 0x80, 0xfe, 0xfe, 0xff, 0xff), look
I2CWrite sda, scl, 0xa6, addr, data
WaitMs 10
Next addr
'tekst "START"
For addr = 120 To 150 Step 1
look = addr - 120
data = LookUp(0xff, 0xff, 0xb9, 0xb6, 0xb6, 0xb6, 0xce, 0xff, 0xfe, 0xfe, 0x80, 0xfe, 0xfe, 0xff, 0x81, 0xee, 0xee, 0xee, 0x81, 0xff, 0x80, 0xf6, 0xe6, 0xd6, 0xb9, 0xff, 0xfe, 0xfe, 0x80, 0xfe, 0xfe, 0xff), look
I2CWrite sda, scl, 0xa6, addr, data
WaitMs 10
Next addr
'tekst "PROG: min."
For addr = 0 To 84 Step 1
data = LookUp("P", "R", "O", "G", ".", ":", 0x20, 0x20, 0x20, 0x20, "m", "i", "n", "."), addr
I2CWrite sda, scl, 0xa8, addr, data
WaitMs 10
Next addr
'vlam quadr. 1
For addr = 100 To 105 Step 1
look = addr - 100
data = LookUp(0xc0, 0xf0, 0x78, 0x9c, 0xff, 0xf8), look
I2CWrite sda, scl, 0xa8, addr, data
WaitMs 10
Next addr
'vlam quadr. 2
For addr = 110 To 115 Step 1
look = addr - 110
data = LookUp(0xf0, 0xe0, 0x80, 0x00, 0x00, 0x00), look
I2CWrite sda, scl, 0xa8, addr, data
WaitMs 10
Next addr
'vlam quadr. 3
For addr = 120 To 125 Step 1
look = addr - 120
data = LookUp(0x0f, 0x3f, 0xff, 0xfe, 0xdc, 0xe3), look
I2CWrite sda, scl, 0xa8, addr, data
WaitMs 10
Next addr
'vlam quadr. 4
For addr = 130 To 135 Step 1
look = addr - 130
data = LookUp(0x7f, 0x3f, 0x0f, 0x00, 0x00, 0x00), look
I2CWrite sda, scl, 0xa8, addr, data
WaitMs 10
Next addr
'batt icon
For addr = 140 To 152 Step 1
look = addr - 140
data = LookUp(0x7e, 0x7e, 0x5e, 0x46, 0x42, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x24, 0x3c), look
I2CWrite sda, scl, 0xa8, addr, data
WaitMs 10
Next addr
'**********************************************************
'check eeprom adresses
t = 0
For a = 0 To 7
Select Case a
Case 0
addr = 0xa0
Case 1
addr = 0xa2
Case 2
addr = 0xa4
Case 3
addr = 0xa6
Case 4
addr = 0xa8
Case 5
addr = 0xaa
Case 6
addr = 0xac
Case 7
addr = 0xae
EndSelect
Serout PORTC.3, 9600, CrLf, CrLf, #addr, CrLf, CrLf
For i = 0 To 255 Step 1
I2CRead sda, scl, addr, i, data 'bit 1 of "con" is controlled by the I2CRead instruction for reading
WaitMs 10
Serout PORTC.3, 9600, #data, ";",
t = t + 1
If t > 15 Then
t = 0
Serout PORTC.3, 9600, CrLf 'start new line after 16 bytes
Endif
Next i
Next a
main:
PORTC.4 = True 'indication writing and reading done
Goto main
End