[Tutorial] y manejo de Proton IDE

Saludos a todos,

Solicito ayuda a los amigos del foro, estudiando un poco el uso del timer0 me he topado con una pequeña dificultad para incrementarlo por el pin tocki, supongo un detalle mínimo para que funcione pero no he podido dar
Saludos DEPREDADORX1
Adjunto un sencillo ejemplo con el 16F877A, para el incremento del TMR0 por el pin RA4 (T0CKI)
Cuando el TMR0 se desborda ocurre la interrupción y es mostrado por LCD y un LED.

Suerte.
 

Adjuntos

  • 16F877A T0CKI.rar
    12.2 KB · Visitas: 192
Última edición:
bien vamos con menejo de lcd con proton plus ide


dejo esquematico , simulacion , codigo fuente y .hex
buenas noches, como estan? hola espero me puedn ayudar, estoy haciendo en programa que me encienda un led durante 5 minutos y que cuando presione un pulsador durante 3 segundos se apague el led, entonces como hago para que el pulsador sepa que lo voy a presionar por tres segundos y luego apague el led?? espero me puedan ayudar. gracias.
 
como hago para que el pulsador sepa que lo voy a presionar por tres segundos y luego apague el led?? espero me puedan ayudar. gracias.
Saludos sydjoe
La respuesta es...
Utilizando la instrucción While.
Intentalo, veras que no tendrás complicación.
Ahora que si algo se te complica, posteas tu código y te ayudo con gusto.

Suerte.
 
Saludos sydjoe
La respuesta es...
Utilizando la instrucción While.
Intentalo, veras que no tendrás complicación.
Ahora que si algo se te complica, posteas tu código y te ayudo con gusto.

Suerte.
hola muchas gracias por responder lo intente con el while asi:

device= 16f877A
xtal 20
trisb=1
trisd=0
all_digital=1
dim x as byte

INICIO:
for x=0 to 5
portd.0=1 , este es el led
delayms 60000
next x
while portb.0=%00000011
portd.0=0 , este es el pulsador
wend
GOTO INICIO

y no me funciono.
 
Última edición:
hola muchas gracias por responder lo intente con el while asi:

device= 16f877A
xtal 20
trisb=1
trisd=0
all_digital=1
dim x as byte

INICIO:
for x=0 to 5
portd.0=1 , este es el led
delayms 60000
next x
while portb.0=%00000011
portd.0=0 , este es el pulsador
wend
GOTO INICIO

y no me funciono.
Checa este código y me avisas que tal te funciona. ;)
 

Adjuntos

  • x Segundos.rar
    9.2 KB · Visitas: 213
Checa este código y me avisas que tal te funciona. ;)

funciona chido!! gracias!!!, estuve cerca xq intente hacer el programa asignando una variable q se incrementra yo la habia puesto asi x=0 y despues x=x+1 y despues hice esto while portb.o=x portd.0=0 wend, pero no funciono jeje... pero muchas gracias, estoy comenzando y me gusta mucho. muchos agradecimientos.... :)
 
Muchas gracias D@rkbytes, efectivamente era lo que buscaba pues no había podido echar a andar por el tocki, voy a analizar el código a ver en que fallaba y espero poder desarrollar algo con esto.

Suerte a todos y, nuevamente, mis sinceros agradecimientos por la ayuda!
 
buenas noches foro, otra ves aquí intentando aprender un poco mas, lo que pasa es que me gustaría aprender a utilizar las interrupciones con un ejemplo un tanto sencillo que haga lo siguiente:

que un led parpadee indefinidamente en el puerto porta.0
y que si presiono un interruptor en el puerto portb.0 después de 500ms encienda un led en el puerto porta.1 durante 1000ms y después se apague.

desde y muchas gracias.
 
Hola mendek,

Aquí te pongo la interrupción por b.0 bien sencilla, modifica los tiempos a tu gusto, analiza los registros intcon y option reg, esos son los principales para la interrupción por b.0 y timer0.

Código:
Device = 16F877A
Xtal = 4

'Declaration for LCD 
       Declare LCD_Type = 0         ;LCD is Alpha
       Declare LCD_DTPin = PORTD.4  ;LCD data line starting port.pin
       Declare LCD_ENPin = PORTD.1  ;LCD EN line
       Declare LCD_RSPin = PORTD.0  ;LCD RS line
       Declare LCD_Interface = 4    ;LCD 4 line interface
       Declare LCD_Lines = 2


 Symbol LED= PORTB.1
 Symbol LED2=PORTB.2
 
 On Interrupt GoTo interrupcion ;  En caso de interrupción ir a subrutina interrupción
 INTCON=%10010000               ; el bit 7 habilita las interrupciones en general
                                ;  El bit 4 habilita la  interrupción B.0
 
 PROG:
  High LED
  DelayMS 200
  Low LED
  DelayMS 200
  GoTo PROG
  
  Disable             ; Desabilita las interrupciones en el handler
  
  interrupcion:              
  High LED2
  DelayMS 2000
  Low LED2
  INTCON=%10010000    ; Habilita la interrupción B.0 (INTCON.1=0)
  Resume              ; Retorna al programa donde ocurrió la interrupción 
  Enable              ; Habilita las interrupciones después del handler
  End
 
¿algunas lecturas que me recomienden para comprender lo que es el INTCON el TMR0?, es que la verdad no entiendo para que se usan y cuales son sus funciones, justamente ese fue el ejemplo que vi pero que no entendí, ese ejemplo viene en un manual que me ha servido de mucho, pero de todas formas gracias DEPREDADORX1

buscando en la ayuda de proton la verdad es que no logro saber como se habilita la interrupción, es decir como hago para que entre en el nivel "interrupción"
 
Última edición:
Bueno, aquí te adjunto alguna lectura que puede ayudarte para ir comprendiendo cada cosa, el intcon es el registro de control para las interrupciones por puerto b.0 y timer0, cada bit tiene su función, el GIEE es como el swiche principal, sino lo activas no puedes habilitar ninguna interrupción; el PEIE, tiene que ver con interrupciones por periféricos, de principio no interesa pues no tiene que ver con b.0 o timer0; el TOIE, es el bit que habilita la interrupción por timer0;el INTE, habilita la interrupción por b.0;RBIE, este bit habilita la interrupción por el puerto B; TOIF, este bit cambia cuando se produce el desborde de timer0;INTF, este bit es la bandera o flag que indica cambio por b.0 cuando está habilitada y finalmente el bit RBIF (bit 0 de intcon), éste indica un cambio el el puerto B cuando se habilita dicha interrupción. Echale una ojeada a la documentación pues tienes que analizar el registro Option reg también.

Suerte!
 

Adjuntos

  • DOCUMENTACIÃ’N.rar
    537.8 KB · Visitas: 192
ya por fin pude hacer funcionar el programa DEPREDADORX1, ahora lo que pasa es que tenia un mal entendido con respecto a las interrupciones y su función, yo pensé que servían para ejecutar algo en segundo plano, es decir, como el ejemplo que mencionaba, de que un led este parpadeando indefinidamente, pase lo que pase ese led debe de estar parpadeando y que si se oprime un botón otro led prenda durante X tiempo y se apague, como si ejecutara algo en segundo plano, ya habia preguntado lo mismo en este foro, pero no me acuerdo donde y me dijeron que con interrupciones se podia lograr pero ya veo que no, alguien sabe como se logra eso, ya leí el !tema completo¡ y no encontré alguien que quisiera lo mismo, nuevamente gracias por la ayuda DEPREDADORX1, lo olvidaba este programa solo lo pude probar con el 16F84A pero con el 16F887 no pude, era el mismo programa solo cambiaba el tipo de pic pero nada, ¿a que se debera?

Código:
Device = 16F877A
Xtal = 4

'Declaration for LCD 
       Declare LCD_Type = 0         ;LCD is Alpha
       Declare LCD_DTPin = PORTD.4  ;LCD data line starting port.pin
       Declare LCD_ENPin = PORTD.1  ;LCD EN line
       Declare LCD_RSPin = PORTD.0  ;LCD RS line
       Declare LCD_Interface = 4    ;LCD 4 line interface
       Declare LCD_Lines = 2


 Symbol LED= PORTB.1
 Symbol LED2=PORTB.2
 
 On Interrupt GoTo interrupcion ;  En caso de interrupción ir a subrutina interrupción
 INTCON=%10010000               ; el bit 7 habilita las interrupciones en general
                                ;  El bit 4 habilita la  interrupción B.0
 
 PROG:
  High LED
  DelayMS 200
  Low LED
  DelayMS 200
  GoTo PROG
  
  Disable             ; Desabilita las interrupciones en el handler
  
  interrupcion:              
  High LED2
  DelayMS 2000
  Low LED2
  INTCON=%10010000    ; Habilita la interrupción B.0 (INTCON.1=0)
  Resume              ; Retorna al programa donde ocurrió la interrupción 
  Enable              ; Habilita las interrupciones después del handler
  End
 
Última edición:
Hola mendek,

Las interrupciones son, valga la redundancia, para interrumpir algo, para nuestro caso dejan la ejecución normal del programa para atender la interrupción inmediatamente. La programación se ejecuta línea a línea, si quieres que realice algo adicional necesitas las interrupciones, en los ejemplos de proton está un ejemplo que combina 2 interrupciones, creo que timer1 y timer3, el caso es que una está habilitada como interrupción prioritaria mientras que la otra como secundaria, me parece que con esto es mucho lo que puede hacerse aunque yo no he llegado hasta allá, soy solo un aficionado y no requiero tanto complique. Sobre el ejemplo, aunque nunca he simulado con ese pic, podría asegurarte que el error debe estar en la configuración de los registros de interrupción, bueno, al menos eso creo yo así sin tener un ejemplo que aplique a ese pic.

Suerte!
 
Buenas tardes.
Lo siento por el idioma, pero yo soy de Grecia.
Si alguien me puede dar un ejemplo con dos temporizador en protonbasic.
Empecé a aprender programación, pero no he encontrado ningún ejemplo que utiliza el temporizador 2.
gracias
 
saludos,
Aquí publico un velocímetro con interrupción por B0 y timer1, el primero para contar los giros de la rueda y el otro para calcular un tiempo determinado para hacer los calculos. Ahora lo que hay que analizar es como mejorar la resolución del velocímetro puesto que con una sola vuelta se va a 75km/h, que os ocurre respecto a esto para alcanzar una resolución exacta de 1k/h?
 

Adjuntos

  • VELOCIMETRO PIC16F877A-DISPLEY 7 SEG (agosto 2012).rar
    49.1 KB · Visitas: 199
Hola a todos, verán e realizado algunos proyectos básicos con Visual basic 6 y Proton pur USB HID, ahora me e descargado el Visual studio 2010, alguien tiene algún ejemplo de como usar el HID en esta versión? de lo contrario alguien sabe como usar la comunicación serie con esta versión? saludos, espero no molestar
 
Hola increible manual me dejo prendiendo leds y todo en poco tiempo, sin siquiera leer mucho.

ahora mismo e descargado el manual y lo leeré tranquilamente.

pero tengo una pregunta ¿es posible programar un pic directamente con proton pero usando el pickit 3 de microchip como interfaz?


otra pregunta ¿son solo 6 pdfs del manual de proton o no ?
 
Última edición:
tengo una pregunta ¿es posible programar un pic directamente con proton pero usando el pickit 3 de microchip como interfaz?
Posiblemente si el PICKit 3 acepta comandos desde el IDE Proton.

Por ejemplo. Yo uso el WinPic800 con estos parámetros.

ProtonIDE WinPic800 Parameters.gif

Puede ser cosa de buscar algún parámetro para que funcione con el PICKit 3.
otra pregunta ¿son solo 6 pdfs del manual de proton o no ?
Eso no lo sé, yo suelo usar siempre la ayuda que el mismo Proton tiene.

Saludos.
 
Atrás
Arriba