[Tutorial] y manejo de Proton IDE

Hola necesito ayuda para programar un teclado hexadecimal pero lo quiero manejar con el puerto b y las dos primeras del puerto b ya que la profesora quiere que le coloque un display 7 segmento en el puerto C del pic, y en el puerto D conectar 4 leds en los bits menos significativos. apenas me inicializo en esto es apenas mi primera practica lo veo muy complejo, ya que es apenas la primera practica y ni eh visto clase teorica estado leyendo tutorial de proton y proteus, El micro q uso es el PIC 16f877 y lo estoy programando en lenguaje basic. quientenga algo parecido o por lo menos ideas del teclado 4x4, por favor necesito ayuda de como lograrlo

Espero q me ayuden, desde ya gracias


Mira en este mismo foro esta la respuesta para esta inquietud, mecarodatos subio un PDF muy util.:

https://www.forosdeelectronica.com/f24/tutorial-manejo-proton-ide-27932/index2.html

mas sin embargo te adjunto el PDF aqui que el subio, para manejar teclados hexadecimal usando Proton ide...

suerte....
 

Adjuntos

  • Tutorial Proton Part 6.pdf
    152.8 KB · Visitas: 432
disculpen la pregunta usar el select case en proton es lo mismo para usar en pic basic o tiene diferente metodo de aplicacion
 
Hola Atricio,

Pues este ejemplo está en la ayuda, parece igual que en pic basic.

Código:
 Dim VAR1 As Byte
 Dim RESULT As Byte

 DelayMS 300             ' Wait for PICmicro to stabilise
 Cls                     ' Clear the LCD

 RESULT = 0              ' Clear the result variable before we start
 VAR1 = 1                ' Variable to base the conditions upon
 
 Select VAR1

  Case 1                 ' Is VAR1 equal to 1 ?
   RESULT = 1            ' Load RESULT with 1 if yes

  Case 2                 ' Is VAR1 equal to 2 ?
   RESULT = 2            ' Load RESULT with 2 if yes

  Case 3                 ' Is VAR1 equal to 3 ?
   RESULT = 3            ' Load RESULT with 3 if yes

  Case Else              ' Otherwise...
   RESULT = 255          ' Load RESULT with 255

 EndSelect

 Print Dec RESULT        ' Display the result
 Stop
 
lo que quiero es ver si puedo comparar el binario que me daria un puerto y irle dando los case para elborar unas pequenas rutinas para una banda transportadora por ejemplo si el puerto b me da 6 en binario me de el case 6 y mandar a hacer tareas al micro es posible esto desde proton he mirado un ejemplo muy parecido en picbasic pero no me corre y queria realizarlo mejor en proton
 
Hola de nuevo amigos una pregunta estoy haciendo un seguidor de linea por el momento realize un codigo simple para probar toda la estructura que he planeado hacer casi un seguidor basico pero realizo pruebas despues de unas cuantas pruebas es como que el micro ya no siguiera la programacion se queda sin hacer nada que puede ser ojala me puedan hechar una mano les adjunto el codigo para ver si va el problema por el software y si es por el hadware ojala me pudieran dar algunos consejos para que no me pase esto

Código:
Device 16F873
XTAL 4

TRISB=%00000000
TRISC=%00011111

Symbol CN1=PORTC.0
Symbol CN2=PORTC.1
Symbol CN3=PORTC.2
Symbol CN4=PORTC.3
Symbol CN5=PORTC.4

Symbol SAL1=PORTB.0
Symbol SAL2=PORTB.1
Symbol SAL3=PORTB.2
Symbol SAL4=PORTB.3

PORTC=0
PORTB=0

' CERO  =>  VE BLANCO
' UNO =>  VE LA LINEA

INICIO:
'==================================================================================================================================
'COMPARACIONES PARA LOS SENSORES:
'==================================================================================================================================
If CN1=1 And CN2=1 Then 
'And CN3=1 And CN4=0 And CN5=0 Then

GoTo ADELANTE

End If

If CN1=0 And CN2=1 Then 
'And CN3=1 And CN4=1 And CN5=1 Then

GoTo DERECHA

End If

If CN1=1 And CN2=0 Then 
'And CN3=0 And CN4=1 And CN5=1 Then

GoTo IZQUIERDA

End If

If CN1=0 And CN2=0 Then 
'And CN3=1 And CN4=1 And CN5=1 Then

GoTo ATRAS

End If

'==================================================================================================================================
'MOTOR DERECHA  : SAL1 ; SAL2
'MOTOR IZQUIERDA: SAL3 ; SAL4
'==================================================================================================================================

'==================================================================================================================================
'RUTINAS PARA LOS MOTORES
'==================================================================================================================================
ADELANTE:

SAL1=1 : SAL2=0: SAL3=1 : SAL4=0

GoTo INICIO

ATRAS:

SAL1=0 : SAL2=1: SAL3=0 : SAL4=1

GoTo INICIO

IZQUIERDA:

SAL1=1 : SAL2=0: SAL3=1 : SAL4=1 

GoTo INICIO

DERECHA:

SAL1=1 : SAL2=1: SAL3=1 : SAL4=0 

GoTo INICIO

'==================================================================================================================================
End
'==================================================================================================================================
 
Hola atricio,

Pues lástima que no halla un experto por aquí para echarnos una mano con las dudas, por cierto, cómo te fue con la comparación de bits?

Sobre el seguidor de líneas te pregunto, no tienes simulación?. Pues yo veo que corre bien, lo único que puedo decirte es que yo evito poner los retornos a inicio tanto como pueda, casi siempre me arrojan un error de sobreflujo de no se qué, por eso uso return, bueno, tendrías que probar a ver si anda. También parece que funciona asi, tendrías que probar a ver si anda:

Código:
INICIO:
'==================================================================================================================================
'COMPARACIONES PARA LOS SENSORES:
'==================================================================================================================================
If CN1=1 And CN2=1 Then GoSub  ADELANTE
If CN1=0 And CN2=1 Then GoSub  DERECHA
If CN1=1 And CN2=0 Then GoSub IZQUIERDA
If CN1=0 And CN2=0 Then GoSub ATRAS
 GoTo INICIO
'==================================================================================================================================
'MOTOR DERECHA  : SAL1 ; SAL2
'MOTOR IZQUIERDA: SAL3 ; SAL4
'==================================================================================================================================
'==================================================================================================================================
'RUTINAS PARA LOS MOTORES
'==================================================================================================================================
ADELANTE:
SAL1=1 : SAL2=0: SAL3=1 : SAL4=0
Return

ATRAS:
SAL1=0 : SAL2=1: SAL3=0 : SAL4=1
Return

IZQUIERDA:
SAL1=1 : SAL2=0: SAL3=1 : SAL4=1 
Return

DERECHA:
SAL1=1 : SAL2=1: SAL3=1 : SAL4=0 
Return

'==================================================================================================================================
End
'=========
 
Última edición:
cordial saludo amigos para responder la pregunta del amigo atricio dos ejemplo aplicativos con sus respectivos códigos y simulación en proteus

Ejemplo1:

Device=16F628A
Dim BUTON As PORTA.0 ' Asignar pulsador a PORTA.0.
Dim contar As Byte 'crear variable de dato para el select case
Dim SEG7 As PORTB 'DISPLAY de 7 segmentos en PORTB
PORTB_PULLUPS=1 'habilitacion de resistencias pull
TRISA=%00000001 'PORTA. 1 como entrada
TRISB=%00000000 'PORTB como salida
CMCON=$07 'PORTA configuracion digital
contar=0 'establecer variable de selec case a 0
inicio:
If BUTON=1 Then 'BUTON a sido accionado
presionar:
If BUTON=1 Then GoTo presionar 'pregunta si ha sido presionado consecutivamente
contar=contar+1 'cuando se acciona boton incrementar variable contar en 1
EndIf

Select contar
Case 1
SEG7=%11111001 '1 en el display
Case 2
SEG7=%10100100 '2 en el display
Case 3
SEG7=%10110000 '3 en el display
Case 4
SEG7=%10011001 '4 en el display
Case 5
SEG7=%10010010 '5 en el display
Case 6
SEG7=%10000010 '6 en el displayr
Case 7
SEG7=%11111000 '7 en el display
Case 8
SEG7=%10000000 '8 en el display
Case 9
SEG7=%10010000 '9 en el display
Case 10
SEG7=%10001000 'a en el display
Case 11
SEG7=%10000011 'b en el display
Case 12
SEG7=%11000110 'c en el display
Case 13
SEG7=%10100001 'd en el display
Case 14
SEG7=%10000110 'e en el display
Case 15
SEG7=%10001110 'f en el display
Case Else
SEG7=%11000000 '0 en la pantalla
contar=0 'restablecer variable a 0
EndSelect
GoTo inicio
End

Ejemplo 2:

Device = 16F628A
CMCON=7 'PORTA'como digital
Dim BUTON As PORTA.0 'boton en Porta.0
Dim contador As Byte 'variable para el select case
contador =0 'establecer variable a cero
TRISA=%00000001 'PORTA.0 como entrada
TRISB=%00000000 'PORTB como salida
' definicion para control del LCD
Declare LCD_DTPIN PORTB.4
Declare LCD_ENPIN PORTB.0
Declare LCD_RSPIN PORTB.1
Declare LCD_INTERFACE 4
Declare LCD_LINES 2
Cls ' 30 ms

Print At 1,1, "SELECT CASE" 'MENSAJE DE BIENVENIDA

inicio:
If BUTON=1 Then
BUTONTEST:
If BUTON=1 Then GoTo BUTONTEST
contador=contador+1 'INCREMENTAR VARIABLE EN 1
EndIf

Select contador
Case 1
Print At 2,1, " UTILIZACION "
Case 2
Print At 2,1, " DEL SELECT CASE "
Case 3
Print At 2,1, " CON PROTON IDE "
Case 4
Print At 2,1, "EJEMPLO PROTEUS"
Case 5
Print At 2,1, " CON PULSADOR"
Case 6
Print At 2,1, " VISUALIZANDO "
Case 7
Print At 2,1, " MENSAJES EN LCD "
Case 8
Print At 2,1, " PARA FOROS DE "
Case Else
Print At 2,1, " ELECTRONICA "
contador=0 'resatablecer variable
EndSelect
GoTo inicio
End

perdonaran no responder a sus inquietudes antes pero he estado muy ocupado
 

Adjuntos

  • proton.rar
    53.4 KB · Visitas: 416
muchas gracias ire a interntar un par de cosas y les comentare como me fue intente con el select case la verdad no me funciono nada aparentemente no entiende las variaciones que quiero realizar muchas gracias mecatrodatos una gran ayuda y muy bien explicado espero armar lo requerido y postear mis resultados
 
para el amigo dabopeyton que expuso algunas dudas en el curo de pic basic de comandos referentes a Proton dejo manual del mismo:

http://www.compile-it.com/protonds/proton_ds_userguide.pdf

y de doy explicación de algunos lo demás es mirar el manual.

HPWM

HPWM es un tren de pulsos que un usuario puede especificar su frecuencia y ciclo de trabajo. El ciclo de trabajo es el porcentaje de tiempo que el pulso se mantiene alta en comparación con el tiempo que se mantiene baja. Así, un ciclo de trabajo de 50% significa que se mantiene alta para el 50% del tiempo, y baja el 50% del tiempo. Un ciclo de trabajo del 25% significa que el pulso es alto el 25% del tiempo, y baja el 75% del tiempo.

50% ciclo de trabajo (frecuencia = 2kHz);

25% ciclo de trabajo (frecuencia = 2kHz);

No importa cuál sea la frecuencia, el ciclo de trabajo será el mismo, sólo que los pulsos serán más aplastados .Hay límites en la frecuencia del PWM, que son:

Frecuencia Xtal - frecuencia PWM más bajo utilizable

• 4 MHz - 244Hz
• 8MHz - 489Hz
• 10MHz - 611Hz
• 12MHz - 733Hz
• 16MHz - 977Hz
• 20MHz - 1221Hz
• 24MHz - 1465Hz
• 33MHz - 2015Hz
• 40MHz - 2442Hz


Y con todas las velocidades Xtal, el más rápido de frecuencia posible es 32767Hz. Así que hay limitaciones con el PWM en lo que respecta a la frecuencia que puede producir. Cuanto más rápida sea la frecuencia, la mejor para esta aplicación, ya que aumenta la respuesta de las salidas.

El ciclo de trabajo es un valor entre 0 y 255, donde 0 es 0% y 255 es de 100%, es decir, un ciclo de trabajo de 63 en realidad significa el 25% como 63/255 = 0,25 (25%).

