No simula en Proteus que puede ser ?

buenas claneros tengo un lio estoy tratando de simular un controlador de temperatura a traves de un lm35 donde conviertos los datos analogicos con un adc0804 o 0803 y controlado por un microcontrolador 8051 y no se que pasa que no me funciona ya lo compile y me arroja un error al final. que podria ser ? porfavor necesito su ayuda es urgente se los adjunto
 

Adjuntos

  • no me compila.rar
    29.5 KB · Visitas: 14
Última edición:
Puff tio, no se si te sservira esto. Yo sulo usar proteu con un microcontrolador pic, pero yo lo que suelo cargar en el simulador es un archivo cof o un hex. Comprueba que el proteus sea compatible con los fromatos que les estas cargando.
 
Por el listado de errores parece que no les has definido el micro al compilador ya que todo son errores.
Tendrás que poner algo como #include 8052.def , #uses89c51.def o algo así para que cargue la tabla de definiciones del micro que estés usando.

¿Que compilador usas?
 
Última edición:
A que le dices que compilador uso, estoy trabajando en proteus, cargo un fichero el .txt. soy nuevo en esto es un trabajo de curso que tengo que entregar.
por favor ayúdenme
 
hola pj00, te comento que cometiste algunos errores.
1.- la extencion del archivo donde esta el programa tiene que ser *.asm, proteus lo genera por defecto con esa extencion.
2.- como estas trabajando con el ascembler de la familia 8051 la herramienta de compilación a elegir en proteus debería ser ASM51.
3.- Equivocaste los ventores de interrupción, pusiste la rutina del temporizador en ligar de interrupción y viceversa.
4.- proteus no simula la salida de interrupción del adc 0804 y 0803 por lo cual tu interrupción externa jamas se disparara (esto en la simulación), en el circuito real debería funcionar sin problemas.

Para el caso de la simulación, proteus genera un reloj interno propio en el adc, así que no se necesita introducirle un reloj al adc, en el chip adc real si tendrías que introducirle el reloj al adc o conectarle el R yC para que el adc genere su propio reloj.

adjunto las correcciones hechas al tu programa.
 

Adjuntos

  • ahora_si_compila.rar
    33.6 KB · Visitas: 18
tienes toda la razón confundí los vectores de interrupción con el del temporizador. otra pregunta como entonces puedo simular la interrupción. y muchísimas gracias hermano por la respuesta.
gracias nuevamente
 
... asi como esta no se va a poder utilizar la interrupción externa, te sugiero que leas el adc en la misma rutina del timer 0, primero leer el adc y luego le dar la orden para que haga una nueva convercion.
 
otra pregunta me es necesario que me interrumpa en la simulación cual seria el conversor que podría poner en proteus que si me simule la interrupción. por favor Saint_

... asi como esta no se va a poder utilizar la interrupción externa, te sugiero que leas el adc en la misma rutina del timer 0, primero leer el adc y luego le dar la orden para que haga una nueva convercion.

y no podría utilizar otro adc de 8bits que si me de esta interrupcion
 
puedes utilizar el adc0808, este da un nivel bajo mientras efectúa la convercion, da un nivel alto cuando termina la convercion y para iniciar la convercion requiere un pulso de nivel alto.
 
si pero este circuito si lo simula proteus

puedes utilizar el adc0808, este da un nivel bajo mientras efectúa la convercion, da un nivel alto cuando termina la convercion y para iniciar la convercion requiere un pulso de nivel alto.

si pero este circuito adc 0808 si lo simula proteus la interrupción
 
se hacen maravillas con lo simuladores y una ver terminado rara ves falla el circuito real.
Para mi es como ejercitar, "así no pierdo la practica".
 
se hacen maravillas con lo simuladores y una ver terminado rara ves falla el circuito real.
Para mi es como ejercitar, "así no pierdo la practica".

ya lo realice y me funciono lo que pasa ahora es en el soft que cuando lo le modifico el valor me da error que pudiera ser te lo adjunto.
este es un pedaso del código dode le modifique el este

ext0:
mov A,P0
cjne A,#0,prende
setb P3.5
jmp salir1
prende:
cjne A,70h,salir1 ;aca comparaba con 0Eh y ahora quiero que sea igual a 07h
clr P3.5
salir1:
reti
 

Adjuntos

  • prueba.rar
    35.8 KB · Visitas: 4
a mi no me sale ningún error al compilarlo, lo que no me queda claro es porque en esta linea de código
cjne A,70h,salir1
estas comparando el valor del acumulador con la dirección 70h o 07h según el caso si no tienes guardado ningún valor en dichas direcciones, lo mas coherente por el momento es que lo compares con una constante
cjne A,#70h,salir1 o cjne A,#07h,salir1 según el caso.
adicional mente a eso como la interrupción externa del 8051 solo se dispara por nivel bajo por flanco de bajada, hay que adicional un inversor a la salida del adc y finalmente tomaste al revés las salidas del adc.

también veo que una vez que la temperatura es igual a cierto valora se apaga un bit el problema de esto es que si por algún motivo la temperatura tiene un cambio rápido y el adc no toma las lecturas rápidamente quizá ese bit nunca se apague.
 

Adjuntos

  • prueba_____.rar
    37.5 KB · Visitas: 4
gracias bro, es con cjne,#70h es un valor de salida del adc0808 que coresponde con 27 grados
gracias de nuevo. cualquier cosa que te haga falta me puedes molestar sin problemas ok
 
Atrás
Arriba