Semaforo de crucero en Asemble.
Enviado por Over Nova • 3 de Octubre de 2016 • Práctica o problema • 3.792 Palabras (16 Páginas) • 335 Visitas
[pic 1]
DIVISIÓN DE MECATRÓNICA[pic 2]
Electrónica Digital
POR: Ricardo Francisco José Hernández Hernández
Semáforo de crucero
Ulises Barcenas Sanchez
MA04SM-15
SECUENCIA DE TIEMPOS[pic 3]
DIAGRAMA DE ESTADOS[pic 4]
#include
__CONFIG _CONFIG1, _LVP_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
org 0
bsf STATUS, RP0
CLRF TRISC
bcf STATUS, RP0
t1 equ 0x21
t2 equ 0x22
t3 equ 0x23
acum equ 0x24
par equ 0x25
s1 equ 0x26
inicio
banksel TRISA ;Seleccion de bancos RP0 = 1, RP1 = 0
movwf TRISA ;Puerto A configurado como entradas
movwf TRISB ;Puerto B configurado como salidas
clrf TRISC ;Puerto C configurado como salidas
clrf TRISD ;Puerto D configurado como salida
movwf TRISE ;Puerto E configurado como entrada por seguridad
banksel ANSEL ;RP0 = 1, RP1 = 1
clrf ANSEL ;Declarando el tipo de señal en el puerto A como digital 0 = DIG, 1 = ANALG
clrf ANSELH ;Otros puertos digitales
banksel PORTA ;
V1V2
movlw b'00000001' ;movemos la literal "00100001" a w
movwf TRISD ;movemos w a la salida
movlw b'01000100' ;movemos la literal "00100001" a w
movwf TRISC ;movemos w a la salida
movlw d'32' ;fijamos tiempo de ensendido
movwf acum ;movemos el valor al contador
call TEMPO ;llamamos al contador
movlw d'4'
movwf par
INTER
movlw b'00000001' ;movemos la literal "00100001" a w
movwf TRISD ;movemos w a la salida
movlw b'00000100' ;movemos la literal "00010001" a w
movwf TRISC ;movemos w a la salida
movlw d'1' ;fijamos tiempo de ensendido
movwf acum ;movemos el valor al contador
call TEMPO ;llamamos al contador
movlw b'01000100' ;movemos la literal "00010001" a w
movwf TRISC ;movemos w a la salida
movlw d'1' ;fijamos tiempo de ensendido
movwf acum ;movemos el valor al contador
call TEMPO ;llamamos al contador
call FP
FP
decfsz par, f
goto INTER
A2
movlw b'00000001' ;movemos la literal "00100001" a w
movwf TRISD ;movemos w a la salida
movlw b'00100100' ;movemos la literal "00010001" a w
movwf TRISC ;movemos w a la salida
movlw d'8' ;fijamos tiempo de ensendido
movwf acum ;movemos el valor al contador
call TEMPO ;llamamos al contador
R2F1
movlw b'00000001' ;movemos la literal "00100001" a w
movwf TRISD ;movemos w a la salida
movlw b'00011100' ;movemos la literal "00010001" a w
movwf TRISC ;movemos w a la salida
movlw d'8' ;fijamos tiempo de ensendido
movwf acum ;movemos el valor al contador
...