Современная электроника №7/2021
ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ 68 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 7 2021 Рис. 18. Образ карты памяти: до (а) и после (б) применения функций создания, переименования и удаления файлов и папок Рис. 19. Симуляция схемы управления файловой структурой карты памяти с помощью микроконтроллера ATmega32 в редакторе ISIS программы Proteus а б − FR_NO_FILESYSTEM – на физиче- ском носителе отсутствует коррект- ный раздел FAT. Перед выполнением функций пере- именования и удаления открытые объ- екты должны быть закрыты. Рассмотрим работу с функциями на конкретном примере. Для этого созда- дим с помощью программы WinImage образ картыпамяти, добавимв образ две папки dir и sub1 и текстовые файлы s.txt, 1.txt, 2.txt, 8.txt (см. рис. 18а). Сохраним образ в папке FAT16 в каталоге с проек- томProteus cрасширением .imaивведём вручнуюпуть кфайлу образа и его имя в полеCardImageFileвокнесвойствкарты памяти.Используяпредставленныефунк- ции,переименуемужеимеющийсянакар- тепамятифайлs.txtипапкуsub1,создадим двеновыедиректорииsub2иdir2иудалим файл8.txt ипапкуdir (см. рис. 18б). Текст программыпредставленна листинге 3. Введём текст программы в окне кода CodeVisionAVR и запустим компиля- цию. После чего перейдём в Proteus и в окне свойств микросхемы ATmega32 укажем путь к файлу прошивки на диске компьютера. Запустим симуля- цию собранной схемы (см. рис. 19), в результате чего будет выполнено мон- тирование карты памяти, переимено- вание текстового файла и папки, созда- ние двух новых директорий, удаление директории и файла на карте памяти. Литература 1. Колесникова Т . Проектирование схем микроэлектронных устройств с исполь- зованием внешней памяти в Proteus. Ч. 1 // Современная электроника. 2021. № 6. 2. ISIS Help, Labcenter Electronics, 2014. 3. CodeVisionAVR Help, HP InfoTech, 2014. 4. HD44780U (LCD-II) (Dot Matrix Liquid Crystal Display Controller/Driver). Hitachi, Ltd. 1998. Листинг 3 #include <mega32.h> // Подключение заголовочных файлов #include <ff.h> interrupt [TIM1_COMPA] void timer1_compa_isr(void) {disk_timerproc();} // Вызов функции синхронизации void main(void) // Основная функция программы { FATFS fat; // Выделение рабочей области памяти для логического диска // Инициализация порта PB микроконтроллера DDRB=(1<<DDB7) | (0<<DDB6) | (1<<DDB5) | (1<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0); PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); // Инициализация таймера TCCR1A=0x00; TCCR1B=0x0D; TCNT1H=0x00; TCNT1L=0x00; OCR1AH=0x00; OCR1AL=0x4E; TIMSK=0x10; #asm("sei") f_mount(0, &fat); // Выделение рабочей области памяти для логического раздела f_rename("s.txt", "new.txt"); // Переименование файла f_rename("/sub1", "/newsub1"); // Переименование папки f_mkdir("0:/sub2"); // Создание новой папки sub2 f_mkdir("0:/dir2"); // Создание новой папки dir2 f_unlink("0:/dir"); // Удаление папки dir f_unlink("0:/8.txt"); // Удаление файла }
RkJQdWJsaXNoZXIy MTQ4NjUy