Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Quién conoce los detalles de W78e58b?

¿Quién conoce los detalles de W78e58b?

uno. Introducción:

Dado que el microcontrolador tiene dos espacios ROM, puede cambiar a diferentes ROM para comenzar a programar. Las dos ROM se pueden borrar y programar entre sí. La dirección es como se muestra en la figura:

Ambos espacios ROM comienzan a ejecutarse en la dirección 0X0000, es decir, uno de APROM o LDROM debe tener un programa correspondiente para realizar el trabajo del ISP.

II. Inicie el cambio:

A). Modo de cambio de hardware:

Al arrancar, deje que P43, P26 o P27 presionen la siguiente combinación de teclas:

p>

p>

B). Modo de cambio de software:

1. De APROM a LDROM

caso MAIN_JUMP_LDROM:

//debe borrar todos los registros

//así que esto solo se puede hacer en LDROM

/* PSW = 0;

/*.PSW = 0;

B = 0;

PCON = 0;

SCON = 0;

SBUF = 0; 0;

DPL = 0;

P0 = 0XFF;

P1 = 0XFF;

P2 = 0XFF.

P3=0XFF;

TH1=0;

TL1=0

*/

CHPENR; = 0X87;

CHPENR = 0X59; //Habilitar CHPCON en write_enable

CHPCON = 0x03; //Establecer FLAG

TMOD = 0X01; -modo de bits

TCON = 0; //STOP TIMER0

IP = 0X02;

IE = 0X82; //TIMER0INT HABILITADO PARA DESPERTAR DESDE // INACTIVO MODO

TH0 = 0XFF;

TL0 = 0xa0;//0XF0;// 2uS

TR0 = 1;//TR0 = 1 GO

PCON = 0X01;//EN INACTIVO PARA ISP

pausa;

2. De LDROM a APROM

CHPENR = 0X87;

CHPENR = 0X59;

CHPCON = 0X83;

Operación III.EEPROM

El siguiente programa es un ejemplo de mi aplicación LDROM:

Borrar APROM con suma de comprobación.

BIT erase_ROM(bloque BYTE)

{

Índice BYTE, i;

BIT verificar_ok = 1;

TR0 = 0;

TH0 = TIMER_H_15MS;

TL0 = TIMER_L_15MS

timer_enable = 0 //deshabilitar TR0 = 1

SFRCN = 0X22; //borrar la aprom

TR0 = 1;

// TCON = 0X10;// ENABLE TIMER0 TR0 = 1

# ifdef ENABLE_IDLE //prueba

PCON |= 0x01;// en conducción inactiva

#endif

//watting para borrar ok

//Los datos serán verificados a continuación (0xff)

TH0_temp = TIMER_H_1uS5;//establecer operación en 1.5uS

TL0_temp = TIMER_L_1uS5;

TH0 = TH0_temp ;

TL0 = TL0_temp;

SFRCN = 0X00;//Estado de lectura

SFRAH = 0X00;

SFRAL = 0X00;

para(índice = 0; índice < bloque; índice++)

{

para( i = 0; i < BUF_SIZE; i ++)

{

TR0 = 1;

#ifdef ENABLE_IDLE //prueba

PCON |= 0x01;// en conducción inactiva

#endif

if(SFRFD != 0XFF)

{

verificar_ok = 0;

romper;

}

más

{

SFRAL ++;

si(SFRAL == 0)

SFRAH ++;

}

}

SFRAL ++;

si(SFRAL == 0)

SFRAH ++;

#endif

if(SFRFD !

}

}

if(verify_ok)

Devuelve 1;

else

Devuelve 0;

}

Bits secretos del programa.

void pgm_security_byte(BIT osc1)

{

TR0 = 0;

timer_enable = 0;//deshabilitar TR0 = 1

TH0 = TIMER_H_50uS;//establecer operación a 50uS

TL0 = TIMER_L_50uS;

SFRCN = 0X61;//escribir datos

SFRAH = 0xff;

SFRAL = 0xff;

si (osc1)

SFRFD = 0xf8

en caso contrario

< p; > SFRFD = 0x78;

TR0 = 1;

#ifdef ENABLE_IDLE //prueba

PCON |= 0x01;

# endif

}

Programa APOROM, 128 BYTES a la vez

BIT pgm_ROM_block(BYTE dirección_alta, BYTE dirección_baja)

{

BYTE i, addr_high1, addr_low1;

BIT verificar_ok = 1;

addr_high1 = dirección_alta

addr_low1 = dirección_baja

TR0 = 0;

timer_ enable = 0; //Desactivar TR0 = 1

TH0_temp = TH0 = TIMER_H_50uS //Establecer operación en 50uS

TL0_temp = TL0 = TIMER_L_50uS;

SFRCN = 0X21; //Escribir datos

for( i = 0; i < 128; i ++)

{

SFRAH = addr_high1;

SFRAL = addr_low1;

SFRFD = ringbuf[i]; >

#ifdef ENABLE_IDLE //prueba

PCON |= 0x01;// en conducción inactiva

#endif

addr_low1 ++ ;

if(addr_low1 == 0)

addr_high1 ++;

}

//Verificar datos

addr_high1 = dirección_alta;

addr_low1 = dirección_low;

TH0 = TH0_temp = TIMER_H_ 1uS5;//establecer operación en 1.5uS

TL0 = TL0_temp = TIMER_L_1uS5 ;

SFRCN = 0X00;//Leer datos

for( i = 0; i < BUF_SIZE; i ++)

{

SFRAH = addr_high1;

SFRAL = addr_low1;

TR0 = 1;

#ifdef ENABLE_IDLE //prueba

PCON | = 0

x01;// en conducción en reposo

#endif

addr_low1 ++;

if(addr_low1 == 0)

addr_high1 + +;

if(SFRFD != ringbuf[i])

Devuelve 0;

}

for(i = 0; i < 128; i++)

{

ringbuf[i] = 0;

}

if(verify_ok)

Regresar 1;

}

V. Interfaz My ISP VC++:

Interfaz ENCRYPT, primero cifra el programa y luego conviértelo.

Interfaz de programación:

Herramienta WINBOND: