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 - Fox_Neo

#81
Programación General / Programacion en VHDL
10 Octubre 2013, 11:33 AM
Hola gracias por leer mi duda, estoy empezando a programa en VHDL  y me da un error de compilación que no consigo corregir el código es el siguiente :
Código (vhdl) [Seleccionar]
-------------------------------------------------------------------------------
--
-- Title       : demux
-- Design      : 3º practica
-- Author      : Manuel
-- Company     : Torca
--
-------------------------------------------------------------------------------
--
-- File        : demux.vhd
-- Generated   : Wed Oct  9 01:32:38 2013
-- From        : interface description file
-- By          : Itf2Vhdl ver. 1.22
--
-------------------------------------------------------------------------------
--
-- Description :
--
-------------------------------------------------------------------------------

--{{ Section below this comment is automatically maintained
--   and may be overwritten
--{entity {demux} architecture {demux}}

library IEEE;
use IEEE.STD_LOGIC_1164.all;
  use IEEE.std_logic_unsigned.all
entity demux is
port(
D : in STD_LOGIC;
S : in STD_LOGIC;
Z0 : out STD_LOGIC;
Z1 : out STD_LOGIC
     );
end demux;

--}} End of automatically maintained section

architecture demux of demux is
begin

-- enter your statements here --
process(D,S)
begin
example:
if S='0' then
Z0<=D;
else
Z1<=D;
end if;
end process;

end demux;

Estoy usando el programa de Active- HDL versión estudiante
El error que me da es el siguiente:

# Error: VLM_0040: VHDL unit cannot be compiled as the target library name is not a legal VHDL identifier.
Lo que intento realizar es un demultiplexor  que realice la selección de un dato en una entrada hacia uno de los dos  canales de salida para datos de 1 bits D es la entrada, S es la señal de control, z0 y z1 son las salidas

Gracias por la ayuda
#82
Gracias por responder, he pensado que me tendre que comprar uno nuevo en The Phone House.  :-\
Salu2
#83
Hola gracias por leer  mi duda , os explico mejor a lo que me refiero.
De vacaciones me robaron mi movil un sammsung galaxy ace y tenia contratada tambien una linea de datos de internet, lo que me gustaria es "amenazar" a la compania para que me ofrezcan algo interesante,  he pensado que si no me hacen caso  coger y quitar a mis padres de moviestar ambos de contrato, aparte la linea que tienen de internet que es de moviestar, yo creo que tienen mucho perder:

- 3  contratos de moviles.
- contrato de adsl.

He ido a una tiende de moviestar y me ha dicho que no me van hacer mucho caso porque con la nueva ley  las compañias telefonicas no puedenregalar nada.