El comando de PBP y Proton es:

HPWM Canal, Dutycycle, Frecuencia


SERVO Comando de Proton:

También conocido como sistemas de retroalimentación cerrada, los motores servo vienen con un circuito de control, que detecta si hay un mecanismo del motor en la ubicación deseada y si no se corrige un error de forma continua hasta que el motor alcance el punto adecuado. Servo por lo general vienen en pequeños envases de plástico como el siguiente, pero ten en cuenta que hay todo un sistema en el interior; circuito del motor en sí, engranajes y motor de accionamiento y control.

Servo es por lo general tienen gran esfuerzo de torsión debido a su engranaje. La velocidad del motor disminuye, pero aumenta su par, lo que les permite manejar grandes cargas. El bucle de realimentación cerrado mencionado anteriormente es en realidad un potenciómetro interno que está conectado a un eje mecánico para detectar el ángulo de giro. La señal del potenciómetro proporciona datos para el circuito de control para asegurar que el motor se encuentra en el ángulo deseado.

La mayoría de los servos están diseñados para funcionar dentro de un rango limitado, por ejemplo, 90 ° o ° 180, pero puede ser modificado para rotación continua. Este control exacto de la rotación y el par gracias al engranaje hace que el servo sea un gran dispositivo para incluir en cualquier proyecto de tipo mecánico-robóticas. La mayoría de servo operar desde 4,8 a 7,2 V DC.


El eje del motor servo se coloca con señales de ancho de pulso modulado (PWM). Así que todos los servos vienen con tres cables (alimentación, tierra y Control). Por lo general, en los servos de afición con ángulo de 90 ° de rotación, la señal anchura varía entre 1 y 2 ms. Si el pulso es la rotación más amplia continúa hasta que alcanza los límites mecánicos. Esta señal se aplica a la línea de control del servo. Consulte la hoja de datos para obtener más información del motor que baja ha seleccionar.

Para el ejemplo vamos a utilizar un servo que tiene una rotación máxima de 180 ° y opera con una señal de control de 1ms a 2ms.

Con esto en mente, una señal con un pulso de 1,5 ms alta llevara al servo a mitad de camino, o una señal en 2mS hará ir al servo a 100% la desviación. Esta señal debe ser enviada al servo a (50 Hz), permitiendo al programa realizar muchas otras funciones.

En el comando de Proton servo se limita a a lo que se menciono anteriormente. Mediante su uso podemos hacer que el servo baja a cualquier posición, y que se quede allí. Algunos servos tienen diferentes requisitos de pulso para diferentes ángulos, pero Los Servos más comunes operarán desde 1ms a 2ms.

Una vez que el servo está en la posición, el potenciómetro de retroalimentación al circuito de control interno de los servos se asegurará de que el servo no se deriva de la posición deseada, (siempre que se actualizan con la posición cada 50 ó 20 ms), si hay demasiado tiempo entre las señales de control, el servo se deriva. Consulte la hoja de datos de su servo.

Ejemplo:

Código:
Device = 18F4550
XTAL = 4
 
Dim Servo_Position As Word
 
LCD_DTPIN = PORTB.4
LCD_RSPIN = PORTB.2
LCD_ENPIN = PORTB.3
LCD_INTERFACE = 4
LCD_LINES = 2
LCD_TYPE = 0
 
ALL_DIGITAL = True
 
DelayMS 150
Cls
 
Servo_Position = 1500
 
inicio:
 
 Repeat 
 Servo PORTA.0, Servo_Position 
 DelayMS 20 
 Inc Servo_Position 
 Print At 1, 1, "Servo = ", DEC4 Servo_Position 
 Until Servo_Position = 2000
 
 Repeat 
 Servo PORTA.0, Servo_Position 
 DelayMS 20 
 Dec Servo_Position 
 Print At 1, 1, "Servo = ", DEC4 Servo_Position 
 Until Servo_Position = 1000 
 
 GoTo inicio
 
Última edición por un moderador:
buenas noches señores parece que resolvi la duda que tenia con respecto a este programa

Código:
Device 16F873
XTAL 4

TRISB=%00000000
TRISC=%00011111

Symbol CN1=PORTC.0
Symbol CN2=PORTC.1
Symbol CN3=PORTC.2
Symbol CN4=PORTC.3
Symbol CN5=PORTC.4

