[Tutorial] y manejo de proton IDE

En cuanto a la primer pregunta, a como yo lo entiendo, simplemente manda dicho puerto al estado que quieras y después compruébalo con un if. La segunda me la respondió D@rkbytes con anterioridad, puedes leer unas páginas atrás.
 
Usa una variable...
Dim Var_PortX As Byte

Luego la cargas con el estado del puerto...
Var_PortX = PORTX

Para saber si un botón fue pulsado mientras corre el programa principal, puedes hacer uso de las interrupciones.

Suerte.
 
Usa una variable...
Dim Var_PortX As Byte

Luego la cargas con el estado del puerto...
Var_PortX = PORTX

Para saber si un botón fue pulsado mientras corre el programa principal, puedes hacer uso de las interrupciones.

Suerte.
gracias, eso es exactamente lo que estoy buscando, pero no se como usar las interrupciones. se usa asi:
led=1
on interrupt
boton==1
resumen
led=1.

jeje espero ir por buen camino. :). de ante mano gracias
 
gracias, eso es exactamente lo que estoy buscando, pero no se como usar las interrupciones. se usa asi:
led=1
on interrupt
boton==1
resumen
led=1.

jeje espero ir por buen camino. :). de ante mano gracias
Algo así, :) para más botones (4 P.E) puedes usar la interrupción por cambio de estado en RB4<>RB7
Si solo requieres detectar el estado de un botón puedes usar la interrupción por RB0.
Código:
On_Hardware_Interrupt GoTo MyInt
INTCON = %11010000          ; Configurar la Interrupción solo por RB0
OPTION_REG.6 = 0            ; Activar la interrupción por flanco de bajada en RB0

MainProgram:
; Aquí tu código principal (Esto es un ejemplo)
    PORTA.0 = 1
    DelayMS 100
    PORTA.0 = 0
    DelayMS 100
    GoTo MainProgram

; Esta parte es el controlador de la interrupción.
Int_Sub_Start 
; Aquí se llega al ejecutarse la interrupción.
MyInt:
    Context Save              ; Guardar el contexto de los registros.
    INTCON.1 = 0            ; Limpiar la bandera de interrupción por RB0
; Aquí el código que se ejecutara durante la interrupción del programa principal.
    PORTA.1 = 1
    DelayMS 1000
    PORTA.1 = 0
    Context Restore          ; Restaurar el contexto de los registros.
    End
Suerte.
 
GRACIAS me sirvio mucho la ayuda! :D ahora el incoveniente es que si dentro de la interrupcion utilizo un while o if, se detiene completamente la secuencia del programa, te paso el programa para que lo veas con tus propios ojos, jeje. ah bueno y la finalidad o la idea de lo que quiero hacer es que el semaforo tenga un control remoto IR con el cual yo encienda el sonido dependiendo del color en el cual se encuentre, mas que todo con el estado verde y rojo peatonal.
 

Adjuntos

Hola, necesito ayuda con la programación en Proton, necesito controlar la velocidad de un motor cc con dos pulsadores, uno para que incremente y el otro para que disminuya. Todo lo tengo armado con un PIC 16F877A. Utilizando el ejemplo de Proton funciona pero como yo necesito que los incrementos sean al pulsar, no me responde, queda siempre a la misma velocidad.

Este es mi programa:

Código:
Device = 16F877A           
Declare Xtal = 4      

Dim Duty As Byte
Duty = 128
Symbol PIN = PORTC.6     'IN1 L293D

TRISA =%11111111
TRISC =%00000000


PROG1:
    High PORTC.5          'Enable L293D
    If PORTA.0 = 0 Then Duty = Duty + 32  'Aumenta la Vel.
    If PORTA.1 = 0 Then Duty = Duty - 32  'Disminuye la Vel.
    DelayMS 5
    PWM PIN,Duty,20 
GoTo PROG1
Si me pudiesen dar una solución.

Muchas Gracias.
 
GRACIAS me sirvio mucho la ayuda! :D ahora el incoveniente es que si dentro de la interrupcion utilizo un while o if, se detiene completamente la secuencia del programa, te paso el programa para que lo veas con tus propios ojos, jeje. ah bueno y la finalidad o la idea de lo que quiero hacer es que el semaforo tenga un control remoto IR con el cual yo encienda el sonido dependiendo del color en el cual se encuentre, mas que todo con el estado verde y rojo peatonal.
OK.

