Menú English Ukrainian Ruso Inicio

Biblioteca técnica gratuita para aficionados y profesionales. biblioteca técnica gratuita


ENCICLOPEDIA DE RADIOELECTRÓNICA E INGENIERÍA ELÉCTRICA
biblioteca gratis / Esquemas de dispositivos radioelectrónicos y eléctricos.

Programadores principiantes de microcontroladores PIC. Enciclopedia de radioelectrónica e ingeniería eléctrica.

biblioteca técnica gratuita

Enciclopedia de radioelectrónica e ingeniería eléctrica. / Radioaficionado principiante

Comentarios sobre el artículo Comentarios sobre el artículo

[se produjo un error al procesar esta directiva]

Basado en mi propia experiencia al comenzar a estudiar programación de microcontroladores, intentaré dar algunos consejos prácticos sobre cómo escribir programas en ensamblador. Todos los ejemplos de programación a continuación se dan en relación a los controladores Pic de la familia mediana de Microchip, como los más adecuados para iniciar el desarrollo, debido a su arquitectura relativamente simple y un sistema simple de comandos en ensamblador.

Los programas propuestos se pueden utilizar en forma de macros listas para usar (subrutinas completas) No están vinculados a un controlador específico, por lo que los datos de las hojas de datos deben tenerse en cuenta al aplicar.

1. Aplicación de interrupciones por desbordamiento del temporizador TMR0 (RTCC)

Tomemos la frecuencia del reloj - Ftact. = 4,096 MHz (cuarzo estándar). Entonces el tiempo de ciclo será tc = 1 / Ftact. * 4 = 0,97656 µs

INI_TMR; inicialización del modo de interrupción desde RTCC
bsf ESTADO,RP0 ; elegir banco 1
mover b'00000100'
OPCIÓN movwf; prescaler para RTCC 1 : 32
bcf ESTADO,RP0 ; banco 0
mover b'10100000'
movwf INTCON; Interrupción RTCC habilitada
movlw .96 ; subiendo el número preliminar 96 a RTCC
movwfTMR0

Obtenga el tiempo de interrupción:
ti = tc * 32 * (256 - 96 = 160)
ti = 0,97656 * 32 * 160 = 5 µs = 000 ms

Ahora, si ingresa un bucle infinito en cualquier programa (el llamado bucle de espera de interrupción) y traduce el final del programa a este bucle, obtendremos una referencia de tiempo de 5 ms y después de la interrupción, el programa regrese a la dirección indicada por el vector de interrupción (más a menudo es 04h). Para qué se puede usar: vea a continuación.

Por lo tanto:

;
organización 0
COMENZAR ; inicio del programa después
; encendido
organizacion 04h ; y esta es la dirección del vector de interrupción, en el que
principal ; el programa principal se ejecutará
;
COMENZAR ; esto suele ser donde la iniciación obligatoria
INI_TMR; cialización de puertos, modos, registros, etc.
INI_PUERTOS
loops
goto-bucle; y esto es un bucle sin fin
;------------------------------------------------- -

principal
; Luego viene el cuerpo del programa principal,
; en el que es necesario crear una rutina de servicio de interrupción desde RTCC,
; llamado por el comando CALL:

ServTMR
btfsc INTCON,RTIF ; verifique el indicador de activación de interrupción RTCC y
llamar a SET_TMR; en caso afirmativo, vuelva a inicializar TMR0
devolver; si "no" - volver al lugar de la llamada ServTMR en
; programa principal principal
;
SET_TMR movlw .96
movwfTMR0; sube el número 96 de nuevo
bcf INTCON,RTIF ; restablecer la bandera de activación
recuperar regresar con interrupción habilitada a ServTMR, y
; luego al programa principal main

Un ejemplo de uso de una interrupción RTCC para recibir un segundo pulso en una de las salidas, digamos, puerto B - RB0: Use el registro Rsec, que debe declararse previamente en el campo de dirección de los registros de trabajo.

Así, a la salida del puerto RB0, el nivel de la señal cambiará de '0' a '1' cada segundo.

En los registros del controlador, la información suele estar en forma binaria (en código binario). Pero a menudo es necesario obtener información en forma binaria - decimal (código BCD), por ejemplo, para controlar un indicador de siete dígitos y siete segmentos.

