Mais uma duvida ae pessoal:

alguem ja usou aqueles controles remotos semelhate o que ha para vender aki no LBG. Como monta a entrada de dados no programa?????

 

Exibições: 1660

Respostas a este tópico

]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

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço