Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств

344 Микроконтроллеры AVR от азов программирования... Других изменений программа электронного замка не имеет. Нам даже не пришлось переименовывать метки. Внимание. В функции main и в функции mu z новой программы используются оди ­ наковые имена меток. В программе на Ассемблере в подобной ситуа ­ ции нам пришлось переименовать метки одной из программ. В языке СИ метки, проставленные внутри одной из функций, не «видны» из другой. Поэтому переименовывать метки не обязательно. Однако в том случае, когда вы пишете программу с нуля, все же жела ­ тельно не применять одинаковых имен в разных частях программы. Просто для того, чтобы самому не запутаться в этих именах. Листинг 5.22 Project : Пример 11 Version : 1 Date : 07.03.2006 Author : Belov Company : Home Comments: Кодовый замок с музыкальным звонком Chip type Clock frequency Memory model Data Stack size : ATtiny2313 : 4,000000 MHz • Tiny • 32 */ 1 «include <tiny2313 h> 2 «include <delay.h> 3 «define klfree 0x77F 4 «define kzad 3000 5 «define kandr 20 6 «define bsize 30 7 unsigned char flz; 8 unsigned int bufr[bsize]; 9 unsigned char melod; 10 «pragma warn- 11 eeprom unsigned char klen; 12 eeprom unsigned int bufe[bsize], 13 «pragma warn+ // Объявление и инициализация массивов // Таблица задержек 14 flash unsigned int tabz[] = // Массив коэффициентов деления 15 flash unsigned int tabkd[] 16 17 // Таблицы мелодий 18 flash unsigned char mel1[] = 19 flash unsigned char mel2[] // Код состояния при полностью отпущенных кнопках // Код задержки при сканировании // Константа антидребезга // Размер буфера для хранения кода // Флаг задержки // Буфер в ОЗУ для хранения кода // Текущий номер мелодии // Отмена предупреждающих сообщений // Ячейка для хранения длины кода // Буфер в EEPROM для хранения кода // Разрешение предупреждающих сообщений {16,32,64,128,256,512,1024}; {0,4748,4480,4228,3992,3768,3556,3356,3168,2990,2822, 2664,2514,2374,2240,2114,1996,1884,1778,1678,1584,1495,1411,1332,1257, 1187,1120,1057, 998,942,889,839,792}; {109,104,109,104,109,108,108,96,108,104,108,104,255}; = {109,110,141,102,104,105,102,109,110,141,104,105, 255};

RkJQdWJsaXNoZXIy MTExODQxMg==