В языке Си AVR много переменных для обращения к адресам.
Например, PORTB читает/пишет в порт B, UDDR обращение к регистрам порта и т.д.
Но адреса регистров вещь не постоянная, она меняется от чипа к чипу.
Как программа знает по какому физическому адресу обращаться при работе с переменной PORTB?
C AVR переменная PORTB и ее адрес
- Реклама
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Re: C AVR переменная PORTB и ее адрес
А хидеры всяческие с объявллением регистров по Вашему просто так прилагаются?
Ведь одна из первых строк .include "*.h"
Ведь одна из первых строк .include "*.h"
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Re: C AVR переменная PORTB и ее адрес
Ну или в makefile можно задавать, для WinAVR. например:
MCU = attiny25
а дальше при подключении хэдера avr/io.h к основной программе
#include <avr/io.h>
в нем самом происходит подключение нужного хэдера, в котором PORTB и определен.
и только это не переменная, а некое определение адреса регистра
#define PORTB _SFR_IO8(0x18)
которое определено уже в другом хэдере
#define _SFR_IO8(io_addr) ((io_addr) + __SFR_OFFSET)
...
MCU = attiny25
а дальше при подключении хэдера avr/io.h к основной программе
#include <avr/io.h>
в нем самом происходит подключение нужного хэдера, в котором PORTB и определен.
и только это не переменная, а некое определение адреса регистра
#define PORTB _SFR_IO8(0x18)
которое определено уже в другом хэдере
#define _SFR_IO8(io_addr) ((io_addr) + __SFR_OFFSET)
...
