Програмиране на асемблер за микроконтролери avr (стр
Поради големия обем този материал е разположен на няколко страници: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |

EEPROM регистър на данни
Контролен регистър на EEPROM
Регистър на данни за порт A
Порт A Регистър за посока на данни
Регистър на данни за порт B
Порт B Регистър за посока на данни
Порт C регистър на данните
Порт C Регистър за посока на данни
Регистър на данните на порта D
Порт D Регистър за посока на данни
SPI регистър на данни
SPI регистър на състоянието
SPI контролен регистър
USART регистър на данни
USART регистър за контрол и състояние A
USART регистър за контрол и състояние B
Нисък байт на регистъра на скоростта на предаване на USART
Регистър за управление и състояние на аналогов компаратор
Контролен регистър на ADC мултиплексор
ADC управление и регистър на състоянието A
Висок байт на регистъра на данни на ADC
Нисък байт на регистъра на данни на ADC
TWI регистър на данните
TWI регистър на състоянието
TWI регистър на скоростта на предаване
Контролният регистър EECR (EEPROM Control Register) се използва за контрол на достъпа до EEPROM паметта.
2. СИСТЕМА ОТ КОМАНДИ НА AVR-МИКРОКОНТРОЛЕРИ
Програмата за всеки микроконтролер е последователност от команди, записани в програмната памет. Повечето инструкции, когато се изпълняват, променят съдържанието на един или повече регистри с общо предназначение, I/O регистри или местоположения на RAM.
Тези файлове (за всеки модел микроконтролери от семейството) се разпространяват свободно от Atmel заедно с документацията за микроконтролери (вПо-специално, включващите файлове за всички издадени AVR микроконтролери са включени в безплатно разпределената интегрирана среда AVRStudio). За RON, използван в индексни регистри, допълнителни символни имена XH, XL, YH, YL, ZH, ZL също са дефинирани в тези файлове.
Имената на тези включени файлове са унифицирани и дефинирани, както следва: def. вкл
Например, програма за микроконтролера ATmega8535 трябва да съдържа следната директива за асемблер:
.include "m8535def.inc"
Необходимо е само да запомните, че ако командите за обмен на RAM се използват за достъп до I / O регистъра, тогава числото $20 трябва да се добави към символното име.
В някои случаи стойността на изходния операнд може да се съдържа директно в кода на операцията, а не в регистър. Това се случва, когато операндът източник е константа.
Когато се изпълни инструкция за относителен скок, съдържанието на брояча на инструкции се променя чрез добавяне или изваждане от него на някаква стойност, която е операндът на инструкцията. Тъй като има само 12 бита за стойността на операнда в думата на инструкцията, тази инструкция може да скача само в рамките на -2+2048 думи. В програмите етикетите се използват като операнди на тази инструкция вместо константи. Самият асемблер изчислява стойността на скока и замества тази стойност в думата с инструкции.
Целият набор от инструкции за AVR микроконтролери от семейството Mega може да бъде разделен на няколко групи:
• команди на логически операции;
• команди за аритметични операции и команди за смяна;
• инструкции за работа с битове;
• команди за трансфер на данни;
• команди за трансфер на управление;
• команди за управление на системата.
Всеки е описан накратко по-долу.командна група.
Командите за логически операции (Таблица 2) ви позволяват да извършвате стандартни логически операции върху байтове, като логическо умножение (И), логическо събиране (ИЛИ), операция XOR, както и изчисляване на обратни (комплемент на единица) и допълнителни (комплемент на две) числови кодове. Тази група също така включва команди за изчистване/настройка на регистри и команда за пермутация на късове. Операциите се извършват между общи регистри или между регистър и константа; резултатът се съхранява в RON. Всички команди от тази група се изпълняват в един цикъл.