Voc no pode usar um pouco da porta usando um cdigo como PINA.0 ou PORTA.
2, isso s pode ser
feito em codevisionAVR porque o compilador feito para reconhecer isso, em AVRstudio ele no compila. Se voc quiser usar cdigo como este voc pode escrever [sintaxe = c] Estrutura / / para permitir operaes de bit de campo, as converses de nome: PORTA.0 -> PORT_A.b0 PORTB.7 -> PORT_B.b7 typedef struct {b0 uint8_t: 1; b1 uint8_t: 1; b2 uint8_t: 1; b3 uint8_t: 1; b4 uint8_t:; b5 uint8_t 1: 1; b6 uint8_t: 1; b7 uint8_t: 1;} bits; / / define todas as portas do seu microcontrolador # definir PORT_A (* (bits volteis *) & PORTA) # define PIN_A (* (bits volteis *) & PINA) # define DDR_A (* (bits volteis *) & DDRA) # define PORT_B (* (bits volteis *) & PORTB) # define PIN_B (* (bits volteis *) & PINB) # define DDR_B (* (bits volteis *) & DDRB) / / ento voc pode usar bits especficos como este para escrever ou ler bits especficos PORT_A.b0 = 1; / / escreve valor a bit PORTA 0 PIN_B.b4 = 0; / / escreve valor a PINB bit 4 [sintaxe /] Uma maneira melhor e mais rpido usar isso [a sintaxe = c] / / adicionar este define # define SETBIT (BIT, endereo) (ADDRESS | = (1) Minha recomendao seria usar o SETBIT, etc CLEARBIT como se eu tivesse postado acima, eles so muito fcil de usar. [Sintaxe = c] # define SETBIT (BIT, endereo) (ADDRESS | = (1 Voc tambm tem que permitir que o resistor pullup do pino de entrada (desde que voc no tem nenhuma pullup externo) para que, quando os fundamentos boto de entrada pode ser detectado. [Sintaxe = c] DDRC = 0xFF; DDRD = 0x00; PORTD = 0x80; / / enable resistor pullup para a entrada de bit 7 do porto D (o pino do boto) [sintaxe /] eo define no precisam estar dentro do principal , eles so geralmente colocados nas primeiras linhas do cdigo, para que possam ser utilizados antes do principal tambm quando existe uma funo Alex