roboforum.ru

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

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

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;
}


Не сказать, что красивый вариант, но работает...


Rambler\'s Top100 Mail.ru counter