Questo è un problema di esempio nel mio libro. Supponendo che il pin 5 della porta 4 sia collegato a un amplificatore che pilota un altoparlante, la soluzione è data come,
La frequenza del Do centrale è $$ f = 261.63 \ \ text {Hz} $$ Quindi, il periodo di tempo è, $$ T = \ frac1 {f} = 3822 \ \ mu s $$
Il programma per produrre un'onda quadra con quel periodo è,
LOOP1: OUT 4H; Invia bit all'altoparlante MVI C, 86H; Imposta il conteggio su 134 LOOP2: DCR C; Conto alla rovescia JNZ LOOP2; Conteggio test CMA; Resetta bit 5 NOP; Sintonia fine NOP; Sintonia fine JMP LOOP1; Vai al prossimo mezzo ciclo
Il numero di stati T è dato come, OUT (10), MVI (7), DCR (4), JNZ (10 se vero, altrimenti 7), CMA (4), NOP (4), JMP (10 ).
Con una frequenza di clock di 1 MHz, LOOP2 (per mezzi cicli) funziona per 1912 microsecondi, che è abbastanza vicino. LOOP1 dovrebbe essere eseguito di nuovo inviando il complemento di ciò che era precedentemente nel bit 5 della porta 4. Ma penso che non sia così.
Quando LOOP2 termina, l'accumulatore ha 00H rimasto dal registro C. CMA cambia l'accumulatore in FFH. NOP e JMP non cambiano l'accumulatore. Quindi il LOOP1 itera per il semiciclo successivo, OUT invia il contenuto dell'accumulatore alla porta 4, cioè FFH il cui bit 5 è 1, ogni volta. Quindi non c'è un'onda quadra, è solo un segnale alto. Allora come produce un Do centrale?