miércoles, 27 de octubre de 2010

programa Lunes no class

**********************************
*PROGRAMA DE EJEMPLO
**********************************
PACTL EQU $1026
PACNT EQU $1027
ADCTL EQU $1030
ADR1 EQU $1031
ADR2 EQU $1032
ADR3 EQU $1033
ADR4 EQU $1034
OPTION EQU $1039

PORTA EQU $1000
PORTD EQU $1008
PORTE EQU $100A
PORTG EQU $1002

DDRA EQU $1001
DDRD EQU $1009
DDRG EQU $1003

TMSK2 EQU $1024
TFLG2 EQU $1025

SCDR EQU $102F
SCCR2 EQU $102D
SCSR EQU $102E
SCCR1 EQU $102C
BAUD EQU $102B
HPRIO EQU $103C
SPCR EQU $1028
CSCTL EQU $105D
OPT2 EQU $1038

* VARIABLES *********************

ORDEN EQU $000C
SEG EQU $000D
U1 EQU $000E
U2 EQU $000F
U3 EQU $0010
U4 EQU $0011
U5 EQU $0012
V1 EQU $0013
V2 EQU $0014
BAS_H EQU $0015
BAS_L EQU $0016
V5 EQU $0017
TEMPO EQU $0018
ALTO EQU $0019
BAJO EQU $001A
BASE_H EQU $001B
BASE_L EQU $001C
V3 EQU $001D
V4 EQU $001E
EXTRA EQU $001F
**********************************
*CONFIGURA REGISTROS
**********************************
ORG $8000 * DIR DE INICIO
LDS #$03FF * APUNTADOR DE STAK


LDAA #$00 * CONFIG TODO EL PUERTO A COMO ENTRADAS
STAA DDRA * EL PUERTO A

LDAA #$FF * CONFIG TODO EL PUERTO G COMO SALIDAS
STAA DDRG * EL PUERTO G

LDAA #$00 * SE PONE PUERTO G EN CEROS
STAA PORTG

LDD #$302C * CONFIGURA PUERTO SERIAL
STAA BAUD * BAUD 9600 para cristal de 8MHz
STAB SCCR2 * HABILITA RX Y TX PERO INTERRUPCN SOLO RX
LDAA #$00
STAA SCCR1 * 8 BITS

LDAA #$FE * CONFIG PUERTO D COMO SALIDAS (EXCEPTO PD0)
STAA DDRD * SEA ENABLE DEL DISPLAY PD4 Y RS PD3


LDAA #$04
STAA HPRIO

LDAA #$00
TAP







**********************************
*PROGRAMA PRINCIPAL
**********************************
MAIN

INICIO
JSR INICIA
CLR U1
CLR U2
CLR U3
CLR U4

ENCICLATE
LDAA #$3F
STAA ORDEN

CICLO
LDAA ORDEN
CMPA #$3F
BEQ CICLO
LDAB U1
BNE CHECA_U2
COMPARA
CMPA #'S
BNE ENCICLATE
LDAA #'S
STAA U1
JMP ENCICLATE
CHECA_U2
LDAB U2
BNE CHECA_U3
CMPA #'T
BNE NO_ES_T
LDAA #'T
STAA U2
JMP ENCICLATE
NO_ES_T
CLR U1
JMP COMPARA

CHECA_U3
LDAB U3
BNE CHECA_U4
CMPA #'A
BNE NO_ES_A
LDAA #'A
STAA U3
JMP ENCICLATE
NO_ES_A
CLR U2
JMP NO_ES_T
CHECA_U4

LDAB U4
BNE SALTE
CMPA #'R
BNE NO_ES_R
LDAA #'R
STAA U4
JMP ENCICLATE
NO_ES_R
CLR U3
JMP NO_ES_A
SALTE
CMPA #'T
BNE NO_FUE_T
JMP SUBRUTINA

NO_FUE_T
CLR U4
JMP NO_ES_R
SUBRUTINA

CLR U1
CLR EXTRA
LDX #EJECUTA
LOOP
LDAA EXTRA
BEQ LOOP

CLR EXTRA
LDAA ORDEN
CMPA #'E
BEQ FUE_E
CLR U1
GUARDA
STAA $00,X
INX
JMP LOOP
FUE_E
INC U1
LDAB U1
CMPB #$04
BEQ EJECUTALO
JMP GUARDA

EJECUTALO

JMP EJECUTA


***********************************
* INICIA
***********************************
INICIA

CLR SEG

CLR PORTG
LDAA #$F4
STAA TEMPO * TEMPO ES VARIABLE PARA CONTAR 244 CICLOS

LDX #TMSK2
BSET $00,X,#$40 * HABILITA INTERRUPCION TIMER T-REAL
CLI

LDX #PACTL
BSET $00,X,#$50 * HABILITA PAEN -ACUMULADOR PULSOS ALTOS-
CLR PACNT * BORRA ACUMULADOR DE PULSOS

LDAA #$10
STAA BASE_H * PONE UN #1060 COMO DIRECCION BASE INICIAL
LDAA #$60
STAA BASE_L

LDY #$1060

LDAA #$16
STAA BAS_H * PONE UN #1653 NUMERO TOTAL DE JUEGO DE MUESTRAS
LDAA #$53
STAA BAS_L


CLR ALTO * INICIA INDICE MUESTRA EN 0
CLR BAJO

RTS
***********************************
* SACA
***********************************
SACA


LDAA ALTO * INDICE DE MUESTRA (SEGUNDO)
LDAB BAJO
XGDY
INY
XGDY
JSR BINBCD
JSR DISPLAY
JSR COMA

LDAA BASE_H * INDICE DE MUESTRA (PARTICULAR)
LDAB BASE_L
XGDY

INY
CLRA
LDAB $00,Y
JSR BNBCD
JSR DSPLY
JSR COMA

INY
CLRA
LDAB $00,Y
JSR BNBCD
JSR DSPLY
JSR COMA

INY
CLRA
LDAB $00,Y
JSR BNBCD
JSR DSPLY
JSR COMA

INY
CLRA
LDAB $00,Y
JSR BNBCD
JSR DSPLY
JSR COMA

INY
CLRA
LDAB $00,Y
JSR BNBCD
JSR DSPLY

XGDY
STAA BASE_H
STAB BASE_L

JSR CRYTRN

RTS
***********************************
* COMA
***********************************
COMA
LDX #SCSR

LDAA SCSR
LDAA #$2C * COMA
STAA SCDR
C1
BRCLR $00,X,#$80 C1
RTS
***********************************
* DESPLIEGA
***********************************
DISPLAY

LDX #SCSR

LDAA SCSR
LDAA U1 * U1
ADDA #$30
STAA SCDR
T1
BRCLR $00,X,#$80 T1

LDAA SCSR
LDAA U2 * U2
ADDA #$30
STAA SCDR
T2
BRCLR $00,X,#$80 T2

DSPLY
LDX #SCSR

LDAA SCSR
LDAA U3 * U3
ADDA #$30
STAA SCDR
T3
BRCLR $00,X,#$80 T3

LDAA SCSR
LDAA U4 * U4
ADDA #$30
STAA SCDR
T4
BRCLR $00,X,#$80 T4

LDAA SCSR
LDAA U5 * U5
ADDA #$30
STAA SCDR
T5
BRCLR $00,X,#$80 T5

RTS

***********************************
* CARRY RETURN
***********************************

CRYTRN
LDX #SCSR
LDAA SCSR
LDAA #$0A * NEW LINE
STAA SCDR
CR1
BRCLR $00,X,#$80 CR1

LDAA SCSR
LDAA #$0D * CARRY RETURN
STAA SCDR
CR2
BRCLR $00,X,#$80 CR2

RTS
***********************************
* DESPLIEGUE DE DATO RECIBIDO
***********************************

DATARX
LDX #SCSR
LDAA SCSR
LDAA ORDEN * NEW LINE
STAA SCDR
DT1
BRCLR $00,X,#$80 DT1

LDAA SCSR
LDAA #$3A * DOS PUNTOS
STAA SCDR
DT2
BRCLR $00,X,#$80 DT2

RTS
***********************************
* voltimetro
***********************************
VOLTA
LDX #ADCTL

LDAA #$80
STAA OPTION * PONE EN MARCHA EL ADC

LDAA #$10
STAA ADCTL * ENTRADA MULTIPLE SELECCIONA CANAL 0

E1
BRCLR $00,X,#$80 E1
LDAB ADR1
STAB V1

LDAA #$80
STAA OPTION * PONE EN MARCHA EL ADC

LDAA #$11
STAA ADCTL * ENTRADA MULTIPLE SELECCIONA CANAL 1

E2
BRCLR $00,X,#$80 E2
LDAB ADR2
STAB V2

LDAA #$12
STAA ADCTL * ENTRADA MULTIPLE SELECCIONA CANAL 2

E3
BRCLR $00,X,#$80 E3
LDAB ADR3
STAB V3

LDAA #$13
STAA ADCTL * ENTRADA MULTIPLE SELECCIONA CANAL 3

E4
BRCLR $00,X,#$80 E4
LDAB ADR4
STAB V4


RTS
***********************************
* CONVIERTE A BCD
***********************************

BINBCD

LDX #$2710
IDIV
XGDX
STAB U1
XGDX
LDX #$3E8
IDIV
XGDX
STAB U2
XGDX

BNBCD
LDX #$64
IDIV
XGDX
STAB U3
XGDX
LDX #$A
IDIV
XGDX
STAB U4
XGDX
STAB U5



RTS



***********************************
* ATENCION A INTERRUPCION SERIAL
***********************************
ORG $F100

PSHA

LDAA SCSR
LDAA SCDR
STAA ORDEN
DEC EXTRA

PULA

RTI

***********************************
* ATENCION A INTERRUPCION REAL TIME
***********************************
ORG $F110

PSHA
PSHX

LDX #TFLG2
BSET $00,X,#$40 * BORRA BANDERA INTERRUPCION
DEC TEMPO
BEQ SEGUNDO

PULA
PULX
RTI

SEGUNDO
LDAA #$FF
STAA SEG * SEG ES UNA BANDERA DE SEGUNDO
LDAA #$F4
STAA TEMPO * TEMPO ES VARIABLE PARA CONTAR 244 CICLOS
INC PORTG

PULA
PULX
RTI
***********************************
* VECTOR INTERRUPCION SERIAL
***********************************
ORG $FFD6
FCB $F1,$00

***********************************
* VECTOR INTERRUPCION REAL TIME
***********************************
ORG $FFF0
FCB $F1,$10

***********************************
*RESET
***********************************
ORG $FFFE
RESET FCB $80,$00
***********************************
END $8000

martes, 5 de octubre de 2010

Programación amateur del M68HC11

para empezar a programar un microcontrolador a mí me enseñaron a que hay que conocer la arquitectura del micro, para eso hay manuales, para el microprocesador M68HC11 no exíste tal cual por lo tanto debemos de investigar y tomar como referencia otros microprocesadores parecidos para que nos demos una idea de como es que se transfiere la información dentro del mismo.
Por el momento solamente les coloco la versión virtual del micro para que empiezen a jugar gracias a mi profesor Pedro Ignacio Rincón , profesor de la Facultad de Ingeniería de la UNAM.

aqui esta el link de descarga_:

http://www.4shared.com/file/3e_bjNKS/avsim_SIMULADOR_HC11_COLORES.html

igual aqui dejo un link para la suscripción de temas relacionados al m68hc11

googlegroups por si sequieren suscribir

http://groups.google.com.mx/group/comp.realtime/about