Tambien lo que me fastidia que como he dado de baja mi linea para que no la use quien me lo robó  estoy  pagando la  linea de mi movil y no la estoy usando :-[

Gracias por  leer mi duda
#84
ok gracias es que el otro dia me aburria y lo intente hacer
gracais por la ayuda
#85
Queria hacer un juego como hundir la flota 
#86
Hola gracias por leer mi duda. Me gustaria saber como puedo escribir un dato en una celda indicando su fila y columna, osea que yo direccione la celda y en esa posicion se guarde el valor
he visto que se puede hacer en vba:

Código (vb) [Seleccionar]
Cells(4,5)=23

No se programar en vba y querria saber si hay alguna manera de hacerlo sin programarlo en vba.
he mirado las formulas del excel y no hay ninguna que lo haga.
Gracias
#87
Yo lo que no entiendo es que son pistolas de PLASTICO no se por qué lo dan tanta importancia la verdad ¿Que esperan que sea capaz e disparan munición real y que no se rompa??
#88
Siempre que leo alguno de tus mensajes  aprendo bastante o me orientas muy bien y como no en este mensaje lo has cumplido ^^ gracias por la información me va a venir muy bien para mi aprendizaje de ensamblador.

Gracias
#89
Seré un ingnorante pero vamos a ver si es de plástico no greo que pueda aguantar el retroceso de la bala al estallar porque se rompería porque es plástico,  y si no por qué el ejercito no tiene armas de plático que serian mas ligeras. nose  a mi me da que lo unico que se podría es engañar a gente pero de hay a que puedan disparar no se yo  :o
#90
Hola a tods gracias por leer mi duda. El profesor nos ha mandado un trabajo para acabar la asignatura de Sistemas basados en microprocesador. Para ello nos ha dado unos ejemplos del autor Mikel Etxebarria.
Para entender como funcinan los programas estoy trateando con ellos para entender coo funcionan y aprovechar lo que  puedad de cada ejemplo para el trabajo.

Pues me ha atascado en uno de los primeros ejemplos supuestamente son muy faciles pero lo he modificado y no hace lo que quiero. Para ello lo he simulado con el Proteus 7 Professional, el codigo es el siguiente:

Código (asm) [Seleccionar]
List p=16F886 ;Tipo de procesador
include "P16F886.INC" ;Definiciones de registros internos

;Ajusta los valores de las palabras de configuración durante el ensamblado.Los bits no empleados
;adquieren el valor por defecto.Estos y otros valores se pueden modificar según las necesidades

__config _CONFIG1, _LVP_OFF&_PWRTE_ON&_WDT_OFF&_EC_OSC&_FCMEN_OFF ;Palabra 1 de configuración
__config _CONFIG2, _WRT_OFF&_BOR40V ;Palabra 2 de configuración

                   
Lcd_var equ 0x70 ;Variables (3) empleadas por las rutinas de manejo del LCD
MSE_Delay_V equ 0x79
org 0x00 ;Vector de RESET
goto Inicio
org 0x05

include "LCD4bitsPIC16.inc" ;Incluye las rutinas de manejo del LCD
include "MSE_Delay.inc"
Inicio   clrf PORTB
clrf PORTA ;Borra los latch de salida
bsf STATUS,RP0
bsf STATUS,RP1 ;Banco 3
clrf ANSEL ;Puerta A digital
clrf ANSELH ;Puerta B digital
bcf STATUS,RP1 ;Banco 1
movlw b'11110001'
movwf TRISA ;RA1-RA3 salidas
movlw 0xf0
movwf TRISB ;RB0-RB3 salidas
bcf STATUS,RP0 ;Banco 0

call UP_LCD ;Configura puertos para LCD
call LCD_INI ;Secuencia de inicio del LCD

movlw b'00001111'
call LCD_REG ;Envía instrucción: LCD ON, Cursor ON y blink ON
movlw 'H'
call LCD_DATO ;Visualiza H
movlw 'o'
call LCD_DATO ;Visualiza o
movlw 'l'
call LCD_DATO ;Visualiza l
movlw 'a'
call LCD_DATO ;Visualiza a
movlw ' '
call LCD_DATO ;Visualiza blanco
Delay 1000 Milis
movlw 'M'
call LCD_DATO
movlw 'a'
call LCD_DATO
movlw 'n'
call LCD_DATO
movlw 'u'
call LCD_DATO
Loop sleep ;Puesta en Standby

end ;Fin del programa fuente



La librería de la pantalla LCD es:
Código (asm) [Seleccionar]
; LCD4bitsPIC16.inc
; Autor: Mikel Etxebarria
; (c) Ingeniería de Microsistemas Programados S.L.
; www.microcontroladores.com
; Bilbao 2010
;
;Este conjunto de rutinas diseñadas para PIC16 que permiten realizar las tareas
;básicas de control del módulo de visualización LCD, mediante un interface de 4 bits.
;Este fichero se debe incluir en los futuros programas fuente mediante la directiva INCLUDE
;
;Las rutinas están adaptadas a las velocidades más lentas de algunos módulos LCD, en las cuales
;el tiempo de activación (Tc) entre una señal ENABLE y la siguiente es de unos 4 uS. La
;velocidad de trabajo se supone de 4MHz.

;UP_LCD: Configuración PIC para el LCD.
;
;LCD_INI: Rutina de visualización según Wintek. El LCD queda activado, borrado
; y en la 1ª posición del cursor
;
;LCD_DATO: Escritura de datos en DDRAM o CGRAM. Envía el dato presente en el W
;
;LCD_REG: Escritura de comandos en el LCD. Envía el comando presente en el W
;

;Se supone un interface de 4 bits. RB0-RB3 es la puerta de datos. RA1-RA3 son las señales de control.
;Estas conexiones se pueden modificar según se necesite

#define ENABLE       bsf PORTA,1     ;Activa señal E (RA1)
#define DISABLE       bcf PORTA,1     ;Desactiva señal E (RA1)
#define LEER         bsf PORTA,2     ;Pone LCD en Modo RD (RA2)
#define ESCRIBIR     bcf PORTA,2     ;Pone LCD en Modo WR (RA2)
#define LCD_COMANDO   bcf PORTA,3     ;Desactiva RS (modo comando)(RA3)
#define LCD_DATOS   bsf PORTA,3   ;Activa RS (modo dato)(RA3)
#define LCD_C_PORT PORTA ;Puerta de control del LCD (RA1-RA3)
#define LCD_C_TRIS TRISA ;Control de la puerta de control del LCD
#define LCD_PORT PORTB ;Puerta de datos del LCD (RB0-RB3)
#define LCD_TRIS TRISB ;Control de la puerta de datos del LCD

;Variables empleadas por las rutinas de control del LCD
CBLOCK Lcd_var ;Inicio de las variables. Será la primera
Lcd_Temp_1 ;direccón libre disponible
Lcd_Temp_2
Lcd_Temp_3
ENDC

;*************************************************************************
;UP_LCD: Configuración PIC para el LCD.
;
UP_LCD          LCD_COMANDO             ;RS=0
               DISABLE                 ;E=0
               ESCRIBIR ;R/W=0
bsf STATUS,RP0 ;Banco 1
movf LCD_C_TRIS,W
andlw b'11110001'
movwf LCD_C_TRIS ;Puerta de control del LCD como salida
movf LCD_TRIS,W
andlw 0xF0
movwf   LCD_TRIS        ;Puerta de datos del LCD como salidas
bcf STATUS,RP0 ;Banco 0
return

;**************************************************************************
;LCD_BUSY: Lectura del Flag Busy y de la dirección. No retorna hasta que busy sea "0"
;
LCD_BUSY clrwdt
bsf STATUS,RP0 ;Banco 1
          movf LCD_TRIS,W
andlw 0xf0
iorlw 0x0f
movwf LCD_TRIS        ;Puerta de interface como entradas
bcf STATUS,RP0 ;Banco 0
           LCD_COMANDO ;Modo dato
LEER                    ;Pone el LCD en Modo RD
LCD_BUSY_1 nop
ENABLE                  ;Activa el LCD
          swapf LCD_PORT,W
andlw b'11110000'
movwf Lcd_Temp_3 ;Lee y salva los 4 bits de mas peso
DISABLE
nop
ENABLE ;Activa el LCD
nop
movf LCD_PORT,W
andlw b'00001111'
iorwf Lcd_Temp_3,F ;Lee y salva los 4 bits de menos peso
nop
DISABLE
btfsc Lcd_Temp_3,7 ;Busy activado ??
goto LCD_BUSY_1 ;Si, volver a leer
ESCRIBIR ;Modo escritura
bsf STATUS,RP0 ;Banco 1
          movf LCD_TRIS,W
andlw 0xf0
movwf   LCD_TRIS        ;Puerta de interface como salida
bcf STATUS,RP0 ;Banco 0
return

;**************************************************************************
;LCD_E: Pulso de Enable. En algunos LCD's esta señal debe estar a "0" un tiempo mínimo
;antes de volver a ponerse a "1". Se puede variar el valor de temporización en función
;del tipo de LCD.
;
LCD_E           ENABLE              ;Activa E
nop
nop
DISABLE             ;Desactiva E
nop
nop
return

;**************************************************************************
;LCD_DATO: Escritura de datos en DDRAM o CGRAM. Envía el dato presente en el W
;
LCD_DATO movwf Lcd_Temp_2 ;Salva el dato a visualizar
call LCD_BUSY ;Espera que el LCD esté libre
movlw 0xf0
andwf LCD_PORT,F
swapf Lcd_Temp_2,W
andlw 0x0F
iorwf LCD_PORT,F ;Salida de los 4 bits de mas peso
ESCRIBIR ;Modo escritura
LCD_DATOS ;Modo datos
call LCD_E ;Genera pulso de Enable
movlw 0xf0
andwf LCD_PORT,F
movf Lcd_Temp_2,W
andlw 0x0f
iorwf LCD_PORT,F ;Salida de los 4 bits de menos peso
call LCD_E ;Genera pulso de Enable
return
               
;**************************************************************************
;LCD_REG: Escritura de comandos en el LCD. Envía el comando presente en el W

LCD_REG         movwf Lcd_Temp_2 ;Salva el dato a visualizar
call LCD_BUSY ;Espera que el LCD esté libre
movlw 0xf0
andwf LCD_PORT,F
swapf Lcd_Temp_2,W
andlw 0x0f
iorwf LCD_PORT,F ;Salida de los 4 bits de mas peso
ESCRIBIR ;Modo escritura
LCD_COMANDO ;Modo comandos
call LCD_E ;Genera pulso de Enable
movlw 0xf0
andwf LCD_PORT,F
movf Lcd_Temp_2,W
andlw 0x0f
iorwf LCD_PORT,F ;Salida de los 4 bits de menos peso
call LCD_E ;Genera pulso de Enable
return

;***************************************************************************
;LCD_INI: Rutina de visualización según Wintek. El LCD queda activado, borrado
;y en la 1ª posición del cursor

LCD_INI movlw .75
movwf Lcd_Temp_1
call LCD_DELAY ;Temporización de unos 15mS tras el Power-On
DISABLE
ESCRIBIR
LCD_COMANDO ;Modo comando y escritura
movlw 0xf0
andwf LCD_PORT,F
movlw 0x03
iorwf LCD_PORT,F ;Comando FUNCTION SET sin chequeo de busy
call LCD_E ;Genera pulso de Enable
movlw .25
movwf Lcd_Temp_1
call LCD_DELAY ;Temporiza unos 5mS
movlw 0xf0
andwf LCD_PORT,F
movlw 0x03
iorwf LCD_PORT,F ;Comando FUNCTION SET sin chequeo de busy
call LCD_E ;Genera pulso de Enable
movlw .5
movwf Lcd_Temp_1
call LCD_DELAY ;Temporiza unos 1 ms
movlw 0xf0
andwf LCD_PORT,F
movlw 0x02
iorwf LCD_PORT,F ;Comando FUNCTION SET a 4 bits sin chequeo de busy
call LCD_E ;Genera pulso de Enable
movlw b'00101000'
call LCD_REG ;Comando FUNCTION SET con chequeo de busy
movlw b'00001000'
call LCD_REG ;Display Off
movlw b'00000001'
call LCD_REG ;Comando HOME
movlw b'00001100'
call LCD_REG ;Comando Diaplay ON
return

;*****************************************************************************
;LCD_DELAY: Rutina de temporización de unos 200 uS a 4MHz que se repite tantas veces
;como indica la variable Lcd_Temp_1. Se emplean las variables Lcd_Temp_1
;y LCD_Temp_2 en lugar del TMR0. Este queda libre para las aplicaciones del usuario

LCD_DELAY: movlw .50
movwf Lcd_Temp_2
LCD_DELAY_1: clrwdt
decfsz Lcd_Temp_2,F
goto LCD_DELAY_1
decfsz Lcd_Temp_1,F ;Bucle de 4uS que se repite 50 veces (200us)
goto LCD_DELAY ;El bucle de 200uS se repite Lcd_Temp_1 veces
return
           

Y la librería del MSE_Delay es:
Código (asm) [Seleccionar]
;************************************************************************************************************************
;
; Autor: Mikel Etxebarria
; (c) Ingeniería de Microsistemas Programados S.L.
;
;  
;
;Macro y rutina de temporización que se ajustan en función de la frecuencia de trabajo Fosc. En el programa principal
;se debe definir:
;a) La frecuencia de trabajo (en hz) mediante ... "#define Fosc xxxxxxxx"
;b) Inicio de las variables de temporización " MSE_Delay_V equ 0xXX "
;
;El usuario llama a la macro desde su programa principal mediante ... "Delay xxxx Milis"
;
;Se obtiene una precisión razonable con valores de temporización desde 1 hasta 2000 mS y a frecuencias Fosc
;que van desde 1MHz hasta 48MHz

