Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Port manipulation
- // C:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard
- // PORTB – The Port B Data Register
- // DDRB – The Port B Data Direction Register
- // PINB – The Port B Input Pins Address
- // PORTC – The Port C Data Register
- // DDRC – The Port C Data Direction Register
- // PINC – The Port C Input Pins Address
- // PORTD – The Port D Data Register
- // DDRD – The Port D Data Direction Register
- // PIND – The Port D Input Pins Address
- // Ex:
- // PDx bit do PORTD
- // PBx bit do PORTB
- // 7 6 5 4 3 2 1 0
- // PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD0 <<< Port de 0 a 7 0 e 1 sao usados pela Serial
- // 13 12 11 10 9 8
- // PB5 PB4 PB3 PB2 PB1 PB0 <<< Port de 8 a 13
- // A7 A6 A5 A4 A3 A2 A1 A0
- // PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 <<< Port de A0 a A7
- // (port) |= (1 << (bit)); // Set um bit apenas
- // (port) &= ~(1 << (bit)); // Reset um bit apenas
- // (reg) |= value; // Set vários bits de uma vez
- // Serial imprime bits 76543210
- //-------------------------------------------------------------------------
- void setup()
- {
- Serial.begin(115200);
- // DDRD |= (1 << PD2);
- // DDRB &= ~(1 << PB4);
- // Carrega estes valores nos registradores
- DDRD |= 0xF8; // Port3 ao port7 OUTPUT
- DDRB |= 0x7F; // Port8 ao port13 OUTPUT
- PORTD |= 0x04; // Port3 INPUT PULLUP
- Serial.println(" Carrega estes valores nos registradores ");
- Serial.print(DDRD, HEX); Serial.print(" "); Serial.println(DDRD, BIN);
- Serial.print(DDRB, HEX); Serial.print(" "); Serial.println(DDRB, BIN);
- Serial.print(PORTD, HEX); Serial.print(" "); Serial.println(PORTD, BIN);
- Serial.println(" Carrega este valor no registrador ");
- PORTB |= 0xFF; // Set todos bits
- Serial.print(PORTB, HEX); Serial.print(" "); Serial.println(PORTB, BIN);
- Serial.println(" Modifica pra este valor, apagando alguns bits ");
- PORTB &= 0x73; // Reset alguns bits (bits 2, 3, 6, 7)
- Serial.print(PORTB, HEX); Serial.print(" "); Serial.println(PORTB, BIN);
- Serial.println(" Limpa registradores ");
- PORTB &= 0x00; // Reset todos bits
- DDRB &= 0x00; // Reset todos bits
- Serial.print(PORTB, HEX); Serial.print(" "); Serial.println(PORTB, BIN);
- Serial.print(DDRB, HEX); Serial.print(" "); Serial.println(DDRB, BIN);
- Serial.println(" Set de bits individuais");
- PORTB |= (1 << PD2); // Set bit 2
- DDRB |= (1 << PD3); // Set bit 3
- Serial.print(PORTB, HEX); Serial.print(" "); Serial.println(PORTB, BIN);
- Serial.print(DDRB, HEX); Serial.print(" "); Serial.println(DDRB, BIN);
- Serial.println(" Liga todos bits dos registradores");
- PORTB = 0xFF; // Reset todos bits
- DDRB = 0xFF; // Reset todos bits
- Serial.print(PORTB, HEX); Serial.print(" "); Serial.println(PORTB, BIN);
- Serial.print(DDRB, HEX); Serial.print(" "); Serial.println(DDRB, BIN);
- Serial.println(" Reset de bits individuais");
- PORTB &= ~(1 << PD4); // Resetet bit 4
- DDRB &= ~(1 << PD5); // Reseet bit 5
- Serial.print(PORTB, HEX); Serial.print(" "); Serial.println(PORTB, BIN);
- Serial.print(DDRB, HEX); Serial.print(" "); Serial.println(DDRB, BIN);
- }
- //-------------------------------------------------------------------------
- void loop()
- {
- // configurar PORTB como saída
- DDRB = 0xFF;
- // configurar PORTD como entrada
- DDRD = 0;
- // PORTD com PULLUP
- PORTD = 0xFF;
- // mapa PIND muda para PORTB
- PORTB = PIND;
- Serial.println(" Le entradas e envia para saidas");
- Serial.print(PORTB, HEX); Serial.print(" "); Serial.println(PORTB, BIN);
- delay(500);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement