¿Cómo borrar el microcontrolador STC12C5A60S2?
# incluir & ltLCM 12864 h & gt;
sfr ISP_DATA = 0xe2
sfr ISP_ADDRH = 0xe3
sfr ISP_ADDRL = 0xe4
sfr ISP_CMD = 0xe5
sfr ISP_TRIG = 0xe6
sfr ISP_CONTR = 0xe7
# Defina ISP_IAP_BYTE_READ 1
#Defina ISP_IAP_BYTE_PROGRAN 2
#Defina ISP_IAP_BYTE_ERASE 3
#defina WAITE_TIME 1
Retraso no válido (recuento interno)
{
int I;
for(I = 0;i<cnti++);
}
Sector_erase vacío (int dirección)
{
ISP _ ADDRH = dirección & gt& gt8;
ISP _ ADDRL = dirección & amp0x0ff
ISP _ CONTR = WAITE _ TIME
ISP _ CONTR = 0x80
ISP _ CMD = ISP _ IAP _ BYTE _ ERASE
ISP _ TRIG = 0x46 p>
ISP _ TRIG = 0xb9
}
void Byte_Program(int addr, unsigned char dat)
{
Sector_erase(addr);
ISP_DATA = dat
ISP_ADDRH = addr & gt& gt8;
ISP _ ADDRL = addr & amp0x 00 ff;
ISP_CONTR=WAITE_TIME
ISP_CONTR=0x80
ISP_CMD=ISP_IAP_BYTE_PROGRAN
ISP_TRIG = 0x46
ISP _ TRIG = 0xb9
ISP _ CMD = 0x7F
}
Carbón sin firmar Byte_Read(dirección int) p>
{
Datos de caracteres sin firmar
ISP _ ADDRH = addr & gt& gt8;
ISP _ ADDRL = addr & amp0x 00 ff;
ISP _ CONTR = ESPERA _ TIEMPO
ISP _ CONTR = 0X80
ISP _ CMD = ISP _ IAP _ BYTE _ READ
ISP _ TRIG = 0x46
ISP _ TRIG = 0xb9
dat = ISP _ DATA
ISP _ CMD = 0x00
Devolver dat
}
Administrador no válido (no válido) p>
{
Carácter sin firmar dat 1 = 0
init; _ 12864 palabra();
Byte_P
rogram(0x2001, 0x 11);
dat 1 = Byte _ Read(0x 2001);
LCM 12864 _ wr _ Cmd(0x 80); >LCM 12864 _ wr _ Dat(Dat 1/100x 30
LCM 12864 _ wr _ Dat(Dat 1% 100/10x 30); 12864 _ wr _ Dat(Dat 1% 10x 30);
while(1);
}
No recuerdo si es STC12C5A60S2. o 89C52. Si observa la tabla de datos a continuación, las razones principales son que los nombres de los registros son diferentes y la asignación ISP_TRIG es diferente. Todo lo demás es igual.
Atención:! ! ! ! ! ¡No es un borrado de bytes, solo un borrado de sector! ! ! ! ! !
Programación de bytes: sólo se puede cambiar "1" a "0", la programación de bytes "0" es inútil. Si los bytes son "1111, 111b",
entonces "1" se puede programar como "0". Si un bit de este byte es un "0", para cambiarlo a un "1" primero se debe cambiar todo el ventilador.
Borrado de área, porque sólo el "borrado de sector" puede convertir "0" en "1".
Borrado de Sector: Sólo "Borrado de Sector" puede borrar "0" a "1".
Por lo tanto, los sectores se borran antes de escribir.