Люди помогите пож в программировании на си
Пишу программу впервые, параллельно изучаю си, подпрограммы собрал с миру по нитке,
память не экономил, действовал по принципу пишу как получается, если не хватит буду оптимизировать, там где можно использовать bit или еще более экономичные структуры использовал чар, писал писал пока не дописался вот до такого сообщения:
Build E:\kaskad\pr1 for device 16F877A
Using driver C:\Program Files\HI-TECH Software\PICC\9.71a\bin\picc.exe
Make: The target "E:\kaskad\delay.p1" is up to date.
Make: The target "E:\kaskad\main.p1" is out of date.
Executing: "C:\Program Files\HI-TECH Software\PICC\9.71a\bin\picc.exe" --pass1 E:\kaskad\main.c -q --chip=16F877A -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
Make: The target "E:\kaskad\ds18.p1" is up to date.
Make: The target "E:\kaskad\lcd.p1" is up to date.
Make: The target "E:\kaskad\rtc.p1" is up to date.
Make: The target "E:\kaskad\usart.p1" is up to date.
Make: The target "E:\kaskad\i2c.p1" is up to date.
Executing: "C:\Program Files\HI-TECH Software\PICC\9.71a\bin\picc.exe" -opr1.cof -mpr1.map --summary=default --output=default delay.p1 main.p1 ds18.p1 lcd.p1 rtc.p1 usart.p1 i2c.p1 --chip=16F877A -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
HI-TECH C Compiler for PIC10/12/16 MCUs (PRO Mode) V9.71a
Copyright (C) 2010 Microchip Technology Inc.
Serial number: HCPICP-654321 (PRO)
Error [1356] E:\kaskad\ds18.c; 35. fixup overflow referencing psect nvBANK1 (0xA0) into 1 byte at 0x1E14/0x2 -> 0xF0A (pr1.obj 184/0x20)
Error [1356] E:\kaskad\ds18.c; 36. fixup overflow referencing psect nvBANK1 (0xA0) into 1 byte at 0x1E3A/0x2 -> 0xF1D (pr1.obj 184/0x46)
Error [1356] E:\kaskad\ds18.c; 38. fixup overflow referencing psect nvBANK1 (0xA0) into 1 byte at 0x1E64/0x2 -> 0xF32 (pr1.obj 186/0x14)
Error [1356] E:\kaskad\ds18.c; 28. fixup overflow referencing psect nvBANK1 (0xA0) into 1 byte at 0x1EA4/0x2 -> 0xF52 (pr1.obj 186/0x54)
Error [1356] E:\kaskad\ds18.c; 29. fixup overflow referencing psect nvBANK1 (0xA0) into 1 byte at 0x1EDA/0x2 -> 0xF6D (pr1.obj 188/0x30)
Error [1356] E:\kaskad\ds18.c; 30. fixup overflow referencing psect nvBANK1 (0xA0) into 1 byte at 0x1EE8/0x2 -> 0xF74 (pr1.obj 188/0x3E)
Error [1356] E:\kaskad\ds18.c; 20. fixup overflow referencing psect nvBANK1 (0xA0) into 1 byte at 0x1F30/0x2 -> 0xF98 (pr1.obj 190/0x3E)
Error [1356] E:\kaskad\ds18.c; 20. fixup overflow referencing psect nvBANK1 (0xA0) into 1 byte at 0x1F3C/0x2 -> 0xF9E (pr1.obj 190/0x4A)
Error [1356] E:\kaskad\ds18.c; 21. fixup overflow referencing psect nvBANK1 (0xA0) into 1 byte at 0x1F5E/0x2 -> 0xFAF (pr1.obj 193/0xC)
Error [1356] E:\kaskad\delay.c; 22. fixup overflow referencing psect nvBANK1 (0xA0) into 1 byte at 0xE66/0x2 -> 0x733 (pr1.obj 314/0x24)
********** Build failed! **********
признаюсь что в программе я половину не понимаю еще, действую методом проб и ошибок, и шаг влево шаг вправо сделать боюсь, программа уже работает и осталось совсем немного косметики, из сообщения я понял что переполнился банк 1, хотя по процентам еще память есть, вот так это выглядело пока работало:
Build E:\kaskad\pr1 for device 16F877A
Using driver C:\Program Files\HI-TECH Software\PICC\9.71a\bin\picc.exe
Make: The target "E:\kaskad\delay.p1" is up to date.
Make: The target "E:\kaskad\main.p1" is out of date.
Executing: "C:\Program Files\HI-TECH Software\PICC\9.71a\bin\picc.exe" --pass1 E:\kaskad\main.c -q --chip=16F877A -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
Make: The target "E:\kaskad\ds18.p1" is up to date.
Make: The target "E:\kaskad\lcd.p1" is up to date.
Make: The target "E:\kaskad\rtc.p1" is up to date.
Make: The target "E:\kaskad\usart.p1" is up to date.
Make: The target "E:\kaskad\i2c.p1" is up to date.
Executing: "C:\Program Files\HI-TECH Software\PICC\9.71a\bin\picc.exe" -opr1.cof -mpr1.map --summary=default --output=default delay.p1 main.p1 ds18.p1 lcd.p1 rtc.p1 usart.p1 i2c.p1 --chip=16F877A -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
HI-TECH C Compiler for PIC10/12/16 MCUs (PRO Mode) V9.71a
Copyright (C) 2010 Microchip Technology Inc.
Serial number: HCPICP-654321 (PRO)
Memory Summary:
Program space used D45h ( 3397) of 2000h words ( 41.5%)
Data space used 60h ( 96) of 170h bytes ( 26.1%)
EEPROM space used 0h ( 0) of 100h bytes ( 0.0%)
Configuration bits used 1h ( 1) of 1h word (100.0%)
ID Location space used 0h ( 0) of 4h bytes ( 0.0%)
Loaded E:\kaskad\pr1.cof.
********** Build successful! **********
люди добрые помогите пож
1 запустить этот второй банк,
2 и еще вопрос, кто разбирается посмотрите бегло пож как экономичнее использовать память для переменных изменив тип, знаю точно что строки
50 unsigned char reley[6];
51 unsigned char key_command[16];
это простые флаги 1 или 0, они запрсто могут быть bit но я пишу и немогу их переделать в bit вылезают новые ошибки,
покажите пож для примера как это сделать.
Весь проект прилагаю,
ошибка с переполнением появилась когда я добавил в строке 51 key_command[18];