Consideremos ejemplos de conversiones del código binario b2 a BCD binario-decimal y viceversa.

En un registro de 8 bits, puede escribir un número binario de 0 a 255 (de b'00000000' a b'11111111'). Convirtamos un número binario en tres dígitos de un código binario - decimal - "centenas", "decenas" y "unidades". Para ello, utilizaremos los siguientes registros, que deberán declararse previamente en el campo de dirección de los registros de trabajo:

Rbin: registro para almacenar un número en código binario b2
Rhan: registra "cientos" de código BCD
Rdec - registra "decenas" del código BCD
Rsim - Registro "uno" del código BCD

Las transformaciones se realizan utilizando las operaciones de restar los números 100 y luego 10, contando el número de restas positivas.

FORMULARIO_1S; en cada ciclo, y dura para la interrupción RTCC
incf Rsec,w ; 5 ms, aumente el registro Rsec en 1 hasta el número 200
xorlw .200 ; (5 ms * 200 = 1 segundo)
btfsc ESTADO,z
ir a SALIDA_PUERTO; con Rsec = 200 bandera z = '1' y transición a control
; pin RB0 del puerto B
devolver; volver al programa principal principal
;
SALIDA_PUERTO btfss PUERTOB,0 ; comprobar el estado de la salida RB0
ir a SALIDA_ENCENDIDO; si RB0 = '0' entonces se establece en '1'
bcf PUERTOB,0 ; de lo contrario, establecer en '0'
ir a principal; volver al programa principal
;
SALIDA_ON bsf PUERTOB,0 ; establecer RB0 = '1'
ir a principal

CON_100 movlw .100 ; reste 100 de Rbin y verifique que
subwfRbin,w; el resultado no es negativo. Bandera 'c' = 1 cuando
btfss ESTADO,c ; resultado > o = 0, y 'c' = 0 cuando < 0
ir a CON_10
incfRhan,f ; contando "cientos"
movwfRbin; el resultado de la resta se almacena primero en un registro
ir a CON_100; batería y solo luego regresar a Rbin
; para no perder el resto con un negativo
; resultado de la resta
CON_10 movlw .10 ; define de manera similar "decenas"
subwf Rbin, w
btfss ESTADO,c
ir a end_con
incfRdec,f
movwf rbin
ir a CON_10;
final_con
movf Rbin,w
movwfRsim; después de las restas, ingresamos el resto en "unidades"
;continuar la ejecución del programa

Conversión inversa de BCD - código a b2. Usamos los mismos registros Rhan, Rdec, Rsim donde se encuentra el número en el código BCD, los registros RbinH son el orden superior y RbinL - el orden inferior para los números (> 255) en el código b2 y los registros auxiliares RM1 - "multiplicador ", RM2 - "multiplicador". Para convertir BCD a b2, debe multiplicar "centenas" por 100, "decenas" por 10 y sumar todo junto con "unidades" y teniendo en cuenta la transferencia al orden superior si es necesario. Para la multiplicación, usamos la operación de suma.

B2X_100 movlw .99 ; convertir "cientos"
movwfRM2; multiplicador = número de adiciones (100) menos uno
movfRhan,w
movwfRM1; multiplicando = "centenas"
loopX100 addwf RM1,w btfsc ESTADO,c ; verifique la transferencia al dígito más alto
incf RbinH,f ; si hay transferencia
decfsz RM2,f ; controlar el número de adiciones
ir a loopX100
movwf RbinL ; el resultado de la suma se ingresa en el registro ml. descargar
;
B2X_10 movlw .9 ; convertir "decenas"
movwfRM2; multiplicador = número de adiciones (10) menos uno
movfRdec,w
movwfRM1; multiplicando = "decenas"
loopX10 addwf RM1,w ; aquí se puede omitir la transferencia, porque resultado
decfsz RM2,f ; siempre < 255
ir a loopX10
addwfRbinL,f; suma el resultado de convertir "decenas"
btfsc ESTADO,c ; teniendo en cuenta la posible transferencia en dígitos
incf
RbinH,f
movfRsim,w
addwfRbin,f; agregue "unidades" teniendo en cuenta la posible transferencia
btfsc ESTADO,c
incfRbinH,f

