Програмиране на асемблер за микроконтролери 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. Всички команди от тази група се изпълняват в един цикъл.