Регистр управления микроконтроллером
Включение/отключения внешней памяти Наличие тактов ожидания (см. XMCRA) Наличие sleep режима Управление перемещением таблицы векторов прерывания с привязкой/нет к расположению области загрузчика
Определение адресных зон с требуемым числом тактов ожидания (верхняя и нижняя) Установка числа тактов ожидания для внешней памяти для обеих зон
Режим удержания выхода Управление портом С при доступе к XRAM
Пример: С – транскрипция: #define OFFSET 0x2100 Void XRAM_example(void) { unsigned char *p = (unsigned char *) (OFFSET + 1); DDRC = 0xFF; PORTC = 0x00; XMCRB = (1<<XMM1) | (1<<XMM0); *p = 0xaa; // запись по адресу 0х101 XMCRB = 0x00; *p = 0x55; // запись по адресу 0х2101 } Asm – транскрипция: ; OFFSET определить как 0x2100 ; Configure Port C (address high byte) Ldi r16, 0xFF Out DDRC, r16 Ldi r16, 0x00 Out PORTC, r16 ; release PC7:5 ldi r16, (1<<XMM1)|(1<<XMM0) Sts XMCRB, r16 ; write 0xAA to address 0x0001 of external memory Ldi r16, 0xaa sts 0x0001+OFFSET, r16 ; re-enable PC7:5 for external memory ldi r16, (0<<XMM1)|(0<<XMM0) Sts XMCRB, r16 ; store 0x55 to address (OFFSET + 1) of external memory Ldi r16, 0x55 sts 0x0001+OFFSET, r16 FLASH
; только для ATmega103+ Clr r16 Ldi ZL, 0x23 Ldi ZH, 0x11 Lpm ; адрес байта 0x01123 Mov r17,r0 Inc r16 Sts RAMPZ, r16 Elpm ; адрес байта 0x11123 Mov r18,r0 МАКРОСЫ .MACROмакроимя Пример: .CSEG ; Начало программного сегмента EEPROM
Запись в EEPROM Assembly Code Example EEPROM_write: ; Wait for completion of previous write Sbic EECR,EEWE Rjmp EEPROM_write ; Set up address (r18:r17) in address register Out EEARH, r18 Out EEARL, r17 ; Write data (r16) to data register Out EEDR,r16 ; Write logical one to EEMWE Sbi EECR,EEMWE ; Start eeprom write by setting EEWE Sbi EECR,EEWE Ret C Code Example Void EEPROM_write(unsigned int uiAddress, unsigned char ucData) { /* Wait for completion of previous write */ while(EECR & (1<<EEWE)); /* Set up address and data registers */ EEAR = uiAddress; EEDR = ucData; /* Write logical one to EEMWE */ EECR |= (1<<EEMWE); /* Start eeprom write by setting EEWE */ EECR |= (1<<EEWE); } Считывание из EEPROM Assembly Code Example EEPROM_read: ; Wait for completion of previous write Sbic EECR,EEWE Rjmp EEPROM_read ; Set up address (r18:r17) in address register Out EEARH, r18 Out EEARL, r17 ; Start eeprom read by writing EERE Sbi EECR,EERE ; Read data from data register In r16,EEDR Ret C Code Example
Популярное: Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (470)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |