Control de 2 semáforos.
-Uso de contadores
-Subrutina de retardo calibrado a 1 s para oscilador interno de 8 MHz
Diagrama de conexión:
Funcionamiento:
La luz Verde dura 25 segundos.
La Luz Ámbar dura 5 segundos.
La Luz Roja dura 30 segundos.
- Se crea una variable TIME que se incrementa cada 1 segundo (calibrado mediante contadores para un cristal de 10 MHz).
- Se verifica la variable TIME para cambiar el estado de las luces según el siguiente diagrama:
;---------------------------------------------------------
;Autor: LONELY113
; http://lonely113.blogspot.com
;
;Programa de control de 2 semaforos
;Salidas: Puerto D (RD0-RD5)
; RD0=Verde1, RD1=Ambar1, RD2=Rojo1
; RD3=Verde2, RD4=Ambar2, RD5=Rojo2
;Para reloj interno de 8 MHz
;---------------------------------------------------------
.nolist
.include "m8def.inc"
.list
.device atmega8
.def COUNT1=r20
.def COUNT2=r21
.def COUNT3=r22
.def TIME=r4
.def STATE=r17
.org 0x0000
; Inicializacion de Stack
ldi r16,LOW(RAMEND)
out SPL,r16
ldi r16,HIGH(RAMEND)
out SPH,r16
; Fin inicializacion de Stack
; Inicio de programa
ldi r16,0xFF
out DDRD,r16 ; Puerto B como salida
clr TIME
BEGIN: ldi r16,0x00 ; 00 segundos
cp r16,TIME
brbs 1,FIRST
ldi r16,0x19 ; 25 segundos
cp r16,TIME
brbs 1,SECOND
ldi r16,0x1E ; 30 segundos
cp r16,TIME
brbs 1,THIRD
ldi r16,0x37 ; 55 segundos
cp r16,TIME
brbs 1,FOURTH
rjmp FINISH
FIRST: ldi STATE,0x21 ; '00100001'b
out PORTD,STATE
rjmp FINISH
SECOND: ldi STATE,0x22 ; '00100010'b
out PORTD,STATE
rjmp FINISH
THIRD: ldi STATE,0x0C ; '00001100'b
out PORTD,STATE
rjmp FINISH
FOURTH: ldi STATE,0x14 ; '00010100'b
out PORTD,STATE
FINISH: nop
rcall DELAY
rjmp BEGIN
; Subrutinas
DELAY: ldi COUNT1,0xFF ; Retardo de 1 segundo
ldi COUNT2,0xFF
ldi COUNT3,0x29
LOOP: dec COUNT1
brne LOOP
ldi COUNT1,0xFF
dec COUNT2
brne LOOP
ldi COUNT1,0xFF
ldi COUNT2,0xFF
dec COUNT3
brne LOOP
inc TIME
ldi r16,0x3C ; reiniciar en 60 segundos
cp r16,TIME
brne RETURN
clr TIME
RETURN: ret
Archivos de programa:
Descargar
disculpa podrias explicarme las subrutinas y como se utilizan los registros por favor a y las instrucciones.gracias
ResponderEliminar