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
- // Ligar
- // Arduino Port 11 10 9 8 7 6 5 4
- // SN74165 Pin 11 12 13 14 3 4 5 6
- // bits 1 0 1 0 0 1 0 1 = 0xA5
- // Ligar 12 arduino em 2 SN74165 Clk
- // Ligar 3 arduino em 9 SN74165 QH
- // Ligar GND arduino em 10 SN74165 Ser
- // Ligar 13 arduino em 15 SN74165 Clk INH
- // Ligar 2 arduino em 1 SN74165 SH/LD
- //-------------------------------------------------------------------------
- void setup()
- {
- Serial.begin(115200);
- // Carrega estes valores nos registradores
- DDRD |= 0xF4; // Port7 ao port0 OUTPUT 7 a 4 e 2 como saida
- DDRB |= 0x3F; // Port13 ao port8 OUTPUT 13 a 8 como saida
- DDRD &= ~(1 << PD3); // Port3 Como entrada
- PORTD |= (1 << PD3); // Port3 INPUT PULLUP
- }
- //-------------------------------------------------------------------------
- void loop()
- {
- // Prepara para carregar e serializar
- PORTB |= (1 << PB5); // set port 13 HIGH
- delay(1);
- PORTD |= (1 << PD2); // set port 2 HIGH
- delay(1);
- // Carrega A5 na paralela SN74165
- PORTD |= 0x50; // Saida 0101xxxx ports 7,6,5,e 4
- PORTB |= 0x0A; // Saida 1010 ports 11,10,9,e 8
- PORTD &= ~(1 << PD2); // Reset port 2 LOW
- delay(4);
- PORTD |= (1 << PD2); // set port 2 HIGH
- delay(100);
- //Libera para serializar
- PORTB &= ~(1 << PB5); // Reset port 13 LOW
- delay(1);
- // Serializa o byte
- for (int i = 0; i < 8; i++) // Serilaiza 8 bits
- {
- // Envia um pulso de clock
- PORTB |= (1 << PB4); // set port 12
- delay(4);
- PORTB &= ~(1 << PB4); // Reset port 12
- delay(4);
- // Le e imprime a saida do SN74165
- byte entrada = PIND & 0b00001000;
- Serial.println(entrada, BIN);
- delay(100);
- }
- Serial.println(" ");
- delay(500);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement