AVR - jak pristoupit k jednotlivym pinum, ne k celemu portu?

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
petus
Příspěvky: 594
Registrován: 12 led 2009, 00:00
Bydliště: Pelhřimov
Kontaktovat uživatele:

#16 Příspěvek od petus »

Když používáš CodeVision a jeho kompilátor, tak umí přistupovat bitově, ale ve výsledku to dělá stejně jako AVRStudio, tj. že maskuje porty.
Pokud něco chcete a neodpovídám,pošlete SZ :)
https://chiptron.cz - novinky ze světa elektro (Arduino, Raspberry Pi, ESP8266, STM32, ESP32...)
Peťus
Jenda_KL
Příspěvky: 1173
Registrován: 10 zář 2008, 00:00
Bydliště: Kadaň
Kontaktovat uživatele:

#17 Příspěvek od Jenda_KL »

MiroH píše:Pretoze AVR nemaju na porty bitovy pristup.
SBI PORTB,PB0
CBI PORTB,PB0
toto je jaký přístup?
Uživatelský avatar
sqad
Příspěvky: 172
Registrován: 23 zář 2007, 00:00

#18 Příspěvek od sqad »

Sprav to takto:

Kód: Vybrat vše

typedef union
{
   unsigned char Byte;
   struct
   {
      unsigned int bit_0 :1;
      unsigned int bit_1 :1;
      unsigned int bit_2 :1;
      unsigned int bit_3 :1;
      unsigned int bit_4 :1;
      unsigned int bit_5 :1;
      unsigned int bit_6 :1;
      unsigned int bit_7 :1;
   }Bits;
}ByteField;


volatile ByteField pokus;


void main(void)
{
   pokus.Byte = 255;
   pokus.Bits.bit_6 = 0;
}


alebo takto:

Kód: Vybrat vše

unsigned char bit[8];

void main(void)
{
   unsigned char k, m=1;

   for(k=0;k<=7;k++)
   {
      bit[k] = m;
      m <<= 1;
   }

   PORTB |= bit[5];
   PORTB &= ~bit[5];
}
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“