Fin de las transformaciones y posterior ejecución del programa. En los registros RbinL y RbinH obtuvieron un número de 16 bits en código b2.

Para realizar la operación aritmética de división, por analogía con la multiplicación comentada anteriormente, se utiliza la operación de resta. Supongamos que necesitamos dividir el número ubicado en los registros RHsum (dígitos más altos) y RLsum (dígitos más bajos) - por un divisor (tomemos un divisor no > 255) ubicado en el registro Rdel.

El resultado se ingresará en los registros RHrez y RLrez (dígitos altos y bajos, respectivamente):

OP_DEL
Rdel movf,w
subwf Rlsuma,w
btfss ESTADO,c ; comprobar si el resultado es negativo?
ir a DEF_carry; si "sí", entonces hacemos un préstamo del art. descargar
incf RLrez,f ; contar el número de sustracciones, teniendo en cuenta
btfsc ESTADO,c ; posible ascenso a nivel superior
incf RHRez,f
movwf RLsum; restaurar el resto para no perder
ir a OP_DEL; con un resultado negativo de la resta
;
DEF_llevar
mover 0h
xorwf sumaRH,w ; ¿Todos tomaron de la categoría senior a la junior?
btfsc ESTADO,z ; si "sí", es decir RHdel = 0 y negado en OP_DEL
ir a SALIDA_DEL; gato. resultado - fin de la división y salida
decf sumaRH,f ; si "no" - un préstamo de la categoría senior y pro-
incf RLrez,f ; debemos continuar
btfsc ESTADO,c ; comprobar la necesidad de pasar a la categoría senior
incf RHRez,f
ir a OP_DEL

Autor: Vladimir D., degvv@mail.ru; Publicación: cxem.net

Ver otros artículos sección Radioaficionado principiante.

Lee y escribe útil comentarios sobre este artículo.

<< Volver

Últimas noticias de ciencia y tecnología, nueva electrónica:

Cuero artificial para emulación táctil. 15.04.2024

En un mundo tecnológico moderno donde la distancia se está volviendo cada vez más común, mantener la conexión y la sensación de cercanía es importante. Los recientes avances en piel artificial realizados por científicos alemanes de la Universidad del Sarre representan una nueva era en las interacciones virtuales. Investigadores alemanes de la Universidad del Sarre han desarrollado películas ultrafinas que pueden transmitir la sensación del tacto a distancia. Esta tecnología de punta brinda nuevas oportunidades de comunicación virtual, especialmente para quienes se encuentran lejos de sus seres queridos. Las películas ultrafinas desarrolladas por los investigadores, de sólo 50 micrómetros de espesor, pueden integrarse en textiles y usarse como una segunda piel. Estas películas actúan como sensores que reconocen señales táctiles de mamá o papá, y como actuadores que transmiten estos movimientos al bebé. El toque de los padres sobre la tela activa sensores que reaccionan a la presión y deforman la película ultrafina. Este ... >>

Arena para gatos Petgugu Global 15.04.2024

Cuidar a las mascotas a menudo puede ser un desafío, especialmente cuando se trata de mantener limpia la casa. Se ha presentado una nueva e interesante solución de la startup Petgugu Global, que facilitará la vida a los dueños de gatos y les ayudará a mantener su hogar perfectamente limpio y ordenado. La startup Petgugu Global ha presentado un inodoro para gatos único que puede eliminar las heces automáticamente, manteniendo su hogar limpio y fresco. Este innovador dispositivo está equipado con varios sensores inteligentes que monitorean la actividad del baño de su mascota y se activan para limpiar automáticamente después de su uso. El dispositivo se conecta al sistema de alcantarillado y garantiza una eliminación eficiente de los residuos sin necesidad de intervención del propietario. Además, el inodoro tiene una gran capacidad de almacenamiento, lo que lo hace ideal para hogares con varios gatos. El arenero para gatos Petgugu está diseñado para usarse con arena soluble en agua y ofrece una gama de arena adicional ... >>

El atractivo de los hombres cariñosos. 14.04.2024

