]Eu vou ficar aqui assistindo, pois preciso fazer um, abraço
Sim,
Já usei como um desse do lab, da tv e do radio só vai depender do protocolo de comunicação que o controle usa.
teria um codigo de exemplo so para quebrar um galho?
Tenho um exemplo para controle remoto no padrão da philips, RC5 se não me engano. Foi eu mesmo quem desenvolveu, se quiser posso te passar, compilador é o CCS.
blz! tbm uso o ccs. pode mandar ae leo.dalla@hotmail.com
Obrigado!!
#include<16F628a.h>
#FUSES NOWDT //no Watch Dog Timer
#FUSES INTRC_IO //oscilador interno
#FUSES PUT //Power Up Timer
#FUSES PROTECT //Code protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP
#FUSES NOMCLR
#use delay (clock =4000000)
#define DEBUG// comentar essa linha para sair do modo de debug
#ifdef DEBUG
#use rs232(baud=9600, xmit=PIN_B2,rcv=PIN_B1)
#endif
#bit PINO_INT = 0x06.0
#bit DIR_INT = 0x86.0
#bit PINO_OUT = 0x05.3
#bit DIR_OUT = 0x85.3
#bit PINO_LED = 0x05.0
#bit DIR_LED = 0x85.0
#BYTE PORTA = 0x05
#BYTE PORTB = 0x06
#BIT SAIDA = PORTA.1
unsigned long int count=0;
unsigned int aux_pino_in=0;
unsigned int tecla1,tecla2;
int1 ciclo=0;
int1 aux_count=0;
#int_TIMER1
void TIMER1_isr(void)
{
SET_TIMER1(64536);//1ms
ciclo=1;
}
#int_ext
void intRB0()
{
int conta=0, count=8,y;
int1 x;
delay_us(1320);//cada ciclo tem 1778us, espero 1,5 para começar a ler o pino;
while(count){
y=255;
shift_left( &tecla1, 1, PINO_INT); // insere o bit recebido
x=PINO_INT;
while(x==PINO_INT&&y)y--;//aqui segura o programa, para forçar o sincronismo;
delay_us(1450);
count--;
}
count=5;
while(count){
y=255;
shift_left( &tecla2, 1, PINO_INT); // insere o bit recebido
x=PINO_INT;
while(x==PINO_INT&&y)y--;
delay_us(1450);
count--;
}
}
void main()
{
setup_oscillator(OSC_4MHZ);
setup_comparator(NC_NC_NC_NC);
setup_vref(VREF_LOW);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
enable_interrupts(INT_TIMER1);
ENABLE_INTERRUPTS(INT_EXT);
EXT_INT_EDGE(0,H_TO_L);
enable_interrupts(GLOBAL);
SET_TRIS_B(0b11111111);
SET_TRIS_A(0b11111101);
SAIDA=0;
DIR_INT = 1; // direçao
DIR_OUT = 0; // direção
PINO_OUT=0;
PINO_LED =0;
DIR_LED =0;
#ifdef DEBUG
printf("Inicializa\n");
#endif
home:
while(!ciclo);
ciclo=0;
PINO_LED=!PINO_LED;
if(tecla1!=0||tecla2!=0){
tecla1=tecla1&0b00111111;
printf("Tecla1=%u Tecla2=%u\n\r",tecla1,tecla2);
tecla1=0;
tecla2=0;
}
goto home;
}
Só le o controle e manda pela serial, funcionar funciona, só não lembro mais pq coloquei tecla1 e tecla2. O pino de pulso de entrada é o RB0.
ok obrigado!
falow...
Jucelei este pino pode ser alterado para o pino RA4?
Não. Pois usa interrupção externa.
Jucelei o cálculo do timer é o mesmo para se utilizar um cristal de 20 Mhz?
Ola amigo você ira encontrar muitos projetos neste site .
http://microcontrolandos.blogspot.com.br/search/label/Projetos
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por