Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Tokes

#61
Con la novedad de que no tengo la versión más nueva de Proteus. ¿Me podrías enviar el instalador? (Si no es molestia)

           Buen día.
#62
En el menú Debug puedes activar esas ventanas.

Sólo seleccionas Debug > PIC CPU (o algo así) y activas las ventanas para ver el código del micro (para ello debes cargar el archivo .COF en vez del .HEX).

"Hola a todos" es el mensaje que le dejé guardado de mi archivo .bin. Si quieres cambiárselo tienes que dar click en Debug > Reset persistent model data para que se borre ese contenido.

Si tienes alguna duda sigo a tus órdenes. Saludos.
#63
Una pregunta:

¿Con todo y BÓRRAME?
#64
¿Cómo le grabaste los datos iniciales a la 24lc256?

Yo probé tu código en un pic16f876a y sí me funciona. Pero le cargo un archivo a la memoria 24lc256.

Primero visualiza un mensaje y después puros cuadros porque ya éstá vacía.
#65
Me parece que la configuración de los puertos es correcta.

Ahora bien, las resistencias de pull-up de 4k7 cámbialas por resistencias especiales de PULLUP (las hay especiales para pullup en proteus). Pruébalo así y me cuentas.

              Saludos.
#66
Meta:

Una pequeña pregunta: ¿Cómo le cargas el valor inicial a la 24LC256? Yo no pude cargarle contenidos iniciales.

Un comentario: Asegúrate de configurar las terminales del puerto A como dgitales, por defecto son analógicas.

          Por el momeno es todo. Saludos
#67
Hola a todos:

No sé si esto es lo que se pedía y como se pedía, pero de igual manera lo dejo:

Option Explicit

Private Sub Command1_Click()
Dim x As Long
Dim i As Long
Dim aparecido(0 To 30) As Boolean
Dim matriz(0 To 24) As Long

'Carga matriz
    While i < 25
        Randomize
        x = CLng((30 - 1) * Rnd + 1)
        If Not aparecido(x) Then
            matriz(i) = x
            aparecido(x) = True
            i = i + 1
        End If
    Wend

'Ordena matriz
Dim li As Long, ls As Long, lsaux As Long

    li = 0
    ls = 24
   
    While ls > li
        lsaux = li
        For i = 0 To ls - 1
            If matriz(i + 1) < matriz(i) Then
                x = matriz(i + 1)
                matriz(i + 1) = matriz(i)
                matriz(i) = x
                lsaux = i
            End If
        Next
        ls = lsaux
    Wend

'Visualiza diagonales
    x = 4
    For i = 0 To 24 Step 6
        Label1(i).Caption = matriz(i)
        Label1(i + x).Caption = matriz(i + x)
        x = x - 2
    Next
End Sub


Se necesita un arreglo de 25 labels en el Form.

          Saludos.
#68
Hola, Mr.Know:

Puedes posicionar la antena utilizando servomotores. Éstos se controlan mediante señales de PWM. Aquí te dejo un enlace:

http://cfievalladolid2.net/tecno/cyr_01/robotica/sistema/motores_servo.htm

Si el software del PC lo haces con visual basic puedes usar los timers para generar el PWM.
#69
Hola, gente del foro:

Espero no molestarlos con una pequeña pregunta:

Para manejar el puerto USB con Visual Basic 6.0 ¿Hay algún objeto, función o API?

          Eso es todo. Saludos y gracias por su atención.
#70
Meta:

Te dejo un programa ejemplo con el PIC16F876A junto con la librería "LCD_MENS.INC" mdificada para que no tenga error al acceder a una tabla que rebasa los primeros 256 bytes; analízalo.

Código (asm) [Seleccionar]

#include "p16f876a.inc"
__config _XT_OSC & _PWRTE_ON & _LVP_OFF & _DEBUG_OFF & _WDT_OFF & _BODEN_OFF

cblock 20h
endc

org 00h
call LCD_Inicializa

