Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

11/02/2013 #481

Avatar de mendek

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.
11/02/2013 #482
Moderador

Avatar de D@rkbytes

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.
12/02/2013 #483


D@rkbytes dijo: Ver Mensaje
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
12/02/2013 #484
Moderador

Avatar de D@rkbytes

sydjoe dijo: Ver Mensaje
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.
12/02/2013 #485


GRACIAS me sirvio mucho la ayuda! 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.
Archivos Adjuntos
Tipo de Archivo: rar semaforo auditivo.rar (19,1 KB (Kilobytes), 65 visitas)
12/02/2013 #486


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.
13/02/2013 #487
Moderador

Avatar de D@rkbytes

sydjoe dijo: Ver Mensaje
GRACIAS me sirvio mucho la ayuda! 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:
Disable
ESTADOAUDITIVO:
    Context Save             
    INTCON.1 = 0 
    If verdeP = 1 Then
    FreqOut Buzzer,100,1000 
    DelayMS 1000
    FreqOut Buzzer,100,1000
    DelayMS 1000
    FreqOut Buzzer,100,1000
    Buzzer = 0          
    EndIf    
    Resume    
    Context Restore
    Enable
Suerte.
13/02/2013 #488


gracias D@rkbytes! tambien muchas gracias al foro .
19/02/2013 #489


pic16f887 no me funciona mi primer proyecto
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' Use a device with full speed USB capabilities
OSCCON = %01100110 'Se configura reloj interno a 4Mhz
Symbol LED=PORTD.7
INICIO:
High LED
DelayMS 1000
Low LED
DelayMS 1000
GoTo INICIO
19/02/2013 #490
Moderador

Avatar de D@rkbytes

¿Ya estableciste la palabra de configuración ?
De ella dependen varias cosas, y sobre todo el tipo de oscilador que se usará.

Aquí puedes ver algo acerca de lo que te menciono --> Palabra de configuración 16F882 /887
19/02/2013 #491


gracias
voy a darle una leida y dejo saber el avance
20/02/2013 #492


listooooooo
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
20/02/2013 #493


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
20/02/2013 #494


nuevo ejercicio
bueno me encontre otro ejercicio interesante para practicar codigo es este

Device 16F887




Config1 INTRC_OSC_NOCLKOUT,LVP_OFF,FCMEN_ON,IESO_OFF,BOR_O FF,CPD_OFF,CP_OFF,MCLRE_ON,PWRTE_ON,WDT_OFF
Config2 WRT_OFF,BOR21V

OSCCON = 0b1100100;
TRISC=0
PORTC=0
 
 
inicio:
Toggle
PORTC.0 ' cambia de 0 a y de 1 a 0
DelayMS 6000
Toggle
PORTC.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
22/02/2013 #495


Ayuda
pipo12 dijo: Ver Mensaje
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.
22/02/2013 #496
Moderador

Avatar de D@rkbytes

Esto es lo más nuevo desde la página oficial de Proton
23/02/2013 #497


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.
23/02/2013 #498
Moderador

Avatar de D@rkbytes

gustavo01 dijo: Ver Mensaje
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.
23/02/2013 #499


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.
26/02/2013 #500


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.

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.
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.