Autor Tema: problema con proteus y hc11  (Leído 3656 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
problema con proteus y hc11
« en: 13 de Marzo de 2009, 15:49:33 »
hola amigos del foro, estoy haciendo un programa de un semaforo muy sencillo, lo simulo en THRSim11 y me simula bien, pero es muy lento debido a su naturaleza, y como hago un delay grande, me tardo mucho tiempo viendo los cambios, quise hacerlo en proteus pero me sale un error, que se repite muchas veces, es algo asi como write read only address $XXXX consecutivamente, aqui pongo el codigo, por que ya no se que hacer para que se simule, saludos

Código: [Seleccionar]
;
;SEMAFORO
;LOCALIZACION DE SEMAFORO EN EL PUERTO D
;DOS SEMAFOROS
;PINES CORRESPONDIENTES D0,D1,D2 SEMAFORO 1
;PINES CORRESPONDIENTES D3,D4,D5 SEMAFORO 2
;D0- VERDE, D1-AMARILLO, D2 ROJO
;D3-VERDE, D4-AMARILLO, D5 ROJO
; el semaforo se encuentra en 4 fases
;fase uno semaforo2 esta en verde semaforo uno en rojo
;fase dos semaforo2 en amarillo, semaforo1 en rojo
;fase tres semaforo2 en rojo, semaforo1 en verde
;fase cuatro semaforo2 en rojo, semaforo1 en amarillo


TMSK1   EQU $22
TFLG1   EQU $23
TCTL1   EQU $20
TOC5    EQU $1E
TMSK2   EQU $24
TCNT    EQU $0E
PORTD   EQU $08        ; Dirección del puerto D
DDRD    EQU $09        ; Configuración del puerto D


DOSSEG EQU $C8 ;VALOR PARA 2 SEGUNDOS

UNO EQU $0C ;fase 1
DOS EQU $14 ;fase 2
TRES EQU $21 ;fase 3
CUATRO EQU $22 ;fase 4

TIEMPO  EQU 20000  ; Número de tics de reloj necesarios para generar un
                   ; retraso de 10 ms. Cada tic de reloj son 500ns = 0.5microseg
                   ; 20000*0.5 = 10000microseg = 10mseg.
        ORG $010
        LDX #$1000
       
INIT LDAA #$FF
STAA DDRD,X ;CONFIGURAMOS EL PUERTO D COMO SALIDA
CLRA
STAA PORTD,X ;PONEMOS A CEROS TODO EL PUERTO D


LDAA #50      ; Esperar 50 unidades de tiempo = 500mseg
        BSR delay

bucle LDAA #UNO
STAA PORTD,X  ; PONEMOS FASE 1 EN EL PUERTO D


LDAB #5
DE10 LDAA #DOSSEG
        BSR delay ;esperamos 10 segundos con el semaforo 2 con verde
DECB       
BNE DE10

LDAA #DOS
STAA PORTD,X ;DESPLEGAMOS EN PUERTO D SEGUNDA FASE
LDAA #DOSSEG ;guardamos los 2 segundos en registro A
BSR delay ;saltamos a subrutina delay
LDAA #TRES guardamos fase 3 en registro A
STAA PORTD,X ;ponemos el valor de registro A en la direccion donde se localiza el puerto D

LDAB #5
DEC11 LDAA #DOSSEG ;cargamos los 10 segundos en A
BSR delay ;saltamos a subrutina delay para que haga el retardo de tiempo
DECB
BNE DEC11

LDAA #CUATRO    ;cargamos fase 4 en A   
STAA PORTD,X ;desplegamos el valor de fase4 en puerto A
LDAA #DOSSEG ;cargamos 2 segundos en A
BSR delay ;saltamos a subrutina delay

        BRA bucle
;+-----------------------------------------------------------------+
;¦ Subrutina para de espera.                                       ¦
;¦ ENTRADAS: Acumulador A contiene el número de unidades de tiempo ¦
;¦    a esperar. Cada unidad de tiempo son 10ms.                   ¦
;+-----------------------------------------------------------------+
delay
        CMPA #0            ; ¿Queda alguna unidad de tiempo por esperar ?
        BEQ fin_delay      ; No--> terminar
        DECA               ; Si--> queda una unidad menos
        BSR delay10        ; Esperar una unidad de tiempo
        BRA delay          ; Repetir
fin_delay
        RTS
;+---------------------------------+
;¦ Subrutina para esperar 10ms.    ¦
;+---------------------------------+
delay10
        PSHA
PSHB
        LDD TCNT,X              ; Escribir en comparador 5 el valor del
        ADDD #TIEMPO            ; temporizador principal más el número de
        STD TOC5,X              ; tics de reloj necesarios para una pausa
                                ; de 10ms.
        BSET TFLG1,X $08        ; Poner a cero flag del comparador 5
oc5     BRCLR TFLG1,X $08 oc5   ; Esperar a que se activa flag del comparador
        PULA
PULB
        RTS                     ; Terminar
END
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

Desconectado cdrpo

  • PIC18
  • ****
  • Mensajes: 317
Re: problema con proteus y hc11
« Respuesta #1 en: 18 de Marzo de 2009, 10:34:44 »
No conozco proteus y quiero probarlo pero deseo saber

Que microcontroladores de Freescale simula proteus?

Puedo programar en C o solo en ensamblador?

Esta es la web principal de proteus?
http://www.labcenter.co.uk/index.cfm

gracias

Desconectado scientist

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 999
Re: problema con proteus y hc11
« Respuesta #2 en: 13 de Abril de 2009, 20:18:22 »
Holacdrpo, proteus es bueno con microcontroladores microchip y varias marcas, pero no tiene mucho de freescale, solo tienen algunos modelos de hc11, y no maneja las nuevas arquitecturas de freescale con nucleo HCS08 y HCS12, te recomiendo que cheques como utilzar el visual tools de codewarrior, no se compara a proteus, pero ya es algo al menos en simulacion grafica, saludos
NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....


 

anything