call LCD_Linea1
call LCD_LineaEnBlanco
call LCD_Linea1
movlw MensajeHola
call LCD_Mensaje

call LCD_Linea2
call LCD_LineaEnBlanco
call LCD_Linea2
movlw MensajeAmigos
call LCD_Mensaje

goto $

org .250
Mensajes
addwf PCL,F
MensajeHola
dt "Hola a todos...",0
MensajeAmigos
dt "Amigos mios...",0

INCLUDE "RETARDOS.INC"
INCLUDE "LCD_4BIT.INC"
INCLUDE "LCD_MENS.INC"

end


Nota que los mensajes los puse a partir de la dirección 250 para que la tabla de mensajes rebase los primeros 256 bytes y así comprobar que el código funciona aún en esas circunstancias.

La librería "LCD_MENS" modificada es la siguiente:

Código (asm) [Seleccionar]
;**************************** Librería "LCD_MENS.INC" ********************************
;
; ===================================================================
;  Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
;  E. Palacios, F. Remiro y L. López. www.pic16f84a.com
;  Editorial Ra-Ma.  www.ra-ma.es
; ===================================================================
;
; Librería de subrutinas para el manejo de mensajes a visualizar en un visualizador LCD.

CBLOCK
LCD_ApuntaCaracter ; Indica la posición del carácter a visualizar
; respecto del comienzo de todos los mensajes,
; (posición de la etiqueta "Mensajes").
LCD_ValorCaracter ; Código ASCII del carácter a
ENDC ; visualizar.

; Los mensajes tienen que estar situados dentro de las 256 primeras posiciones de la
; memoria de programa, es decir, no pueden superar la dirección 0FFh.

; Subrutina "LCD_Mensaje" ---------------------------------------------------------------
;
; Visualiza por pantalla el mensaje apuntado por el registro W.
;
; Los mensajes deben localizarse dentro de una zona encabezada por la etiqueta "Mensajes" y que
; tenga la siguiente estructura:
;
; Mensajes ; ¡Etiqueta obligatoria!
; addwf PCL,F
; Mensaje0 ; Posición inicial del mensaje.
; DT ".. ..", 0x00 ; Mensaje terminado en 0x00.
; Mensaje1
; ...
; ...
; FinMensajes
;
; La llamada a esta subrutina se realizará siguiendo este ejemplo:
;
; movlw Mensaje0 ; Carga la posición del mensaje.
; call LCD_Mensaje ; Visualiza el mensaje.
;
LCD_Mensaje
movwf LCD_ApuntaCaracter ; Posición del primer carácter del mensaje.
movlw Mensajes ; haya la posición relativa del primer carácter
subwf LCD_ApuntaCaracter,F ; del mensaje respecto de etiqueta "Mensajes".
decf LCD_ApuntaCaracter,F ; Compensa la posición que ocupa "addwf PCL,F".
LCD_VisualizaOtroCaracter
movf LCD_ApuntaCaracter,W
; Modificado para evitar desvíos en el programa
addlw low(Mensajes + .1)
movlw high(Mensajes + .1)
btfsc STATUS,C
addlw .1
movwf PCLATH
movf LCD_ApuntaCaracter,W
;...
call Mensajes ; Obtiene el código ASCII del carácter apuntado.
movwf LCD_ValorCaracter ; Guarda el valor de carácter.
movf LCD_ValorCaracter,F ; Lo único que hace es posicionar flag Z. En caso
btfsc STATUS,Z ; que sea "0x00", que es código indicador final
goto LCD_FinMensaje ; de mensaje, sale fuera.
LCD_NoUltimoCaracter
call LCD_Caracter ; Visualiza el carácter ASCII leído.
incf LCD_ApuntaCaracter,F ; Apunta a la posición del siguiente carácter
goto LCD_VisualizaOtroCaracter ; dentro del mensaje.
LCD_FinMensaje
return ; Vuelve al programa principal.

; Subrutina "LCD_MensajeMovimiento" -----------------------------------------------------
;
; Visualiza un mensaje de mayor longitud que los 16 caracteres que pueden representarse
; en una línea, por tanto se desplaza a través de la pantalla.
;
; En el mensaje debe dejarse 16 espacios en blanco, al principio y al final para
; conseguir que el desplazamiento del mensaje sea lo más legible posible.
;
CBLOCK
LCD_CursorPosicion ; Contabiliza la posición del cursor dentro de la
ENDC ; pantalla LCD

LCD_MensajeMovimiento
movwf LCD_ApuntaCaracter ; Posición del primer carácter del mensaje.
movlw Mensajes ; haya la posición relativa del primer carácter
subwf LCD_ApuntaCaracter,F ; del mensaje respecto de la etiqueta "Mensajes".
decf LCD_ApuntaCaracter,F ; Compensa la posición que ocupa "addwf PCL,F".
LCD_PrimeraPosicion
clrf LCD_CursorPosicion ; El cursor en la posición 0 de la línea.
call LCD_Borra ; Se sitúa en la primera posición de la línea 1 y
LCD_VisualizaCaracter ; borra la pantalla.
movlw LCD_CaracteresPorLinea ; ¿Ha llegado a final de línea?
subwf LCD_CursorPosicion,W
btfss STATUS,Z
goto LCD_NoEsFinalLinea
LCD_EsFinalLinea
call Retardo_200ms ; Lo mantiene visualizado durante este tiempo.
call Retardo_200ms
movlw LCD_CaracteresPorLinea-1; Apunta a la posición del segundo carácter visualizado
subwf LCD_ApuntaCaracter,F ; en pantalla, que será el primero en la siguiente
goto LCD_PrimeraPosicion ; visualización de línea, para producir el efecto
LCD_NoEsFinalLinea ; de desplazamiento hacia la izquierda.
movf LCD_ApuntaCaracter,W
; Modificado para evitar desvíos en el programa
addlw low(Mensajes + .1)
movlw high(Mensajes + .1)
btfsc STATUS,C
addlw .1
movwf PCLATH
movf LCD_ApuntaCaracter,W
;...
call Mensajes ; Obtiene el ASCII del carácter apuntado.
movwf LCD_ValorCaracter ; Guarda el valor de carácter.
movf LCD_ValorCaracter,F ; Lo único que hace es posicionar flag Z. En caso
btfsc STATUS,Z ; que sea "0x00", que es código indicador final
goto LCD_FinMovimiento ; de mensaje, sale fuera.
LCD_NoUltimoCaracter2
call LCD_Caracter ; Visualiza el carácter ASCII leído.
incf LCD_CursorPosicion,F ; Contabiliza el incremento de posición del
; cursor en la pantalla.
incf LCD_ApuntaCaracter,F ; Apunta a la siguiente posición por visualizar.
goto LCD_VisualizaCaracter ; Vuelve a visualizar el siguiente carácter
LCD_FinMovimiento ; de la línea.
return ; Vuelve al programa principal.

; ===================================================================
;  Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
;  E. Palacios, F. Remiro y L. López. www.pic16f84a.com
;  Editorial Ra-Ma.  www.ra-ma.es
; ===================================================================


Te recomiendo, además, que tus tablas aparte de los mensajes las coloques al principio de tu programa y después de esas tablas pongas los mensajes. Por ejemplo:

Código (asm) [Seleccionar]
org        0
     goto   Inicio
     
Tabla_1
    addwf    PCL,F
    retlw      0x33
    retlw      0x68
             .
             .

Tabla_2
    addwf    PCL,F
    retlw      0x67
    retlw      0x87
              .
              .

Mensajes
    addwf    PCL,F
Mensaje0
    DT        "MENSAJE NUM 0",0
Mensaje1
    DT        "MENSAJE NUM 1",0
              .
              .

Inicio
     call      LCD_Inicializa
     movlw  Mensaje0
              .
              .

       INCLUDE    "LCD_MENS.INC"
       INCLUDE    "LCD_4BIT.INC"
                   .
                   .
         
          end


         Espero te sea útil. Saludos.