Prueba así...
Código:
[B]Disable[/B]
ESTADOAUDITIVO:
    [B]Context Save[/B]             
    [COLOR=SeaGreen]INTCON[/COLOR].1 = 0 
    [B]If[/B] verdeP = 1 [B]Then[/B]
    [B]FreqOut[/B] Buzzer,100,1000 
    [B]DelayMS[/B] 1000
    [B]FreqOut[/B] Buzzer,100,1000
    [B]DelayMS[/B] 1000
    [B]FreqOut[/B] Buzzer,100,1000
    Buzzer = 0          
[B]    EndIf    
    Resume    
    Context Restore
    Enable[/B]
Suerte.
 
Última edición:
que tal amigos espero me pudan echar un soplidito ajajja lo que pasa es que me decidi empezar a jugar con los pics tengo el 16f887 y me encontre un tutorial para el proton ide hasta ahi todo bien pero el ejemplo que bien para novatos de prender y apagar un led lo paso por proteus y funcina sin problemas pero lo monto en mi proto le pongo un regulador de 5 volts 7805 y no funciona primero no encendia nada ni el led nadams el led piloto que puse para saber si tiene voltaje me puse a leer resulta que tenia que ponerle la instruccion para trabajar con osilador interno ok ya prendio el led pero no se apaga como en la simulacion, se queda prendido y si toco algun componente se apaga y se queda apagado si toco la tierra del transistor regulador se apaga el led si toco alguna terminal del chip se apaga el led si mando a tierra el pin 1 del chip se apaga el led le pongo aqui el codigo que creo esta de mas por que es algo que ya pusieron por todo el foro pero igual lo pongo espero que alguin vea este post y me puda echar la mano por adelantado les agradesco la ayuda que pudan brindar que algun sere reciproco con lo que aprenda


cabe decir que el portd.7 es la terminal 30 del 887


Device = 16F887[/SIZE] ' Use a device with full speed USB capabilities
[/size]
OSCCON = %01100110 'Se configura reloj interno a 4Mhz
[/size]
Symbol LED=PORTD.7
INICIO:
High LED
DelayMS 1000
Low LED
DelayMS 1000
GoTo INICIO
 
gracias a todos por su ayuda ya me funciono al moderador que me oriento tambien gracias si me faltaban los fuses ahora voy con otro poryectode los que e visto aqui en el foro para practicar
 
Saludos a todos, alguien podría poner algún ejemplo de como usar un registro de desplazamiento, encender 8 led por ejemplo, o algo básico para basarme para hacer un código que tengo en mente, lamentablemente nunca los e usado pero tengo en mis manos un 74ls164, espero me puedan brindar su ayuda, encuentro ejemplos en C y soy muy malo en eso
 
bueno me encontre otro ejercicio interesante para practicar codigo es este

Device 16F887[/SIZE]




[/size]
Config1 INTRC_OSC_NOCLKOUT,LVP_OFF,FCMEN_ON,IESO_OFF,BOR_OFF,CPD_OFF,CP_OFF,MCLRE_ON,PWRTE_ON,WDT_OFF
Config2 WRT_OFF,BOR21V

OSCCON = 0b1100100;
[/size]
TRISC=0
PORTC=0
 
 
inicio:
Toggle PORTC[/SIZE].0 ' cambia de 0 a y de 1 a 0
DelayMS 6000
Toggle PORTC[/SIZE].1
DelayMS 6000
Toggle PORTC.2
DelayMS 6000
GoTo inicio

con este codigo se supone que deben de prender los leds uno por uno quedarce encendidos y apagarce cuando el codigo le invierte el estado con el comando toggle porque el toggle lei es para invertir el estado del puerto
si es 0-1 si es 1-0
bueno resulta que contodos los ports funciona como debe de ser se quedan encendidos los leds hasta que el codigo les dice que se apaguen otra ves menos con el portc con cualquiera de las salidas del port c el led prende y apaga no se queda encendido si algun guro me pudiera echar la mano quiero aprender y pues hasta aqui llegue no se si ay quedarle alguna instruccion extra al pic
 
hola que tal amigos les cuento que llevo mas de 1 año trabajando con proton IDE y es de lo mejor en la actualidad trabajo con Glcd samsung y toshiba y han respondido muy bien, hay un par de cosas q aun no he logrado con ellas pero estoy seguro que mas adelante lo lograre que rico encontrar este foro y sobretodo encontrar gente de Colombia, bueno amigos en unos días voy ha postear unos ejemplitos para el manejo de las Glcds felices Pascuas.....
Cordial saludo para todos en este foro estoy dando mis primeros pasos con los micro y proton me parece muy bueno, ahora tengo un problema y es que cuando mi pc tenia xp el compilador funcionaba muy bien ahora que tengo la nueva versión de windwos no me compila el programa quisiera saber si ud cuenta con una nueva versión actualizada de este editor que me funcione ahora muchas gracias.
 
