codigo atmel
TRANSCRIPT
UNIVERSIDAD “FERMIN TORO”VICERRECTORADO ACADEMICO
FACULTAD DE INGENIERIACABUDARE EDO. LARA
CÓDIGO
MICROPROCESADOR
ATMEL
Alumna:María Daniela Álvarez
CI: 17784337
Cabudare, Junio 2015
Tarea código microprocesador atmel at89c51/52Código 1
El programa deberá contar en binario del 0 al 31 haciendo uso de uno de los puertos del micro para mostrar el numero en cuestión, deberá tener una pausa entre número y numero para poder apreciar el cambio entre uno y otro y al llegar al tope, es decir el numero 31 deberá devolverse de manera descendente hasta llegar a 0 para repetir el proceso nuevamente de manera infinita.
ORG 00H
MOV A,#0
SIGUE:
MOV P1,A
CALL RET1S
INC A
CJNE A,#32,SIGUE
MOV A,#30
SIGUE2:
mov P1,A
CALL RET1S
DEC A
CJNE A,#255,SIGUE2
MOV A,#1
JMP SIGUE
RET1S:
MOV R7,#5
RE43:
MOV R6,#250
RE42:
MOV R5,#250
DJNZ R5,$
DJNZ R6,RE42
DJNZ R7,RE43
RET
END
Código 2
El estudiante deberá realizar un programa para un micro atmel at89c51/52 que simule la siguiente situación:
En un edificio de 3 pisos se desea instalar un ascensor que será controlado de manera electrónica por un microcontrolador, se debe mostrar un menú en una pantalla LCD en el cual se observan los pisos enumerados del 1 al 3, por medio de un teclado el usuario podrá ingresar el piso al cual se dirige y por medio de unos led se mostrara el piso en el cual se encuentra el ascensor. Tomar en cuenta para el diseño del programa el funcionamiento real del ascensor, (si está en el piso 3 y se marca el 1 este deberá pasar primer por el 2 y si se marca el piso en el cual se encuentra actualmente el mismo no deberá moverse.
org 00h
jmp config8
org 03h
jmp piso0
org 0bh
jmp piso2
org 013h
jmp piso1
config8:
mov a,#38h
call inst
mov a,#06h
call inst
mov a,#0ch
call inst
setb pi0
setb pi1
setb pi2
mov ie,#10000111B
mov tmod,#00000110b
mov th0,#0ffh
mov tl0,#0ffh
mov tcon,#00010101b
mov p1,#0ffh
principal:
setb lpi0
call planta0
s1: setb lpi0
setb pi0
jnb pi1,s2
jnb pi2,s2
jmp s1
s2: call sobrepeso
call cerrando
call subiendo
jb pi1,s3
call planta1
call abriendo
s3: setb lpi1
call planta1
s4: setb pi1
setb lpi1
jnb pi2,ss1
jnb pi0,bajando1
jmp s4
ss1: jb bn,ss2
call sobrepeso
call cerrando
ss2: call subiendo
call planta2
call abriendo
s6: setb lpi2
call planta2
loop2:
setb pi2
setb lpi2
jnb pi1,bajando0
jnb pi0,bajando0
jmp loop2
bajando0:
call sobrepeso
call cerrando
call bajando
jb pi1,s7
call planta1
call abriendo
s7: setb lpi1
call planta1
bajando1:
setb pi1
setb lpi1
jnb pi0,s9
jnb pi2,s4
jmp bajando1
s9: jb bn,ss3
call sobrepeso
call cerrando
ss3: call bajando
call planta0
call abriendo
jmp principal
sobrepeso:
jb speso,sli
call borrar
mov dptr,#sobrep
call lazo_palabra
jnb speso,$
sli: ret
borrar: mov a,#01h
call inst
ret
subiendo:
call borrar
mov dptr,#msj1
jmp mostrar
bajando:
call borrar
mov dptr,#msj2
jmp mostrar
abriendo:
clr bn
call borrar
mov dptr,#msj3
call lazo_palabra
call ret3s
call borrar
mov dptr,#msj9
jmp mostrar
cerrando:
setb bn
call borrar
mov dptr,#msj4
call lazo_palabra
call ret3s
call borrar
mov dptr,#msj8
jmp mostrar
planta0:
call borrar
mov dptr,#msj5
jmp mostrar
planta1:
call borrar
mov dptr,#msj6
jmp mostrar
planta2:
call borrar
mov dptr,#msj7
mostrar:call lazo_palabra
call ret3s
ret
piso0: clr pi0
clr lpi0
reti
piso1: clr pi1
clr lpi1
reti
piso2: clr pi2
clr lpi2
reti
; '123456789abcdef'
msj1: db ' Subiendo...',00h
msj2: db ' Bajando...',00h
msj3: db 'Abriendo puerta',00h
msj4: db 'Cerrando puerta',00h
msj5: db ' Planta baja',00h
msj6: db ' Piso 1',00h
msj7: db ' Piso 2',00h
msj8: db 'Puerta cerrada!',00h
msj9: db 'Puerta abierta!',00h
sobrep: db 'Error sobrepeso',00h
config8:
mov a,#38h
call inst
mov a,#06h
call inst
mov a,#0ch
call inst
ret
lazo_palabra:
MOV A,#0
MOVC A,@A+Dptr
JZ salir
Call DATO
INC Dptr
JMP lazo_palabra
salir: ret
INST: CLR P2.1
JMP SIGUE
DATO: SETB P2.1
SIGUE: MOV P0,A
SETB P2.0
CALL RET1MS
CLR P2.0
RET
RET3S:
MOV R6,#22
RET2: CALL RET100MS
DJNZ R6,RET2
RET
RET1MS: MOV R4,#50D
RE23: MOV R5,#20D
DJNZ R5,$
DJNZ R4,RE23
RET
RET100MS:
MOV R4,#255D
RE13: MOV R5,#255D
DJNZ R5,$
DJNZ R4,RE13
RET
lpi0 equ p1.0
lpi1 equ p1.1
lpi2 equ p1.2
speso equ p1.7
pi1 equ 20h.0
pi2 equ 20h.1
pi0 equ 20h.2
bn equ 20h.3
End