El estereotipo de que las mujeres prefieren a los "chicos malos" está muy extendido desde hace mucho tiempo. Sin embargo, una investigación reciente realizada por científicos británicos de la Universidad de Monash ofrece una nueva perspectiva sobre este tema. Observaron cómo respondieron las mujeres a la responsabilidad emocional y la voluntad de los hombres de ayudar a los demás. Los hallazgos del estudio podrían cambiar nuestra comprensión de lo que hace que los hombres sean atractivos para las mujeres. Un estudio realizado por científicos de la Universidad de Monash arroja nuevos hallazgos sobre el atractivo de los hombres para las mujeres. En el experimento, a las mujeres se les mostraron fotografías de hombres con breves historias sobre su comportamiento en diversas situaciones, incluida su reacción ante un encuentro con un vagabundo. Algunos de los hombres ignoraron al vagabundo, mientras que otros lo ayudaron, como comprarle comida. Un estudio encontró que los hombres que mostraban empatía y amabilidad eran más atractivos para las mujeres en comparación con los hombres que mostraban empatía y amabilidad. ... >>

Noticias aleatorias del Archivo

Sistema de detección y neutralización de asteroides peligrosos para la Tierra 30.04.2022

China planea en los próximos años crear un sistema para proteger a la Tierra de las colisiones con asteroides que representan una amenaza para el planeta. Así lo anunció Wu Yanhua, subjefe de la Administración Nacional del Espacio de China (CNSA).

"Al final del 14° Plan Quinquenal, en 2025-2026, intentaremos comenzar a probar tecnología para monitorear asteroides que representan una amenaza para la Tierra. Con su ayuda, llevaremos a cabo una colisión (con un asteroide) , lo que conducirá a un cambio en su órbita", dijo el funcionario en una entrevista con la Televisión Central de China (CCTV). Según él, en el marco del proyecto futuro, se planea crear un sistema efectivo basado en tierra y en el espacio para catalogar, monitorear y alertar sobre asteroides que representan una amenaza para el planeta.

Además, los expertos chinos se han dado a la tarea de desarrollar tecnologías que eviten colisiones con objetos espaciales peligrosos. "Gracias a esto, la humanidad realmente contrarrestará la amenaza que representan los asteroides para la Tierra", dijo el subdirector de CCTV. Según la NASA, hay más de 1,11 millones de asteroides identificados en el sistema solar, pero en realidad hay muchos más.

Los impactos de asteroides son uno de los desastres naturales más graves, ya que el nivel de destrucción que pueden causar es mayor que cualquier otro. El daño que puede causar una colisión con un asteroide depende de una serie de factores, especialmente de su tamaño. Los expertos de la NASA creen que los asteroides con un diámetro de 140 mo más son un problema grave para la Tierra.

Según una investigación del Instituto de Ciencias Davidson, el brazo educativo del Instituto de Ciencias Weizmann en Rehovot, Israel, un asteroide con un diámetro de más de 140 metros en caso de colisión con la Tierra se liberará al menos mil veces. más energía que la de la detonación de la primera bomba atómica. Sin embargo, incluso los asteroides pequeños pueden causar daños significativos.

Otras noticias interesantes:

▪ Agente anticongelante efectivo

▪ ultrasonido para diabetes

▪ Procesador Fotónico

▪ Nanodiamantes para LED y Semiconductores

▪ No se necesitan aditivos antimicrobianos

Feed de noticias de ciencia y tecnología, nueva electrónica

 

Materiales interesantes de la Biblioteca Técnica Libre:

▪ LED de sección del sitio web. Selección de artículos

▪ artículo E hice una buena obra en medio del mal reinante. expresión popular

▪ artículo ¿Por qué el as de cartas pasó del uno a la carta más alta? Respuesta detallada

▪ artículo Aplicación de recubrimientos metálicos cuando se trabaja con sales de cianuro. Instrucción estándar sobre protección laboral

▪ artículo Termómetro de alta precisión con sensor DS18S20. Enciclopedia de radioelectrónica e ingeniería eléctrica.

▪ artículo Frutas corriendo. secreto de enfoque

Deja tu comentario en este artículo:

Nombre:


Email opcional):


comentar:





Todos los idiomas de esta página

Hogar | Biblioteca | Artículos | Mapa del sitio | Revisiones del sitio

www.diagrama.com.ua

www.diagrama.com.ua
2000 - 2024