roboforum.ru

Технический форум по робототехнике.

Указатель на порт

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: Указатель на порт

Сообщение sky-walker » 08 янв 2013, 00:52

Прошу прощения за задержку.

У меня получилось, однако ). Спасибо ссылкам dccharacter.
Делаю так (девайс ATmega8, компилятор AVR-GCC):
Код: Выделить всёРазвернуть
#include <inttypes.h>
#include <avr/io.h>
#define pAddr(addr) (*(volatile uint8_t *)((addr) + 0x20))

void port_set (volatile uint8_t *port, uint8_t val){
    *port = val;
}
unsigned char port_get (volatile uint8_t *port){
    return *port;
}
void port_set_bits (volatile uint8_t *port, uint8_t mask){
    *port |= mask;
}
void port_clear_bits (volatile uint8_t *port, uint8_t mask){
    *port &=~(mask);
}

int main(){
   PORTB=0x00;
   DDRB=0xff;

   unsigned char myPort = 0x18; // PORTB

   port_set (&pAddr(myPort), 0x02);
   port_set (&pAddr(myPort), 0x01);

   port_set_bits(&pAddr(myPort), 2);

   while(1){
      ;
   }
   return 0;
}


Не сказать, что красивый вариант, но работает...
Аватара пользователя
sky-walker
 
Сообщения: 40
Зарегистрирован: 29 сен 2012, 14:41
прог. языки: C\C++, AutoIt, PHP

Пред.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron