TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Assembly Semaforo *8951

Artigo: Assembly Semaforo *8951. Pesquise 862.000+ trabalhos acadêmicos

Por:   •  21/2/2015  •  840 Palavras (4 Páginas)  •  748 Visualizações

Página 1 de 4

SdevLab – Projeto | Controle de semáforos utilizando assembly e microcontrolador 8951

10 DE ABRIL DE 2010 9 COMENTÁRIOS

Eae galera!

Este post na verdade é um trabalho que eu fiz na faculdade. Eu precisava desenvolver alguma coisa em assembly para rodar em um microcontrolador. Como eu estava meio sem ideia eu resolvi fazer o que um amigo sugeriu, um semáforo de um cruzamento.

Controle de semáforos utilizando assembly e microcontrolador 8951

Segue uns pedaços do descritivo do projeto para explicar melhor a ideia do que estamos prestes a começar a desenvolver.

Finalidade

A finalidade do projeto é obter um sistema de controle de trânsito, cujas características devem atender as especificações apresentadas no decorrer deste documento.

Funcionalidade

Controle automático dos semáforos de um cruzamento de um condomínio fechado (não apresenta as mesmas condições de uma rua normal, que deve mudar o tempo de mudança de sinal dependendo dos horários do dia), que deverá manter o sinal fechado de uma rua por alguns segundos e abrir para outra (pode variar de acordo com as necessidades do cliente), fechando o sinal da primeira assim que isto acontecer. O sistema deverá ainda dar o alerta que o sinal vai mudar 10 segundos antes disso acontecer (sinal amarelo).

Fluxograma

Código

;---------------------------------------------------------------------

;PROJETO SEMAFORO

;---------------------------------------------------------------------

ORG 0000H

LJMP INIC

ORG 0003H

LJMP INTE0

ORG 0013H

LJMP INTE1

MOV SP,30 ;iniciando a pilha

;----------------------------------------------------------------

; habilitando os bits do registrador de interrupcoes

;----------------------------------------------------------------

INIC: MOV IE,#85H ;habilitando as interrupcoes int0 e int1

MOV TCON,#00H ;configurando registrador de interrupções

MOV P1,#00H ;limpando a entrada (chava de on e led)

OFF: MOV P2,#00H ;Limpando a porta p2 (desligando tudo)

JB P1.2, PADRAO ;se a chave estiver ligada, vai para a rotina padrão

LJMP OFF

;----------------------------------------------------------------------

; iniciando a rotina padrao do semaforo

;----------------------------------------------------------------------

PADRAO: SETB P1.1 ;Ligando a luz de on (indica que o sistema está funcionando)

SETB P2.7 ;ligando a luz vermelha do sinal 1

SETB P2.2 ;ligando a luz verde do sinal 2

LCALL DELAY

CLR P2.7 ;desligando a luz vermelha do sinal 1

SETB P2.6 ;ligando a luz amarela do sinal 1

CLR P2.2 ;desligando a luz verde do sinal 2

SETB P2.3 ;ligando a luz amarela do sinal 2

LCALL DELAY

CLR P2.6 ;desligando a luz amarela do sinal 1

SETB P2.5 ;ligando a luz verde do sinal 1

CLR P2.3 ;desligando a luz amarela do sinal 2

SETB P2.4 ;ligando a luz vermelha do sinal 2

LCALL DELAY

CLR P2.5 ;desligando a luz verde do sinal 1

SETB P2.6 ;ligando a luz amarela do sinal 1

CLR P2.4 ;desligando a luz vermelha do sinal 2

SETB P2.3 ;ligando a luz amarela do sinal 2

LCALL DELAY

CLR P2.3 ;desligando a luz amarela do sinal 2

CLR P2.6 ;desligando a luz amarela do sinal 1

AJMP PADRAO ;voltando para o inicio da rotina normal

;———————————————————————————————————————–

; entrando na rotina de loop

;———————————————————————————————————————–

DELAY: MOV B,#08H ;carrega o registrador B com 8

VOLTA: LCALL DELAY250 ;chama o delay de 250ms

DJNZ B,VOLTA ;decrementa o B

RET ;retorna

DELAY250: PUSH B ;salva o B de 8 na pilha

MOV B,#0FAH ;carrega B com 250ms

VOLTA1: LCALL DELAY1MS ;chama o delay de 1ms

DJNZ B,VOLTA1 ;decrementa o B de 250ms

POP B ;retira o B da pilha

RET ;retorna

DELAY1MS: PUSH B ;coloca o B de 250ms na pilha

MOV B,14H ;ESTE E O DELAY DE 1MS

FIM: DJNZ B,FIM ;decrementa o B de 1ms

POP B

RET

;———————————————————————————————————————-

;saindo da rotina de loop

;———————————————————————————————————————-

...

Baixar como (para membros premium)  txt (6.7 Kb)  
Continuar por mais 3 páginas »
Disponível apenas no TrabalhosGratuitos.com