[AVRcomC] Sensor PIR

//------------------------------------------------------------------------#define F_CPU 16000000UL //define a frequência do microcontrolador 16MHz //(necessário para usar as rotinas de atraso)#include <avr/io.h> //definições do componente especificado#include <util/delay.h> //biblioteca para o uso das rotinas de //_delay_ms() e _delay_us()
//Definições de macros - empregadas para o trabalho com os bits#define set_bit(Y,bit_x) (Y|=(1<<bit_x)) //ativa o bit x da variável Y (coloca em 1)#define clr_bit(Y,bit_x) (Y&=~(1<<bit_x)) //limpa o bit x da variável Y (coloca em 0)#define tst_bit(Y,bit_x) (Y&(1<<bit_x)) //testa o bit x da variável Y (retorna 0 ou 1)#define cpl_bit(Y,bit_x) (Y^=(1<<bit_x)) //troca o estado do bit x da variável Y (complementa)
#define LED PB4 //LED é o substituto de PB5 na programação#define PIR PD4 //PIR ligado no pino 4
int main(){ DDRB = 0x10; //configura 0b00010000 do PORTB como saída PORTB = 0x00; //desliga saidas DDRD = 0x00; //configura todos como entrada PORTD = 0x00; //desliga entradas while(true){ //laço infinito // ternario -> condicao ? verdadeiro : falso; tst_bit(PIND,PIR) ? set_bit(PORTB,LED) : clr_bit(PORTB,LED); _delay_ms(100); } // fim while return 0;} // fim main()//------------------------------------------------------------------------