Адресное пространтство МК Atmega128 и AT90CAN128
Вид корпуса и назначение выводов микроконтроллера AT90CAN128
Вид корпуса и назначение выводов микроконтроллера ATmega128
Структурная схема микроконтроллера ATMega128
Файл регистров общего назначения
Объявление микроконтроллера |
Для ATmega8515 .device ATmega8515 .include "m8515def.inc" |
Для ATmega103 .device ATmega103 .include "m103def.inc" |
Для ATmega128 .device ATmega128 .include "m128def.inc" |
Для AT90CAN128 .device AT90CAN128 .include "can128def.inc" |
Загрузка регистра константой ldi r30, $23 ldi r16,0х23 | Загрузка регистровой пары константой ldi ZL, $23 ldi ZH, $11 |
Приращение регистра Z на 4: adiw z, 4 | Пример определения номера разряда первого 0 справа. Clr r16 Ldi r17,0x17 |
Пересылка между регистрами mov r31, r16 | Loop: inc r16 lsr r17 brcs loop dec r16 ; при r16 = 8 - регистр r17 не содержит нулей |
Работа с портами (поразрядное управление)
Обобщенная структура порта без дополнительных функций
Эквивалентная схема входа/выхода
DDRB – регистр направления порта В
PORTB – выходной регистр данных порта В
PINB – входной синхронный регистр защелки порта В
Пример: Настроить порт В – 0-3 – разряды на прием, 4 – не задействован(Z-состояние), 5-7 на выход (причем 7-разряд в 1, остальные в 0).
Ldi r16, 0xe0; b11100000
Out DDRB, r16
Ldi r16, 0xe0; b10001111
Out PORTB, r16
Переустановить разряды 5-6 в состояние логической 1
In r16,PORTB ;read PORTB latch
sbr r16,(1<<PB6)+(1<<PB5) ;set PB6 and PB5 (use masks, not bit#)
Out PORTB,r16
Выполнить опрос входов
sbis PINB, 0 ; sbis работает с портами, номера которых [0..31] (<=$1F)
rjmp put_bit0 ; PINB – адрес $16
Sbis PINB, 1
Rjmp put_bit1
Sbis PINB, 2
Rjmp put_bit2
Sbis PINB, 3
Rjmp put_bit3
Rjmp noput_bits
Вывод данных из порта Ввод данных в порт
Работа со стеком
;***** Инициализация указателя стека **** ldi R20, $FF ; загрузка промежуточного ; регистра R20 младшим байтом адреса начала ; стека out SPL, R20 ; загрузка младшего байта ; указателя стека ldi R20, $10 ; загрузка промежуточного ; регистра R20 старшим байтом адреса начала ; стека out SPH, R20 ; загрузка старшего байта | Запись регистра в стек push R30 ; сохранение указателя Z в стеке push R31 |
Считывание из вершины стека в вершину pop R31 ; извлечение указателя Z из стека pop R30 ; |
Таблица 1.1. Регистры ввода-вывода микроконтроллера ATmega128
Название | Адрес | Функция |
UCSR1C | ($9D) | Регистр управления и состояния С USART1 |
UDR1 | ($9C) | Регистр данных USART1 |
UCSR1A | ($9B) | Регистр управления и состояния A USART1 |
UCSR1B | ($9A) | Регистр управления и состояния В USART1 |
UBRR1L | ($99) | Регистр скорости передачи USART1, младший байт |
UBRR1H | ($98) | Регистр скорости передачи USART1, старший байт |
UCSR0C | ($95) | Регистр управления и состояния С USART0 |
UBRR0H | ($90) | Регистр скорости передачи USART0, старший байт |
TCCR3C | ($8C) | Регистр управления С таймера/счетчика ТЗ |
TCCR3A | ($8B) | Регистр управления А таймера/счетчика ТЗ |
TCCR3B | ($8A) | Регистр управления В таймера/счетчика ТЗ |
TCNT3H | ($89) | Счетный регистр таймера/счетчика ТЗ, старший байт |
TCNT3L | ($88) | Счетный регистр таймера/счетчика ТЗ, младший байт |
OCR3AH | ($87) | Регистр совпадения А таймера/счетчика ТЗ, старший байт |
OCR3AL | ($86) | Регистр совпадения А таймера/счетчика ТЗ, младший байт |
OCR3BH | ($85) | Регистр совпадения В таймера/счетчика ТЗ, старший байт |
OCR3BL | ($84) | Регистр совпадения В таймера/счетчика ТЗ, младший байт |
OCR3CH | ($83) | Регистр совпадения С таймера/счетчика ТЗ, старший байт |
OCR3CL | ($82) | Регистр совпадения С таймера/счетчика ТЗ, младший байт |
ICR3H | ($81) | Регистр захвата таймера/счетчика ТЗ, старший байт |
ICR3L | ($80) | Регистр захвата таймера/счетчика ТЗ, младший байт |
ETIMSK | ($7D) | Дополнительный регистр маски прерываний от таймеров/счетчиков |
ETIFR | ($7C) | Дополнительный регистр флагов прерываний от таймеров/счетчиков |
TCCR1C | ($7A) | Регистр управления С таймера/счетчика Т1 |
OCR1CH | ($79) | Регистр совпадения С таймера/счетчика Т1, старший байт |
OCR1CL | ($78) | Регистр совпадения С таймера/счетчика Т1, младший байт |
TWCR | ($74) | Регистр управления TWI |
TWDR | ($73) | Регистр данных TWI |
TWAR | ($72) | Регистр адреса TWI |
TWSR | ($71) | Регистр состояния TWI |
TWBR | ($70) | Регистр скорости передачи TWI |
OSCCAL | ($6F) | Регистр калибровки тактового генератора |
XMCRA | ($6D) | Регистр управления А внешней памятью |
XMCRB | ($6C) | Регистр управления В внешней памятью |
EICRA | ($6A) | Регистр управления А внешними прерываниями |
SPMCR | ($68) | Регистр управления памятью программ |
PORTG | ($65) | Регистр данных порта G |
DDRG | ($64) | Регистр направления данных порта G |
PING | ($63) | Выводы порта G |
PORTF | ($62) | Регистр данных порта F |
DDRF | ($61) | Регистр направления данных порта F |
SREG | $3F($5F) | Регистр состояния |
SPH | $3E($5E) | Указатель стека, старший байт |
SPL | $3D($5D) | Указатель стека, младший байт |
XDIV | $3C($5C) | Регистр управления делителем тактовой частоты |
RAMPZ | $3B($5B) | Регистр выбора страницы |
EICRB | $3A($5A) | Регистр управления В внешними прерываниями |
EIMSK | $39($59) | Регистр маски внешних прерываний |
EIFR | $38 ($58) | Регистр флагов внешних прерываний |
TIMSK | $37($57) | Регистр маски прерываний от таймеров/счетчиков |
TIFR | $36($56) | Регистр флагов прерываний от таймеров/счетчиков |
MCUCR | $35($55) | Регистр управления микроконтроллером |
MCUCSR | $34($54) | Регистр управления и состояния микроконтроллера |
TCCR0 | $33($53) | Регистр управления таймером/счетчиком Т0 |
TCNT0 | $32($52) | Счетный регистр таймера/счетчика Т0 |
OCR0 | $31($51) | Регистр совпадения таймера/счетчика Т0 |
ASSR | $30($50) | Регистр состояния асинхронного режима |
TCCR1A | $2F($4F) | Регистр управления А таймера/счетчика Т1 |
TCCR1B | $2E($4E) | Регистр управления В таймера/счетчика Т1 |
TCNT1H | $2D($4D) | Счетный регистр таймера/счетчика Т1, старший байт |
TCNT1L | $2C($4C) | Счетный регистр таймера/счетчика Т1, младший байт |
OCR1AH | $2B($4B) | Регистр совпадения А таймера/счетчика Т1, старший байт |
OCR1AL | $2A($4A) | Регистр совпадения А таймера/счетчика Т1, младший байт |
OCR1BH | $29($49) | Регистр совпадения В таймера/счетчика Т1, старший байт |
OCR1BL | $28($48) | Регистр совпадения В таймера/счетчика Т1, младший байт |
ICR1H | $27($47) | Регистр захвата таймера/счетчика Т1, старший байт |
ICR1L | $26($46) | Регистр захвата таймера/счетчика Т1, младший байт |
TCCR2 | $25($45) | Счетный регистр таймера/счетчика Т2 |
TCNT2 | $24($44) | Регистр совпадения таймера/счетчика Т2 |
OCR2 | $23($43) | Регистр совпадения таймера/счетчика Т2 |
OCDR | $22($42) | Регистр внутрисхемной отладки |
WDTCR | $21($41) | Регистр управления сторожевым таймером |
SFIOR | $20($40) | Регистр специальных функций |
EEARH | $1F($3F) | Регистр адреса EEPROM, старший байт |
EEARL | $1E($3E) | Регистр адреса EEPROM, младший байт |
EEDR | $1D($3D) | Регистр данных EEPROM |
EECR | $1C($3C) | Регистр управления EEPROM |
PORTA | $1B($3B) | Регистр данных порта А |
DDRA | $1A($3A) | Регистр направления данных порта А |
PINA | $19($39) | Выводы порта А |
PORTB | $18($38) | Регистр данных порта В |
DDRB | $17($37) | Регистр направления данных порта В |
PINB | $16($36) | Выводы порта В |
PORTC | $15($35) | Регистр данных порта С |
DDRC | $14($34) | Регистр направления данных порта С |
PINC | $13($33) | Выводы порта С |
PORTD | $12($32) | Регистр данных порта D |
DDRD | $11($31) | Регистр направления данных порта D |
PIND | $10($30) | Выводы порта D |
SPDR | $0F($2F) | Регистр данных SPI |
SPSR | $0E($2E) | Регистр состояния SPI |
SPCR | $0D($2D) | Регистр управления SPI |
UDR0 | $0C($2C) | Регистр данных USART0 |
UCSR0A | $0B($2B) | Регистр управления и состояния A USART0 |
UCSR0B | $0A($2A) | Регистр управления и состояния В USART0 |
UBRR0L | $09($29) | Регистр скорости передачи USART0, младший байт |
ACSR | $08($28) | Регистр управления и состояния аналогового компаратора |
ADMUX | $07($27) | Регистр управления мультиплексором АЦП |
ADCSRA | $06($26) | Регистр управления и состояния АЦП |
ADCH | $05($25) | Регистр данных АЦП, старший байт |
ADCL | $04($24) | Регистр данных АЦП, младший байт |
PORTE | $03($23) | Регистр данных порта Е |
DDRE | $02($22) | Регистр направления данных порта Е |
PINE | $01($21) | Выводы порта Е |
PINF | $00($20) | Выводы порта F |
Карта памяти программ Карта памяти данных SRAM
Адресное пространтство МК Atmega128 и AT90CAN128
XRAM (0 тактов ожидания)
External SRAM (XRAM)
XRAM (1 такт ожидания)