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

#801
Si, el problema viene cuando programas un microcontrolador en C, entonces te das cuenta de "todo el tiempo perdido" que tampoco es perdido, pero en C es muchísimo mas facil, por ejemplo para sacar 00000001 por el puerto A hacer directamente:

PORTB = 0x01;

con esa línea ya lo sacas, o por ejemplo:

IF (PORTB == 0x01) then
PORTA = 1;

Imagina hacer esto último en ASM la de líneas que ocuparia, posiblemente 6 o 7 líneas mientras en C són dos.

Es mas, compiladores como MPLAB tiene todas las librerias de estos pics y no hace falta ni declarar direcciónes de memória ni nada, simplemente metes la librria con INCLUDE y fiesta. Lo que queda es ya directamente poner los fuzes o configuraciones iniciales y ya puedes programar directamente sobre los puertos sin preocuparte de bancos, registros ni nada con muchas menos líneas de codigo.
#802
El lenguaje Asm no puede morir, es el lenguaje mas cercano al "lenguaje maquina" que entiende directamente un sistema electrónico y por ello lo hace el mas rápido.

En un microcontrolador no se nota la diferencia, pero en un ordenador, donde el procesador tiene una carga de trabajo muy superior, un programa hecho en ensamblador irá mucho mas rapido que uno hecho en visual basic o otro lenguaje de nivel alto.

Esto se da, porque tanto un microcontrolador, como un microprocesador, tienen un clock (ciclo de reloj). Las instrucciónes, depénde cuales sea ocupan X ciclos de reloj, por ejemplo un MOV, si mal no recuerdo eran 2, un NOP 1...

Si el programa esta hecho en ensamblador es facil saber el número de ciclos aproximados, un programa hecho en C en realidad para hacer lo mismo consumirá mas ciclos.

Es por eso que hay lenguajes mas o menos rápidos y el ensamblador es el mas rapido de todos.

AÑADO...

Para entender mas fácilmente lo de los ciclos de trabajo de las instrucciónes, solo hace falta mirar la estructura interna de un microprocesador por ejemplo, tienen distíntas partes, una de ellas por ejempl una ALU, otra un acumulador...

De esta forma sabe el micro que lo primero que pones es una instrucción y luego un dato, por ejemplo:

Mov B, 00000001d
add A,B

Fijate la siguiente imagen:

http://www.alciro.org/images/alciro/610_estructura-interna-microcontroladores-8051-8052.png

Fijate la parte de la ALU, le vienen dos líneas TMP1 y TMP2, en el ejemplo de codigo que he puesto, en un primer ciclo de trabajo de la ALU B cargaría su valor decimal, en el siguiente ciclo de trabajo de la ALU se sumaria A + B.

A partir de aquí, sabiendo los ciclos de clock de la instrucción MOV y la de ADD podemos saber los ciclos de clock totales utilizados por esas dos líneas de codigo.

PD: Sorry que no te ponga los ciclos de clock de ADD o MOV pero no me acuerdo, quizá los de MOV sean 2.

PD: Las empresas generálmente programan tanto en ASM como en C, depende del personal y su formación, aunque el C es importante saber manejarse con el ya que es mucho mas práctico y los programas se acórtan una barbaridad
#803
CitarIF Registro1 == 0x01
bcf portb,0  ;Prende led por PINB0
else
end Fin del programa

Esa parte has mezclado ensamblador con C  :xD, en ensamblador hay instrucciónes para ver si un registro o acumulador es o 0 1 y según lo que sea hace un salto, en la arquitectura 8081 que es la que usa Atmel hay instrucciónes como JNZ, JZ,JZE...

La estructura condicional IF..THEN la puedes utilizar para programar micros en general, pero si el lenguaje que utilizas es el C.

En Microchip, para comprovar si algo es cero o no mira la instruccón decfsz, fsz...en asm para PIC hay varias.

PD: Creo que acabarías antes programando en C, el 70% de tus problemas se esfumarán.
#804
Bueno, voy a poner un poco de orden, por lo que entiendo vas a utilizar 3 pilas de 1.5V, dime que tensión requiere el led y que corriente y te pongo el montaje. Todo dependerá de lo que requiera el led ya que éste necesitará una corriente para funcionar.


Por cierto, mejor utiliza una pila de "petaca" de 5 volts, de esas con forma cuadrada. Lo digo porque las pilas de 1.5 la corriente que dan es pequeña y ponerlas en serie es un rollo.

Bueno, dínos las especificaciónes del led y podrémos resolver la duda.
#805
edgarpruneda, las bios són unas configuraciónes que tiene el ordenador a nivel de software y sobre todo  hardware, para acceder a ellas, al encenderse el ordenador en una de las pantallas de carga (antes de que cargue windows) te dira algo similar a :

- Para entrar en la configuración presione F12.
- Para entrar en las bios presione F12.

En ese momento presionas la tecla que te diga y entrarás en las bios, según el modelo puede variar ya que podría ser F2, SUPR...es fijarse que botón te pide.

Seguro que algúna vez n tu vida has visto la pantalla de las bios, es de color azul y segun el ordenador puede varias el orden de las opciónes pero siempre tiene mas o menos las mismas.

#806
Yo con 14 años aprendí Pascal y cogí un buen nivel. De hecho en la Universidad en programación no tube ningún tipo de problema.

Puedes empezar, no hay problema, la programación se trata de 90% pensar - 10% saber programar. Si puedes pensar podrás programar. El resto es práctica que es la parte mas importante de todas.
#807
Que mas dá cual úse, lo ejecutará en su ordenador y estos todos funcionan igual, un exe conecta a otro exe, fin de la história.

Un troyano es también una HAR pero que se le suele dar un mal uso, pero dándole un buen úso uno mismo funciona bien.
#808
Hay un pequeño error de concepto, en PIC el direccionamiento de valores a puertos hazlo así, a ver si funciona:

movlw b'00000001'
movwf PORTB


En teoria ese fragmento deberia sacar 00000001 por el puerto B, Atmel y Microchip sus ensambladores son distíntos y se usan de diferente forma. El ej que has puesto es una fusión entre atmel y microchip xd. Prueba como te puesto.

El equivalente de B de atmel en PIC seria W.
#809
Porque no pruebas de clickar encima y pones ejecutar como administrador? Prueva eso.
#810
Vale, un solo pin, pues sencillo, en atmel seria:

PORTB.0 equ {direccion que sea}
PORTB.0 = 1

o puedes hacer:

PORTB equ {dirección que sea}
PORTB = 00000001b

Las dos cosas són equivalentes. Si, en Atmel que es la arquitectura 8086, por eso el asm es diferente ligeramente los MOV son MOV, no se usa MOVW o MOVF...en ese sentido es mas sencillo aunque la programación de atmels luego se complica mas.

Por eso, cuando descubrí el C dije adiós al Assembler xd.

Tema rotación: Para atmel hay dos instrucciones de rotación de bits de un puerto, para PIC's se utiliza las instrucciónes:

rrf -> Rota a la derecha 1 bit.

ej: si el puerto valia 00000001 ahora vale 100000000

rlf --> Rota a la izquierda un bit.

ej: si puerto vale 00000001 ahora vale 00000010



En atmel:

mov PORTB, R1

El contenido de R1 pasa al puerto, no al revés, es igual que los PIC.