Symbol SAL1=PORTB.0
Symbol SAL2=PORTB.1
Symbol SAL3=PORTB.2
Symbol SAL4=PORTB.3

PORTC=0
PORTB=0

' CERO  =>  VE BLANCO
' UNO =>  VE LA LINEA

INICIO:
'==================================================================================================================================
'COMPARACIONES PARA LOS SENSORES:
'==================================================================================================================================
If CN1=1 And CN2=1 Then 
'And CN3=1 And CN4=0 And CN5=0 Then

GoTo ADELANTE

End If

If CN1=0 And CN2=1 Then 
'And CN3=1 And CN4=1 And CN5=1 Then

GoTo DERECHA

End If

If CN1=1 And CN2=0 Then 
'And CN3=0 And CN4=1 And CN5=1 Then

GoTo IZQUIERDA

End If

If CN1=0 And CN2=0 Then 
'And CN3=1 And CN4=1 And CN5=1 Then

GoTo ATRAS

End If

'==================================================================================================================================
'MOTOR DERECHA  : SAL1 ; SAL2
'MOTOR IZQUIERDA: SAL3 ; SAL4
'==================================================================================================================================

'==================================================================================================================================
'RUTINAS PARA LOS MOTORES
'==================================================================================================================================
ADELANTE:

SAL1=1 : SAL2=0: SAL3=1 : SAL4=0

GoTo INICIO

ATRAS:

SAL1=0 : SAL2=1: SAL3=0 : SAL4=1

GoTo INICIO

IZQUIERDA:

SAL1=1 : SAL2=0: SAL3=1 : SAL4=1 

GoTo INICIO

DERECHA:

SAL1=1 : SAL2=1: SAL3=1 : SAL4=0 

GoTo INICIO

al parecer al quitarle en end al final se resolvio no se me ha vuelto a quedar el micro posible no posible coinsidencia la verdad no lo se ojala alguien puediera ratificar o hacerme saber lo equivocado que he estado.

tambien por molestarles un favor como saben este codigo es para un seguidor de linea y quisiera hacerlo booteable desde el proton por puerto serial para no andar sacando el micro y otra vez metiendolo ya hemos malogrado algunas patitas y se nos han roto con lo que ya no valen los micros quisiera saber si pueden hecharme una mano con esto. claro si es posible o ando definitivamente fuera de todo
 
Atricio te dejo información para lo que necesitas al igual que vídeos :D
Para ver los vídeos descarga:

http://vlc-media-player.softonic.com/

por otro lado puedes colocar End al finalizar un programa en proton bajo las siguientes condiciones:

EndSelect
GoTo inicio
End

Next '
GoTo Main
End


De lo contrario el programa no realizara el bucle

delayMs 1000 ' segunda línea
GOTO MAIN
End
 

Adjuntos

  • Manual-PT40 (1).rar
    1.4 MB · Visitas: 314
  • proton loader.rar
    1.5 MB · Visitas: 268
  • General_Video.rar
    1.1 MB · Visitas: 215
  • SCOPE_Video.rar
    1.2 MB · Visitas: 235
  • UART_Video.rar
    597 KB · Visitas: 199
Última edición:
muchisimas gracias amigo mecatrodatos tengo que leerlo les molestare alguna duda que tenga me supongo que seran muchas gracias por la ayuda entonces ahora comprendo porque se paraba el micro no seguia el bucle gracias ahora si a trabajar en esto
 
hola amigos ando de nuevo por aqui he revisado la documentacion que me paso mecatrodatos pero tengo un par de preguntas ahora:

1.- para incluir el bootloader solo lo grabo en el micro y nada mas; no tengo que poner en el programa que voy a grabar nada para identificar que use el bootloader para que no sobre escriba el bootloader.

2.- el circuito para usar la comunicacion serial puede usarse un cable Rs232 a USB porque tengo una portatil

3.- por aqui son muy escasos los max 232 y muy caros asi que averiguando me pasaron este diagrama que les adjunto acontinuacion como no requiero distancia mas que la que pueda haber desde el robot a mi pc no creo q tenga atenuacion por la extencion del cable. es valido el circuito o de ley tengo que hacerm el circuito entre el max232 y el micro.

4.- como saben lo quiero para mi robot seguidor de linea es posible que se haga esto a pesar que este todo montado o requiere un minimo de cosas conectadas

Amigo mecatrodatos muy buena la apliacacion me quede impresionado al momento de mostrar la apliacion de osciloscopio que mustra muy buena. de paso esta pregunta se puede usar ese programita para diferentes apliaciones sin necesidad de comprar el board que lo venden.

Disculpen tantas preguntas la ingnoracia vence pero ojala me puedan hechar una mano
 

Adjuntos

  • circuito.PNG
    circuito.PNG
    55.4 KB · Visitas: 88
Atricio perdón por no responder rápido pero aqui va.:oops:

R1/:Antes de utilizar el programa MicroCode Loader es necesario pre cargar el microcontrolador a utilizar con el código “bootloader”, proceso que se puede realizar con el PIc KIt 2 Clon de moyano.

Al energizar al microcontrolador, o al realizar un “reset” del microcontrolador, el programa pre cargado en el microcontrolador “bootloader” realiza un chequeo de comunicación a través del UART del micro, si existe un programa cargador como el MicroCode Loader, se le da el control del microcontrolador al, programa MicroCode Loader, si no se encuentra ninguna actividad en el puerto de comunicaciones, el microcontrolador saldrá del programa “bootloader” y ejecutará el programa que tiene contenido en su memoria flash.

El código (firmware) “bootloader” reside o se almacena en las últimas 256 palabras de la memoria de programación (Flash) del microcontroladores de la serie PIC16F, y en las últimas 336 palabras de la memoria de programación (Flash) de los microcontroladores de la serie PIC18F.

Todos los registros de la memoria EEprom y del microcontrolador están disponibles como recursos para el usuario.

R2/:Si , o un convertidor Usb serial que puedes utilizar con todos los pic de la serie 16 y 18 f El software MicroCode Loader se comunica con el microcontrolador a través del UART del microcontrolador (USART).

R3/:Si posees portátil sin conexión serial (Rs232) debes hacer obligatoriamente un convertidor UBS-SERIAL como el que se observa en el Manual –PT40 Pág. 4 con el convertidor FT232 USB a SERIAL TTL u otro se encuentres en Internet

R4/:Desarrollas un conector en tu Robot seguidor de líneas tipo CONECTOR ICSP 6P. y si deseas potencializar el código conectas con el convertidor USB –serial al a través del UART del micro que estés utilizando ver pagina 18 Manual –PT40

Si yo tengo el programa por la extensión es difícil subirlo, lo único es que desarrolles el esquemático del USB-SERIAl en físico y te lo facilito.

y otra vez Perdón por la respuesta tan tarde:oops:
 
hola amigo muchas gracias a ti por molestarte y compartir el conocimiento ahora me dejas con unas cuantas dudas mas el integrado que existe ahi no hay en el mercado local de ecuador creo que no lo voy a poder encontrar me va a tocar usar el diagrama que te lo colgue anteriormente ojala funcione.
adicionalmente he hecho supuestamente un iscp para hacer lo que dices pero no me ha funcionado bien en ocaciones funciona y otras no he verificado conexiones la verdad no se que pueda ser ojala me pudieras dar alguna recomendacion para ello.
ahora tengo una duda adicional tengo que hacer una comunicacion serial - labview ojala pudieran colgar algun ejemplito con esto pero primero lo primero hechenme una mano con eso del booloader
 
