'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 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 WaitUs 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 WaitUs 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 WaitUs 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 WaitUs 10 Next addr 'tekst "SET" For addr = 100 To 118 Step 1 data = LookUp(0xff, 0xff, 0xb9, 0xb6, 0xb6, 0xb6, 0xce, 0xff, 0x80, 0xb6, 0xb6, 0xb6, 0xbe, 0xff, 0xfe, 0xfe, 0x80, 0xfe, 0xfe, 0xff, 0xff), addr I2CWrite sda, scl, 0xa6, addr, data WaitUs 10 Next addr 'tekst "START" For addr = 120 To 150 Step 1 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), addr I2CWrite sda, scl, 0xa6, addr, data WaitUs 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 WaitUs 10 Next addr 'vlam quadr. 1 For addr = 100 To 105 Step 1 data = LookUp(0xc0, 0xf0, 0x78, 0x9c, 0xff, 0xf8), addr I2CWrite sda, scl, 0xa8, addr, data WaitUs 10 Next addr 'vlam quadr. 2 For addr = 110 To 115 Step 1 data = LookUp(0xf0, 0xe0, 0x80, 0x00, 0x00, 0x00), addr I2CWrite sda, scl, 0xa8, addr, data WaitUs 10 Next addr 'vlam quadr. 3 For addr = 120 To 125 Step 1 data = LookUp(0x0f, 0x3f, 0xff, 0xfe, 0xdc, 0xe3), addr I2CWrite sda, scl, 0xa8, addr, data WaitUs 10 Next addr 'vlam quadr. 4 For addr = 130 To 135 Step 1 data = LookUp(0x7f, 0x3f, 0x0f, 0x00, 0x00, 0x00), addr I2CWrite sda, scl, 0xa8, addr, data WaitUs 10 Next addr 'batt icon For addr = 140 To 152 Step 1 data = LookUp(0x7e, 0x7e, 0x5e, 0x46, 0x42, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x24, 0x3c), addr I2CWrite sda, scl, 0xa8, addr, data WaitUs 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 WaitMs 10 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 Serout PORTC.3, 9600, #data, ";", WaitMs 10 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