Este es un problema de ejemplo en mi libro. Suponiendo que el pin 5 del puerto 4 está conectado a un amplificador que las unidades de un altavoz, la solución está dada como
La frecuencia de centro C es $$f=261.63\ \text{Hz}$$ Así, el período de tiempo, $$T=\frac1{f}=3822\ \mu s$$
El programa para producir una onda cuadrada con ese período,
LOOP1: OUT 4H ;Send bit to speaker
MVI C,86H ;Set count to 134
LOOP2: DCR C ;Count down
JNZ LOOP2 ;Test count
CMA ;Reset bit 5
NOP ;Fine tune
NOP ;Fine tune
JMP LOOP1 ;Go for next half cycle
El número de T de los estados es dada como(10), MVI(7), DCR(4), JNZ(10 si es true, de lo contrario 7), CMA(4), NOP(4), JMP(10).
Con una frecuencia de reloj de 1 MHz, LOOP2(para la mitad de los ciclos) se ejecuta para 1912 microsegundos, que es lo suficientemente cerca. LOOP1 se debe ejecutar de nuevo el envío de un complemento de lo que estaba anteriormente en el bit 5 del puerto 4. Pero creo que no.
Cuando LOOP2 extremos, el acumulador se ha 00H a la izquierda de C registro. CMA cambios en el acumulador a FFH. NOP y JMP no cambiar el acumulador. Entonces, la LOOP1 repite para el siguiente medio ciclo, sents contenido del acumulador al puerto 4, yo.e, FFH cuyo bit 5 es 1, cada vez. Así que no es una onda cuadrada, es sólo una señal de alto. Entonces, ¿cómo se producen una media de C?