Esercitazione sui registri:
Esempio di riempimento di blocco di memoria
org 8200h
;Azzeramento di un blocco di memoria
mov r1,#30
mov r0,#2
ciclo1:
mov @r0,#0
inc r0
djnz r1,ciclo1
end
Esercitazione sui banchi di
registri
org 8200h
;Uso dei registri R e relativi banchi
;-----Banco 0
clr rs0
clr rs1
mov r0,#1
mov r1,#2
mov r2,#3
mov r3,#4
mov r4,#5
mov r5,#6
mov r6,#7
mov r7,#8
;-----Banco 1
setb rs0
clr rs1
mov r0,#1
mov r1,#2
mov r2,#3
mov r3,#4
mov r4,#5
mov r5,#6
mov r6,#7
mov r7,#8
;-----Banco 2
clr rs0
setb rs1
mov r0,#1
mov r1,#2
mov r2,#3
mov r3,#4
mov r4,#5
mov r5,#6
mov r6,#7
mov r7,#8
;-----Banco 3
setb rs0
setb rs1
mov r0,#1
mov r1,#2
mov r2,#3
mov r3,#4
mov r4,#5
mov r5,#6
mov r6,#7
mov r7,#8
end
Un semplice semaforo con tre LED

org 8200h
;----Semaforo-------------------------------------------------
Rosso = p1.0
Giallo = p1.1
Verde = p1.2
setb Rosso
setb Verde
setb Giallo
ciclosem:
clr Rosso ;Accende rosso
mov r4,#10 ;aspetta 10 secondi
call ritsecs
setb Rosso ;Spegne rosso
clr Verde ;Accende verde
mov r4,#7
call ritsecs
clr Giallo ;Accende giallo
mov r4,#3
call ritsecs
setb Verde ;Spegne verde
setb Giallo ;Spegne giallo
jmp ciclosem
;-----------------------------------------------------------------
ritsecs:
lrs2:
mov r5,#0
mov r6,#0
mov r7,#4
lrs1:
djnz r5,lrs1
djnz r6,lrs1
djnz r7,lrs1
djnz r4,lrs2
ret
end

Con l'hardware dato nello schema
in figura realizzare un programma in assembler 8051 in grado di commutare lo
stato del Led (Acceso/Spento) ad ogni pressione del pulsante prevenendo il
problema dei 'rimbalzi'.
;Esercizio Nro 1 ;Accensione spegnimento LED da pulsante Led = p1.0 Puls = p1.1 org 8200h setb Led setb Puls noprem: jb Puls,noprem cpl Led call antirimb prem: jnb Puls,prem call antirimb jmp noprem antirimb: mov r0,#02 lrit djnz r0,lrit ret end
;Esercizio Nro 2 ;Accensione spegnimento LED da pulsante e spegnimento automatico dopo 5 secondi Led = p1.0 Puls = p1.1 Cont = 0 org 8200h setb Led setb Puls noprem: call spegled jb Puls,noprem cpl Led jb Led,spento mov Cont,#5 spento: call antirimb prem: jnb Puls,prem call antirimb jmp noprem antirimb: mov r0,#02 lrit djnz r0,lrit ret ;---------------------------------------------------------------------------- spegled: jb Led,USpeLed mov a,r0 jnz dcsec setb Led ret dcsec: dec r0 call ritsec USpeLed: ret ;---------------------------------------------------------------------------- ritsec: mov r5,#0 mov r6,#0 mov r7,#4 lrs1: jnb Puls,Ers djnz r5,lrs1 djnz r6,lrs1 djnz r7,lrs1 Ers: ret end