; lampeggio.htm ; Stefano Salvi - 15/8/02 ; ; Fa' lampeggiare il LED giallo connesso a P1.2 ; .org 8050h ; Locazione di inizio e caricamento del programma ; programma principale (c'e' solo quello) ; clr P1.2 ; Inizialmente accende il LED ; lp1: ; Ciclo Programma ; ; Ritardo: ; Con il quarzo a 1059200 Hz, l'8051 esegue 921600 cicli al secondo ; Se voglio 5 lampeggi al secondo, devo avere un ritardo di 184320 cicli. ; Ipotizzando di avere un' 'operazione base' di 4 cicli, 240 ripetizioni di ; questa operazione porteranno ad impiegare 240*4 = 960 cicli totali. ; Se ora ripeteremo qesto ritardo base per 192 volte, otterremo 960*192=184320 ; cicli int otale (non contando i 4 cicli aggiuntivi per ripetere il ritardo ; base, pari a 192*4=768) mov R1,#192 ; 192 ripetizioni di un ritardo base lp2: ; Ciclo Esterno mov R0,#240 ; 200 ripetizioni di piccolo ritardo (2 nop) lp3: ; Ciclo Interno nop ; operazione nulla - circa un micorsecondo (uS) nop ; operazione nulla - circa un micorsecondo (uS) djnz R0,lp3 ; Ripete 'nop,nop' (ci mette circa altri 2 uS) djnz R1,lp2 ; ripete il ritardo precedente (200 * 3 -> 600 uS) ; cpl P1.2 ; Commuta il LED (spegne se acceso, accende se spento) sjmp lp1 ; loop infinito ; .end