Red de conocimiento informático - Conocimiento sistemático - Máxima puntuación, me gustaría pedir consejo sobre el programa del microcontrolador C. Tengo muchas preguntas sobre cómo configurar el valor inicial de la sincronización.

Máxima puntuación, me gustaría pedir consejo sobre el programa del microcontrolador C. Tengo muchas preguntas sobre cómo configurar el valor inicial de la sincronización.

Pregunta 1: ¿Por qué 16 ms corresponden a 16000?

Bajo el oscilador de cristal de 12MHz, la frecuencia obtenida por la CPU es 1M, porque el microcontrolador 51 tiene un divisor de frecuencia interno de doce. Entonces el ciclo de reloj correspondiente es 1us y 16000us es 16ms. Es decir, se producirá un desbordamiento después de 16000 ciclos. Si su programa tiene interrupciones programadas e interrupciones globales, se producirá una interrupción del temporizador. Pero hay algo mal en la forma en que lo escribes en el Programa 1. Debería ser

TH0 = (-16000/256);

TL0 = (-16000%256);

o

TH0 = (65536-16000)/256;

TL0 = (65536-16000)%256;

Pregunta 2: ¿Por qué los ocho bits superiores deben dividirse entre 256 y el Los ocho bits inferiores deben dividirse en el resto.

El microcontrolador 51 es un microcontrolador de ocho bits y los registros internos son todos de ocho bits (excepto DPTR), por lo que los datos de dieciséis bits deben almacenarse en dos registros de ocho bits. En el modo de trabajo 1 del temporizador 0, el microcontrolador 51 es un temporizador de dieciséis bits, por lo que TH0 se usa para almacenar los ocho bits superiores de datos de sincronización y TL0 se usa para almacenar los ocho bits de datos inferiores.

Dividir un número de dieciséis dígitos por 256 dará como resultado los ocho dígitos superiores del número, y luego tomando el resto de 256, el resultado serán los ocho dígitos inferiores del número.

Pregunta 3: ¿Por qué los paréntesis son redundantes? ¿Por qué se agrega un signo negativo al valor inicial que vi en otro programa (a continuación)? ¿5000 se refiere a 50 ms?

Está bien no agregarlo, pero eso no significa que sea redundante. Es un hábito de estilo de programación y se recomienda ya que es menos propenso a errores.

La forma de escribir valores negativos es en realidad utilizar el método complemento. El número hexadecimal de -5000 es 0xec78, que es exactamente igual a 65536-5000, por lo que en este programa, -5000/256. =(65536-5000)/256 Sin embargo, no se recomienda esta forma de escribir porque el tipo de datos está relacionado con el compilador y debe recordarse como un hábito. Se recomienda utilizar la forma de escritura (65536-5000)/. 256.

Entonces el problema es el mismo -5000/256=(65536-5000)/256. Se puede ver que el tiempo es de 5 ms. Por supuesto, esto está precedido por el hecho de que el oscilador de cristal. El uso es de 12MHz.

Espero poder ayudarte. Si tienes alguna duda sobre estas tres preguntas, puedes llamarme 236376723