Atricio mira si lo puedes conseguir por ebay creo que no es tan costoso y la facilidad de armar el circuito vale la pena (http://translate.google.com/transla...drodrigues.web.simplesnet.pt/usb_to_rs232.htm), por otro lado sube el circuito de tu robot para mirar como se te puede ayudar en verdad no se si tu circuito funcione para la comunicación portátil (USB)- serial, veo que es mas aplicable a computadores con puerto RS 232 incluido.

la cuestión de labview tocara mirar en este mismo foro algunos proyecto que postee :
https://www.forosdeelectronica.com/...ic-pro-ccs-compiler-serie-paralelo-usb-25601/
 
muchas gracias amigo mecatrodatos eres una maquina para esto segun miro este integrado solo existe en version smd no con pines ahi se me complica todo la verdad no se soldar en smd por si acaso te adjunto el diseno de mi seguidor disculpen pero soy novato para esto y por lo cual es bien basico ojala m puedas hechar una mano. en el link que me pasaste solo hay por entrada digital ojala me puedas dar algunos consejos de como mejorar el diseno y demas asuntos sobre el mismo gracias de antemano
 

Adjuntos

  • diseno robot.pdf
    28.6 KB · Visitas: 227
Última edición:
Buenas tardes amigos, y en especial a mi amigo para que me hechen una mano con los siguientes comandos y la sintaxis de lookup, lookDown, EDATA, EWRITE, EREAD, Y SI ES POSIBLE la diferencia de lookup respecto a lookDown y Edata con EWRITE Xfavor, amigo. Gracias de ante manos

trabajo con proton amigo
 
Atricio: dame tiempo el fin de semana te doy repuesta

dabopeyton:
EWRITE: Escribir un valor en la memoria EEPROM de a bordo.
EDATA: Definir contenido inicial de EEPROM de a bordo.

La EEPROM en un microcontrolador PIC es la memoria que puede contener información incluso cuando el PIC está apagado. Esto es útil para almacenar datos y contraseñas e información clave que es cambiante.

Leer y escribir desde la EEPROM del PIC es muy sencillo con un lenguaje de programación de alto como de protones +, y es tan simple como lo siguiente;

Variable= EREAD Address
EWRITE Address, [Variable, Variable]

El tipo de variable que se va a guardar para determinar la cantidad de memoria EEPROM se escribirá también. Por ejemplo:

Dim large_Variable As Dword
EWRITE 00, [large_Variable]

El ejemplo anterior se escribe Large_Variable para hacer frente a 00 de la EEPROM del PIC. Pero debido a DWord contienen 4 bytes de información, direcciones de 00, 01, 02, 03 se escribirá también.
Se debe tomar este tipo de cosas en cuenta. Otros ejemplos son las palabras de 2 bytes, o flotadores de 4 bytes, etc.
Lectura de la EEPROM es tan fácil, y un rápido vistazo al archivo de Ayuda de protones te guiará en la dirección correcta.

Aquí está un pequeño programa que muestra una EEPROM de lectura y escritura:

PHP:
Device = 16F877A
Xtal = 4
 
Dim DWord_Var as DWord
Dim Word_Var as Word
 
Dim Temp_DWord as DWord
Dim Temp_Word as Word
 
LCD_DTPIN = PORTB.4
LCD_RSPIN = PORTB.2
LCD_ENPIN = PORTB.3
LCD_INTERFACE = 4
LCD_LINES = 2
LCD_TYPE = 0
All_Digital = True
 
Delayms 150
Cls
 
DWord_Var = 1000000
Word_Var = 1000
 
Inicio:
 
 EWrite 00, [DWord_Var, Word_Var]
 
 Temp_DWord = ERead 00
 Temp_Word = ERead 04
 
 Print At 1, 1, DEC7 Temp_DWord
 Print At 2, 1, DEC5 Temp_Word
 
 Inc DWord_Var
 Inc Word_Var
 
 DelaymS 1000
 
 Goto Inicio

LOOKUP: Obtener un valor constante de una tabla de búsqueda.
LOOKUPL: Obtener un valor constante o variable de tabla de búsqueda.
LOOKDOWN: Buscar en una tabla lookdown, un valor constante.
LOOKDOWNL: Buscar en una tabla lookdown, un valor constante o variable.

Son comandos que en una tabla se almacenan caracteres para posteriormente ser mostrados o guardados en una variable.

x= LookUp x, [1,2,3,255,4,5,6,255,7,8,9,255,"*",0,"#",255,255]
 
Última edición por un moderador:
LOOKUP: Obtener un valor constante de una tabla de búsqueda.
LOOKUPL: Obtener un valor constante o variable de tabla de búsqueda.
LOOKDOWN: Buscar en una tabla lookdown, un valor constante.
LOOKDOWNL: Buscar en una tabla lookdown, un valor constante o variable.

Son comandos que en una tabla se almacenan caracteres para posteriormente ser mostrados o guardados en una variable.

x= LookUp x, [1,2,3,255,4,5,6,255,7,8,9,255,"*",0,"#",255,255]


mecatrodatos como siempre ayudando al progimo. muchas gracias por la informacion.

me gustaria un ejemplo de looKUP y lOOKUP te lo agradesco
 
Atrás
Arriba