**********************************
*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
miércoles, 27 de octubre de 2010
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
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
Suscribirse a:
Comentarios (Atom)