Preguntas con etiqueta '8051'

1
respuesta

¿qué valor se escribe en los pines del microcontrolador si envío el valor como tipo de carácter en el programa Embedded c?

#include<reg51.h> sbit sw=P1^0; sbit led=P1^1; void write(unsigned char m); void delay(unsigned char k); void main(){ while(1){ delay(60); sw=1; led=0; if(sw==1){...
1
respuesta

¿Cómo hace un banco de registro de 8 bits con 8 registros de 8 bits cada uno?

En 8051 , hay 128 bytes de RAM . De los cuales, 32 están reservados para registros en forma de bancos, 8 registros para cada banco. Cada banco se direcciona desde, por ejemplo, 00 a 07 , 08 a 0F , etc., es d...
1
respuesta

___ instrucción qstnhdr ___ en el ensamblaje 8051 ______ qstntxt ___

Tengo problemas para entender qué hace esta instrucción Número de MOV, # (4 + 3) SHL (4) SHR (4) Google me dio este "operand1 SHL operand2" que es diferente a la instrucción que escribí anteriormente. ¿Alguien puede por favor explicármelo? También tengo problemas para entender qué hace este código. %code%

    
______ answer337080 ___

Los registros en el 8051 se asignan a las primeras direcciones de la RAM interna, de este modo:

0x00 - > 0x07 --- > Los registros R0 a R7 del conjunto de registros 0

0x08 - > 0x0F --- > Los registros R0 a R7 del conjunto de registros 1

0x10 - > 0x17 --- > Los registros R0 a R7 del conjunto de registros 2

0x18 - > 0x1F --- > Los registros R0 a R7 del conjunto de registros 3

Dado que muchas de las instrucciones 8051 pueden abordar directamente la RAM interna, es posible componer una instrucción MOV que pueda mover datos a uno de los registros utilizando su dirección RAM interna correspondiente.

Algunos compiladores o conjuntos de herramientas de lenguaje ensamblador crearán símbolos intrínsecos que especifican direcciones de RAM internas. AR0 es un ejemplo de esto. Es común que AR0 se defina como 0x00 para que haga referencia a la ubicación de la memoria donde el registro R0 se almacena en el conjunto de registros 0. En su ejemplo, la declaración "USANDO 1" dice que se use el conjunto de registros 1 para que cuando la siguiente instrucción "MOV Se encuentra R0, # 1 "y termina almacenando el valor de 1 en la ubicación de la memoria interna 8, mientras que la siguiente instrucción" MOV AR0, # 2 "coloca el valor de 2 en la dirección que representa AR0 (probablemente 0x00).

    
___

Tengo problemas para entender qué hace esta instrucción Número de MOV, # (4 + 3) SHL (4) SHR (4) Google me dio este "operand1 SHL operand2" que es diferente a la instrucción que escribí anteriormente. ¿Alguien puede por favor explicármelo? Tambi...
2
respuestas

___ el programa qstnhdr ___ funciona incluso cuando el tamaño del archivo hexadecimal es mayor que la memoria flash [duplicado] ______ qstntxt ___

Estoy trabajando con el microcontrolador AT89S51 y uso keil para escribir el programa en C. Se produjo un archivo hexadecimal de aproximadamente 4875 bytes, pero la memoria flash del microcontrolador es de solo 4kbytes.

Programé el flash correctamente y el programa también funciona bien.

Me alegra que esté funcionando, pero quiero saber por qué funciona, ya que no hay suficiente espacio en flash para programar mi código en el microcontrolador.

Avísame si necesitas información adicional.

    
______ answer237020 ___

El archivo hex contiene más que los bytes del programa, también contiene información de "control".

Supongo que se parece a esto:

%pre%

Lo que significa que probablemente tenga el "formato de archivo Intel HEX". Puedes encontrar muchas referencias en la red.

Algunas indicaciones:

  • El ":" indica el inicio de la nueva línea y ya indica que no es un archivo hexadecimal puro (para evitar errores).
  • El primer byte (primeros 2 dígitos) indica el tipo de línea de datos que es. Cuando la línea comienza con ": 10", se proporciona una dirección.
  • Al final de la línea hay una suma de comprobación.
  • ...: puede "buscar" fácilmente en Google para el formato Intel Hex

Esto explica por qué su archivo hexadecimal es más grande: los datos adicionales evitan errores. El formato también permite archivos más pequeños que la memoria que está llenando y los datos no necesitan ser contigiosos.

    
______ answer237018 ___

No conozco este tipo de controlador, pero es posible que solo se carguen los primeros 4 KB en la memoria, y no los últimos bytes de su programa. Debería realizar una prueba completa utilizando todas las entradas posibles, podría dejar de funcionar correctamente en algún momento.

    
___

Estoy trabajando con el microcontrolador AT89S51 y uso keil para escribir el programa en C. Se produjo un archivo hexadecimal de aproximadamente 4875 bytes, pero la memoria flash del microcontrolador es de solo 4kbytes. Programé el flash co...
1
respuesta

¿Cómo mostrar los pines ocultos en proteus?

Recientemente estuve diseñando un PCB para mi proyecto usando 89c51. Estoy usando una batería de 12V para hacer funcionar el motor y 7805 para dar 5V a 89c51. Al ir al diseño de ARES para PCB, me di cuenta de que el pin VCC de 89c51 no está cone...
2
respuestas

¿Dónde se encuentra SFR en AT89C51RC2?

Se dice que el microcontrolador AT89C51RC2 tiene 256 B de RAM para datos, 32 kB Flash para programa, 1 kB XRAM y 2 kB BOOT ROM. EláreadedireccionamientodeRAMesde00ha0FFh,quetomalas256B.SFRtienedireccionesde80ha0FFh,loquesignifica127B.¿Dóndees...
1
respuesta

Programando la serie 8051

Como se ve en la figura, la programación del conector DB9 a través del puerto serie 8051 debe ser una tarea bastante fácil Conecte las dos patillas de 8051 a max 232 y luego a DB9 Por lo tanto, el circuito de programación de 8051 no debe cont...
3
respuestas

¿Por qué necesitamos declarar puertos como entrada / salida?

Estoy escribiendo código en lenguaje ensamblador (AT89s51). Cuando veo un programa estándar, los puertos se definen normalmente como entradas o salidas. Pero, sin definirlos parece funcionar bien. ¿Cómo es esto posible?     
1
respuesta

8051 MCU con entrada rápida a la implementación de ISR

Estoy desarrollando un dispositivo de procesamiento de protocolo personalizado basado en MCU. Mi protocolo es algo similar a I2C y utiliza bit bitging en lugar de la implementación de hardware. He hecho un prototipo basado en Atmega328P, princip...
2
respuestas

El contador del programa va hasta el final del código y se reinician 8051

Tengo un MCU 8051 que uso keil para programarlo con C. Mi problema es que el microcontrolador se reinicia al final de algunas funciones mientras deberían volver. Usando un depurador, traté de comprobarlo línea por línea. Y me di cuenta de que...