Corso di programmazione pi e eprom

Page 29

Lezione 2 passo 4

Lezione 2

Step 4/4 Realizziamo le "Luci in sequenza"

Proviamo ora a fissare i concetti finora appresi rielaborando il source LED.ASM presentato nella prima lezione per realizzare un lampeggiatore sequenziale a quattro led. Il nuovo source modificato si chiamerà SEQ.ASM. Nella file example2.pdf (formato Acrobat Reader 10Kb) viene riportato lo schema elettrico del nuovo circuito, sostanzialmente equivalente al circuito presentato nella prima lezione, con l'unica variante che ora i led collegati sono quattro anziché uno. Le linee di I/O utilizzate sono RB0 per primo led, RB1 per il secondo, RB2 per il terzo ed RB3 per il quarto. Esse vanno quindi configurate tutte in uscita all'inizio del programma cambianto le istruzioni:

movlw 11111110B movwf TRISB in

movlw 11110000B movwf TRISB in cui i quattro bit meno significativi, corrispondenti alle linee RB0,1,2,3 vengono messi a zero per definire tali linee in uscita. Nell'area di memoria del REGISTER FILE (che nel source inizia con la direttiva ORG 0CH) oltre ai due byte referenziati dalla label Count, riserviamo un ulteriore byte con label Shift che utilizzeremo per determinare la sequenza di accensione dei led. La direttiva da inserire è:

Shift

RES

1

Prima di eseguire il ciclo principale (label MainLoop) inizializiamo il nuovo registro Shift a 00000001B con le seguenti istruzioni istruzioni:

movlw movwf

00000001B Shift

A questo punto, nel ciclo principale del nostro programma, ci occuperemo di trasferire il valore memorizzato nel registro Shift sulla Porta B ottenendo quindi l'accensione del primo led, con le seguenti istruzioni:

movf movwf

Shift,W PORTB

quindi di effettuare lo shift a sinistra del valore contenuto in Shift di un bit, con le seguenti istruzioni:

bcf rlf

STATUS,C Shift,F

la prima istruzione serve ad azzerare il bit CARRY del registro di stato STATUS che verrà analizzato nelle lezioni successive. L'istruzione RLF Rotate Left F through Carry (ruota a sinistra attraverso il bit di carry) sposta di un bit verso sinistra il valore memorizzato nel registro Shift inserendo nella posizione occupata dal bit 0 il valore del bit di Carry (che come già detto andremo a vedere in seguito). Per far si che il bit inserito sia sempre zero viene eseguita prima della RLF l'istruzione BCF STATUS,C per azzerare questo bit. A questo punto il registro Shift varrà 00000010B, quindi, al ciclo successivo, una volta trasferito tale valore sulla port B

file:///C|/temp/borrar/pbe/italiano/less2/passo4.htm (1 of 2) [13/10/1999 6:26:04 PM]


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.