Última edición por un moderador:
Saludo muchas gracias por su pronta respuesta , ya descargue el programa lo instale pero no me compila he visto algunos tutoriales en la red donde dice que ha que configurar con un compilador pero no me funciona , muy seguramente sabes de lo que estoy hablando porque parece que es un paso para que funcione , si me puedes ayudar me seria de mucha utilidad.espero atento.
 
Saludo muchas gracias por su pronta respuesta , ya descargue el programa lo instale pero no me compila he visto algunos tutoriales en la red donde dice que ha que configurar con un compilador pero no me funciona , muy seguramente sabes de lo que estoy hablando porque parece que es un paso para que funcione , si me puedes ayudar me seria de mucha utilidad.espero atento.
Tienes que tener instalado MPLAB®, lo puedes descargar desde aquí --> Microchip MPLAB IDE
Te vas hasta abajo de la pagina, en la sección Downloads y descargas MPLAB IDE
Que para ésta fecha es la versión 8.89 y pesa más de 100Mb. (111Mb Aprox.)
Por ahora el compilador que tienes que seleccionar, se encuentra en la carpeta PDS
Esa carpeta está donde instalaste Proton IDE. Por default en C:\Archivos de programa\ProtonIDE\PDS
Eso lo haces en el menú View --> Compile and Program Options...
Puedes seleccionar Find Automatically... ó Find Manually... Te recomiendo que utilices Find Automatically...
Con eso hecho, ya debes poder compilar tus programas.

Suerte.
 
Bueno muchas gracias por el tiempo y el interes con el cual me haz ayudado, le comento que ya tenia instalado el Mplab version 8.85, lo que no se es si hay que hacer algun procediemiento para que trabajen juntos o algo asi, por otro lado realice el procedieminto tal cual me lo explico pero nada sigue sin funcionar siempre q intento compilar me sale en la parte de abajo un mensaje que dice: "ERROR:missing security key" e intenta compilar sale una linea roja muy rapido y no sale nada mas , creo que seguire con el editor que tenia antes pues es una version portable de pbp me tocara instalar xp de nuevo.
 
Buenos días a todos, hola chicos ya estoy practicando con lcd y display 7 segmentos, con lcd me fue super bien, pero cuando estuve practicando con el display no me funciono inclusive me dio un mensaje, aquí les dejo las imágenes correspondientes a cada prueba.
en la imagen la simulación 1 lo probé así:
Código:
device= 16f877a
Config XT_OSC,CP_OFF,CPD_OFF,WDT_OFF,PWRTE_ON,BODEN_OFF,LVP_OFF
xtal 20
Dim VEC As Byte
DIM NUM AS BYTE
ALL_DIGITAL= TRUE
portb_pullups=false 
trisc =%00000000
'PORTC=%11111111
VEC=0
num=0  
INICIO:
PORTC=%11111111
for vec=0 to 9
lookupl vec,[191,134,219,207,230,237,253,135,255,239], ' o [0,1,2,3,4,5,6,7,8]
portc=num
delayms 1000
next vec
goto inicio

y la segunda simulacion asi:
device= 16f877a
Config XT_OSC,CP_OFF,CPD_OFF,WDT_OFF,PWRTE_ON,BODEN_OFF,LVP_OFF
xtal 20
Dim VEC As Byte
DIM NUM AS BYTE
ALL_DIGITAL= TRUE
portb_pullups=false 
trisc =%00000000
'PORTC=%11111111
VEC=0
num=0  
INICIO:
for vec=0 to 9
lookupl vec,[191,134,219,207,230,237,253,135,255,239], ' o [0,1,2,3,4,5,6,7,8]
portc=num
delayms 1000
next vec
goto inicio
solo me ha funcionado con un ejemplo de select case pero solo he podido que cuente hasta 6 y yo quiero que cuente hasta 6 después hasta 3 y luego otra vez 6 en bucle. espero me ayuden gracias amigos. :D

edito: según es un problema con la ubicación y escritura en la memoria del pic,
pero ¿por qué con el ejemplo del select case no sucede eso?. ji. gracias.
 

Adjuntos

Última edición por un moderador: