elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Temas
Páginas: [1]
1  Informática / Electrónica / Realizar contador en un período de tiempo. PIC16F886 en C en: 26 Mayo 2011, 20:17 pm
Hola a todos y bienvenidos!

Hace mucho que no entro en este foro debido a cuestiones de tiempo. Me surje una duda y me gustaría que alguien me ayudara lo más rápido posible. El tema es el siguiente:

Estoy haciendo un proyecto con un pic16f886 en C, lo que deseo hacer son unos impulsos a través de un interruptor y que en el primer impulso empiece a contar (con un máximo de 4) y además se active el temporizador. Este contador estará limitado por un temporizador, que también será de no más de 4 segundos. La duda que me surje es ¿cómo puedo hacer esto? Os adjunto el código que llevo hecho:

Código:
#include <16F886.h>
//#include <16F876A.h>
#use delay(clock=4000000)
#use fast_io(C)
#use fast_io(B)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,errors)//Errors posa el error a RS232_ERRORS i els reestableix(reset) que es el que ens interesa.
//En Hexa si val 90H crec que vol dir que no hi ha error. Si acava en 2 crec que hem omplert massa el buffer
//El tema es que el buffer de recepció es de 2 bytes, si n'arriven 3 avans de llegir, peta a no ser que posem 'errors'
//Els altres es perden.
//#use fast_io(C)
//#use fast_io(B)
#byte port_a = 5
#byte port_b = 6
#byte port_c = 7

char  dadas;

/*#INT_RDA                //rutina de interrupcio al rebre dades, no la usem
void rda_int()
{
 dadas=getchar();
 printf("interrupcio %C \n\r",dadas);
}*/


/*void parpadeo (int a);  //això no ho usem a l'exemple
void envchar(char a);*/

void main ()
{
   setup_oscillator(OSC_4MHZ,OSC_STATE_STABLE); // Configurem el quartz intern a 4MHZ i estabilizat per al 16F886
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_spi(SPI_SS_DISABLED);
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);//depres el trec
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
 //enable_interrupts(INT_RDA);  //HABILITAR INTERRUPCIO AL REBRE DADES
 //enable_interrupts(GLOBAL);  //habilita totes les interrupcions

int canvi;
int cont;
int tiempo;

set_tris_a(0b00001111); //Port A. RA0 a RA3 com entrades, la resta són sortides
set_tris_c(0b11001110); //Port C. RC2, RC3, RC6 com entrades, la resta són sortides
while (1)
{
cont = 0;
if(input(PIN_A0))
bit_set (port_a, 4); //s'encen el led del pin_A4 quan pin_A0 estigui pulsat
else
bit_clear(port_a,4); //neteja el led quan es deixa de pulsar

if(input(PIN_A2))
bit_set (port_a, 5); //s'encen el led del pin_A5 quan pin_A2 estigui pulsat
else
bit_clear(port_a, 5); //neteja el led quan es deixa de pulsar
//-------------------------------------------------------------

do{
if (input(PIN_A0)) // si pin_A0 està pulsat
    {
        delay_ms(10); // delay antirebot
        if (input(PIN_A0)) // si encara segueix a 1, no ha sigut un rebote.
    {
if(cont == 0)
{
set_timer0 (0);
cont++;
while (input(PIN_A0))
{
delay_ms(200); // cicle tancat fins que no es deixi pin_A0
contarTimer(tiempo);
}
}
else
{
cont++;
        while (input(PIN_A0))
{
delay_ms(200); // cicle tancat fins que no es deixi pin_A0
contarTimer(tiempo);
}
}
    }
if (cont >= 4) //si contador es 4 o més
cont = 4; //entendrem que vol sortir del programa
    }
}while (tiempo < 61);
//s'ha d'enviar cont al port serie
printf ("%d", cont);

//-------------------------------------------------------------
switch (cont)
{
case 1:
output_bit(PIN_C2,1);  //dos intermitencies de 0.5 segon
      delay_ms(250); //
output_bit(PIN_C2,0);  //dos intermitencies de 0.5 segon
      delay_ms(250); //
case 2:
output_bit(PIN_C2,1);  //dos intermitencies de 0.5 segon
      delay_ms(250); //
output_bit(PIN_C2,0);  //dos intermitencies de 0.5 segon
      delay_ms(250); //
output_bit(PIN_C2,1);  //dos intermitencies de 0.5 segon
      delay_ms(250); //
output_bit(PIN_C2,0);  //dos intermitencies de 0.5 segon
      delay_ms(250); //
case 3:
output_bit(PIN_C2,1);  //dos intermitencies de 0.5 segon
      delay_ms(250); //
output_bit(PIN_C2,0);  //dos intermitencies de 0.5 segon
      delay_ms(250); //
output_bit(PIN_C2,1);  //dos intermitencies de 0.5 segon
      delay_ms(250); //
output_bit(PIN_C2,0);  //dos intermitencies de 0.5 segon
      delay_ms(250); //
output_bit(PIN_C2,1);  //dos intermitencies de 0.5 segon
      delay_ms(250); //
output_bit(PIN_C2,0);  //dos intermitencies de 0.5 segon
      delay_ms(250); //
case 4:
output_bit(PIN_C2,1);  //dos intermitencies de 0.5 segon
      delay_ms(250); //
output_bit(PIN_C2,0);  //dos intermitencies de 0.5 segon
      delay_ms(250); //
output_bit(PIN_C2,1);  //dos intermitencies de 0.5 segon
      delay_ms(250); //
output_bit(PIN_C2,0);  //dos intermitencies de 0.5 segon
      delay_ms(250); //
output_bit(PIN_C2,1);  //dos intermitencies de 0.5 segon
      delay_ms(250); //
output_bit(PIN_C2,0);  //dos intermitencies de 0.5 segon
      delay_ms(250); //
output_bit(PIN_C2,1);  //dos intermitencies de 0.5 segon
      delay_ms(250); //
output_bit(PIN_C2,0);  //dos intermitencies de 0.5 segon
      delay_ms(250); //
}
}

int contarTimer (int *tiempo)
{
if (get_timer0() > 200)
{
get_timer0(0);
tiempo++;
}
return tiempo;
}

Lo veis bien, mal... Qué cambiaríais??

Gracias :)
2  Media / Multimedia / [AYUDA] Ralentizar un trozo de un video con VirtualDub. ¿Se puede? en: 14 Junio 2010, 17:41 pm
Bueno, la duda aparece con la necesidad de ralentizar un fragmento de un video. Había pensado si con virtualdub se puede (ya que es un programa ligero y versátil) pero no encuentro la manera de como hacerlo (si es que se puede, claro).

Quiero recalcar que preferiría no usar programas tipo Sony Vegas, Adobe Premiere o Pinnacle Studio para una cosa de este tipo; además, solo quiero ralentizar una parte de un vídeo, no el video entero y que, obviamente, se apliquen esos cambios.

Gracias =)
3  Sistemas Operativos / Windows / Windows 7 en Sony Vaio. Problemas con el recovery en: 6 Marzo 2010, 18:15 pm
Hace dos días me dejaron un Sony Vaio con Windows Vista para formatearlo y ponerle Windows 7.

Al instalar el SO y los drivers va perfecto, el problema radica que cuando lo quiero activar, después de reiniciarlo me aparece el asistente del Recovery una y otra vez.

Como alternativa lo he vuelto a instalar en una particion limpia, le he hecho una copia con el Ghost y la he guardado en otra particion por si me volvia a ocurrir lo nombrado anteriormente y, efectivamente, ha sucedido lo mismo. Con la copia que he hecho, la he querido restaurar, para no volver a hacer otra vez la faena de nuevo, pero no hay manera.

¿Podríais darme alguna idea?  :huh:

PD: el portatil es una Sony Vaio VGN-FE41M. Venía con Windows Vista Home Premium de 32 bits. Le quiero meter Windows 7 Professional 7600 de 32 bits.
4  Informática / Software / Grabar 792 mb en 790 mb [AYUDA!] en: 7 Agosto 2009, 17:56 pm
La cuestión es la siguiente:

Tengo un archivo .iso de un SO que ocupa 792 megas y un CD que en "teoria" es de 800 megas pero que tiene 790 megas libres ¬¬

¿Como podria hacerlo para que pudiera grabar esa imagen de CD?


Aclaración: abstenerse comentarios del tipo de "comprimelo con Winrar", "partelo con Hacha" o demás... porque es una .iso de un SO y quiero hacer una instalación limpia.


Saludos!

PD: como mucho podria eliminar algun archivo de la .iso para rebajar esos pocos megas de más, pero soy partidario de buscar otra alternativa. Es Win Server 2003 R2 Enterprise SP1.
5  Foros Generales / Dudas Generales / Jazler Internet File Updater en: 13 Agosto 2008, 10:22 am
No sé donde ponerlo, por eso lo posteo aquí, en todo caso muevanlo si es necesario  ;)

La pregunta es muy sencilla... como coño configuro esto?  :xD :xD



Es una de las partes del programa Jazler Simplepack 2.3.11, para mostrar via Internet las canciones que se estan emitiendo en ese momento.

Como no tengo ni pájara idea de que valores introducir, solicito ayuda.

Gracias  ;)
6  Foros Generales / Sugerencias y dudas sobre el Foro / Estrellas debajo los nicks en: 30 Julio 2007, 23:51 pm
No quiero ser un niño malagradecido y quisquilloso pero mejor que lo veais con una captura:



¿Al final no se quitaron? Ya me ha ocurrido un par de veces en diferentes posts. Solo me son visibles en segun que casos. Si vuelvo a actualizar no se ven.

Espero que no se enfade el Admin...
7  Media / Juegos y Consolas / Que significan estas magias?? FFVIII - PSX en: 21 Junio 2007, 15:19 pm
Vereis, encontre hace unos dias una foto del FFVIII un tanto raras, se trata de las magias. Se ve claramente que hay una magia llamada apocalipsis (que tiene 255 de ellas) y solo se consigue de la Artemisa, y se ve tambien esta cantidad en las magias Artema, Aura y Triple, y las otras magias, la magia Hermanos (supongo que sera la magia del mismo G.F) despues viene la magia cura total y una mas abajo muro (estas dos magias son del limite de Selphie!)
¿Como las ha conseguido para poder enlazarlas? Es realmente increible :xD, pero todavia hay mas, la tercera imagen, se ve como tiene todo ya a 255 y la vit a 9999, como habra conseguio tener 255 de rapidez y de suerte??

http://img48.imageshack.us/img48/7379/dibujotr1rs0.jpg

http://img478.imageshack.us/img478/8210/1is8be6.jpg

http://img411.imageshack.us/img411/5324/dibujofn4nh4.jpg

He estado informando y se que se hace mediante cartuchos de trucos que lo pones en la Play, pero poco mas he encontrado.

Si alguien sabe como se hace eso emulandolo en el PC que me lo diga.

Saludos!
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines