Anda di halaman 1dari 3

NAME main ; module name

PUBLIC main ;directivas

#include "msp430g2553.h" ; #define controlled include file


#include "Lib LCD.s43"

;DMillar EQU 0x200


;#define DMillar (0x200) ;Definiendo variable en la direccion 200, en esa
direccion empieza la RAM
;#define UMillar (0x201)
#define Centena (0x202)
#define Decena (0x203)
#define Unidad (0x204)

; make the main label vissible


; outside this module
ORG 0xC000 ; el origen donde empieza. Org es la directiva de origen

main
RESET MOV.W #0X400,SP ; a nivel de palabra cambia la direccion ya que empieza
en bajas
MOV.W #WDTPW + WDTHOLD,&WDTCTL ;ESTAMOS APAGANDO EL WACTHDOG

MOV.B &CALBC1_1MHZ,&BCSCTL1 ;CONFIGURAR EL DCO Y CALIBRAR LAS


FRECUENCIAS
MOV.B &CALDCO_1MHZ,&DCOCTL ;CONFIGURO LA VELOCIDAD DE PROCESAMIENTO DE
LA CPU

;---------------------------[PROGRAMA PRINCIPAL]-----------------------
CALL #INI_LCD
CLR.B &P1SEL
CLR.B &P1SEL2

MOV.W #TASSEL_2+MC_1+TAIE,&TACTL ;para el primer temporizador (TACTL)


********TASSELx= SUB MASTER CLOC ID OPCION 3 PARA DIVIDIR ENTRE 8 la frecuencia
OPCION 1 MODO SUBIDA HABILITAR INTERRUPCIONES
MOV.W #57,&TACCR0 ;HASTA QUE VALOR TIENE QUE LLEGAR

EINT

BIS.B #BIT0,&P1DIR
BIC.B #BIT6,&P1DIR

MOV.B #0x80,R15 ;Mueve el cursor a la posici�n 1 del display o sea a la


posici�n 1 de la primera linea
CALL #CMD_LCD ;Activa el comando

CALL #DATO_LCD

PULSO:
MOV.W #4000,R14
CALL #Tiempo

BIS.B #BIT0,P1OUT
MOV.W #1,R14
CALL #Tiempo
BIC.B #BIT0,&P1OUT

ESPERA1: BIT.B #BIT6,&P1IN


JZ ESPERA1
CLR.B R7
ESPERA2: BIT.B #BIT6,&P1IN
JNZ ESPERA2

MOV.B R7,R4

MOV.B #0x30,Centena
MOV.B #0x30,Decena
MOV.B #0x30,Unidad

RES3: CMP.W #100,R4


JLO RES4 ;JLO porque usamos numeros sin signo
SUB.W #100,R4
INC.B Centena
JMP RES3

RES4: CMP.W #10,R4


JLO RES5 ;JLO porque usamos numeros sin signo
SUB.W #10,R4
INC.B Decena
JMP RES4

RES5: CMP.W #1,R4


JLO Continua ;JLO porque usamos numeros sin signo
SUB.W #1,R4
INC.B Unidad
JMP RES5

Continua:

MOV.B #0x8A,R15 ;Mueve el cursor a la posici�n 1 del display o sea a la


posici�n 1 de la primera linea
CALL #CMD_LCD ;Activa el comando

MOV.B Centena,R15
CALL #DATO_LCD
MOV.B Decena,R15
CALL #DATO_LCD
MOV.B Unidad,R15
CALL #DATO_LCD

MOV.B #0x8E,R15 ;Mueve el cursor a la posici�n 1 del display o sea a la


posici�n 1 de la primera linea
CALL #CMD_LCD ;Activa el comando
MOV.B #0x63,R15 ;Imprime 'c'
CALL #DATO_LCD
MOV.B #0x6D,R15 ;Imprime 'm'
CALL #DATO_LCD

JMP PULSO

JMP $
;----------------------------------------------------------------
Tiempo: DEC.W R14
NOP
CMP.W #0,R14
JNE Tiempo
RET

;----------------------------Rutinas de interrupcion----------------------
;---Primer temporizador-----

TA_HND: ;DE PAGINA 368

ADD &TAIV,PC ; Add offset to Jump table 3


RETI ; Vector 0: No interrupt 5
JMP CCIFG_1_HND ; Vector 2: TACCR1 2
JMP CCIFG_2_HND ; Vector 4: TACCR2 2
RETI ; Vector 6: Reserved 5
RETI ; Vector 8: Reserved 5

TAIFG_HND: ; Vector 10: TAIFG Flag ; Task starts here


INC.B R7 ;CAMBIA EL ESTADO DEL LED

RETI

CCIFG_2_HND: ; Vector 4: TACCR2; Task starts here

RETI ; Back to main program 5

CCIFG_1_HND: ; Vector 2: TACCR1; Task starts here

RETI ; Back to main program 5

;---Segundo temporizador-----

;-------------------------------------------------------------------------
;-----------------------------[SUBRUTINAS]-----------------------------

;AQUI VAN LOS DATOS


;----------------------[VECTORES DE INTERRUPCION]----------------------

ORG 0XFFFE ; DIRECTIVA ORIGEN QUE


DW RESET; RESTEA ENTRA EN UNA INTERRUPCION

ORG 0XFFF0;DIRECTIVA DE LA INTERRUPCION DEL PUERTO 1


DW TA_HND;Nombre de la rutina de interrupcioon

END ;

END main ;

Anda mungkin juga menyukai