;*******************************************************************************
;*******************************************************************************
#include "msp430x20x3.h"
#define MIDRAM 0240h
#define RELOJ 1000h
#define salidas 0ffh
#define CONT R7
main
;--------------------------------------
ORG 0F800h ; Inicio de flash
;-------------------------------------------------------------------------------
RESET mov.w #MIDRAM,SP ;Stack a la mitad de ram
StopWDT mov.w #WDTPW+WDTHOLD,&WDTCTL ;Apagar perro
CLR.B &P1SEL ;P1 COMO DIGITAL
CLR.B &P2SEL ;P2 COMO DIGITAL
MOV.B #salidas,&P1DIR ;P1 COMO SALIDA
MOV.B #salidas,&P2DIR ; p2 como salida
BIC.B #BIT7,&P2OUT ;bit 7 como salida
BIC.B #BIT6,&P2IN ;bit 6 como entrada
BIS.B #BIT6, &P2REN ;habilita la resistencia del bit 6
BIC.B #BIT6,&P2IFG ;BORRADO DE BANDERAS
BIS.B #BIT6,&P2IE ;HABILITACION DE INTERRUPCION EN PUERTO 2
CLR.B &P2IES ;ELECCION DE FLANCO(SUBIDA)
MOV #GIE,ISR ;HABILITAR INTERRUPCION GLOBAL
CONTZ CONT=0
OFFLED BIC.B #BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7,&P10UT ;APAGADO DE LED'S
CMP #O,CONT
JE OFFLED
CMP #1,CONT
JE SEC1
CMP #2,CONT
JE SEC2
CMP #3,CONT
JE SEC3
JE CONTZ
;------------------------------------------------------------------------------
BOTON
;------------------------------------------------------------------------------
BIC.B #BIT6,&P2IFG ;BORRADO DE BANDERAS
CONT=CONT+1
JHS #4
CONT=0
RET
;------------------------------------------------------------------------------
DATOS
;------------------------------------------------------------------------------
OTRO MOV.B @R4+,&P1OUT
CALL #TIEMPO
CMP R5,R4
JNE OTRO
RET
;------------------------------------------------------------------------------
TIEMPO
;------------------------------------------------------------------------------
MOV RELOJ,R6
MAS DEC R6
JNE MAS
RET
;------------------------------------------------------------------------------
SEC1
;------------------------------------------------------------------------------
MOV #TABLA1,R4
MOV #FIN1,R5
CALL #DATOS
RET
;------------------------------------------------------------------------------
SEC2
;------------------------------------------------------------------------------
MOV #TABLA2,R4
MOV #FIN2,R5
CALL #DATOS
RET
;------------------------------------------------------------------------------
SEC3
;------------------------------------------------------------------------------
MOV #TABLA3,R4
MOV #FIN3,R5
CALL #DATOS
RET
;------------------------------------------------------------------------------
TABLA1 DC8 01h,02h,04h,08h,10h,20h,40h,80h,40h,20h,10h,08h,04h,02h
FIN1 DC8 00h
;------------------------------------------------------------------------------
TABLA2 DC8 81h,0C3h,0E7h,0FFh,0E7h,0C3h
FIN2 DC8 00h
;------------------------------------------------------------------------------
TABLA3 DC8 0FFh,0FEh,0FCh,0F8h,0F0h,0E0h,0C0h,080h
FIN3 DC8 OOh