#define         Milis * D'1000000'

CBLOCK MSE_Delay_V ;Inicio de las variables. Será la primera
MSE_Delay_1 ;direccón libre disponible
MSE_Delay_2
MSE_Delay_3
ENDC

Delay macro tiempo_ns ;tiempo_ns expresa en ns el tiempo de temporización deseado

ifndef Fosc ;En el programa principal se ha definir la frecuencia de trabajo en Hz
messg "ERROR !! - Establecer la frecuencia de trabajo (p.e. #define Fosc 4000000)"
exitm
endif

radix dec ;Operaciones en base decimal
variable ciclo_instruc_ns =  (( 1000000000 ) / (Fosc / 4 )) ;Calcula ciclo de instrucción en función de la frecuencia Fosc
variable ciclos = (tiempo_ns / ciclo_instruc_ns) ;Calcula el nº de ciclos necesarios para la temporización deseada

 
movlw upper (ciclos/4)+1
movwf MSE_Delay_1
movlw high (ciclos/4)+1
movwf MSE_Delay_2
movlw low (ciclos/4)
movwf MSE_Delay_3 ;Carga las variables de temporización con el nº de ciclos calculado
call MSE_Delay

endm

MSE_Delay clrwdt ;Bucles de temporización
decfsz MSE_Delay_3,f
goto MSE_Delay
decfsz MSE_Delay_2,f
goto MSE_Delay
decfsz MSE_Delay_1,f
goto MSE_Delay
return


Pues yo he añadido lo siguiente al codigo  original:
Código (asm) [Seleccionar]

Delay 1000 Milis
movlw 'M'
call LCD_DATO
movlw 'a'
call LCD_DATO
movlw 'n'
call LCD_DATO
movlw 'u'
call LCD_DATO

Al simularlo en proteus me sale Manu al instante y no espera 1 segundo y no entiendo por qué no funciona.Se me queda ejecutando en la instrucción"call  LCD_INI" y no sale de hay (lo he simulado paso a paso con MPLAB). No entiendo que si no sale de ese bucle como es capaz de poner el mensaje si no puee avanzar en el programa.  Se lo he preguntado al profesor y me ha dicho que no tiene ni idea que como el no ha hecho las librerias ni los programas no sabe como funcionan y que me busque la vida,  nos da programas que ni se molesta en mirar, por eso pregunto aqui, ya que hay gente muy buena que le da mil vueltas a muchos de los profesores de universidad  :¬¬
Os dejo el montaje del LCD y el PIC en Proteus:https://dl.dropboxusercontent.com/u/68772720/CAJA%20FUERTE.DSN
Gracias por la atencion
salu2