Cuando programé la serie AT89Cx051 de microcontroladores, no tuve que usar una memoria especial para programar los datos, pero ahora a pesar de que estoy siguiendo las instrucciones en la hoja de datos (que se encuentra en enlace ) lo mejor que puedo, aún no puedo hacer que se ejecute el maldito chip incluso cuando lo ejecuto con un temporizador 555 a baja velocidad como un reloj.
Pero el nuevo manual del chip indica que hay una función de "cargar código de la página de códigos" y una función de "escribir la página de códigos". Después de (intentar) borrar el chip usando los comandos apropiados, fui directamente a la función "escribir página de códigos" e inserté el binario del siguiente código:
mov P1,#0A5h
sjmp $
Cuando el chip se ejecuta correctamente, las salidas de los pines de puertos alternos de P1 (comenzando con el más bajo) deben tener una lógica alta y el resto debe tener una lógica baja, sin embargo, todo lo que obtengo es todo como lógica alta.
Así es como intenté programar 6 bytes en detalle después del borrado:
Make VPP 12V
set CS to low
Set P1 to AAh
Set XTAL to high then to low
Set P1 to 50h
Set XTAL to high then to low
Set P1 to 0h because high address is 0.
Set XTAL to high then to low
Set P1 to 0h because low address is 0. we start from byte 1.
Set XTAL to high then to low
Set P1 to 75h (the MOV instruction)
Set XTAL to high then to low
Set P1 to 90h (the P1 address)
Set XTAL to high then to low
Set P1 to 0A5h (the value)
Set XTAL to high then to low
Set P1 to 080h (for sjmp)
Set XTAL to high then to low
Set P1 to 0FEh (to stall)
Set XTAL to high then to low
Set P1 to 0h (padding)
set CS to high
wait for busy to reset
Creo que estoy haciendo todo bien? pero ¿es obligatorio ejecutar el búfer de la página de código de carga antes de escribir el búfer? Estoy confundido.
El microcontrolador en cuestión aquí con el que tengo dificultades es AT89LP4052