Aprenda a trabalhar com as memórias EPROM do tipo UVPROM, que necessitam da Luz Ultravioleta para serem apagadas.
Neste artigo você vai aprender como apagar uma memória EPROM 27C512 com luz Ultravioleta UV e fazer a gravação de um novo programa com o programador de memórias Minipro / TL866 II plus.
Escolhemos uma placa de sucata de impressora antiga para o nosso aprendizado.
Figura 1 - Placa de sucata com o microcontrolador 80C32 e memória EPROM 27C512.
Figura 2 - Memória EPROM 27C512 de 64 kB com a janela de quartzo sem o selo.
Figura 3 - Pinos da memória EPROM 27C512. Fonte: datasheet da ST.
Figura 4 - Exemplo de diagrama de um circuito com uma memória EPROM.
Figura 5 - Equipamentos para trabalhar com as memórias EPROM.
Vejamos o que dizem os datasheets das memórias EPROMs com relação a forma de apagá-las.
Fonte: datasheet da EPROM M27C512 da ST.
Fonte: datasheet da EPROM TMS27C512 da TI.
Resumindo tudo: para apagarmos o conteúdo da memória temos que utilizar um apagador de EPROM, que possui uma lâmpada Ultravioleta, e deixar nosso chip lá dentro durante 20 minutos com a janela de quartzo exposta a luz UV! Simples assim né! :)
Figura 6 - Memória pronta para ser limpa com o Apagador de EPROM.
Figura 7 - Memória EPROM sendo apagada com Luz Ultravioleta.
Depois de apagar a memória EPROM todos os bits passam para o nível lógico 1 (bytes com valor FF em hexadecimal).
Dizemos que a memória está limpa, ou em branco, e pode ser gravada com um novo programa.
Existem diversos modelos de programadores no mercado. Neste post vamos utilizar o programador de memórias Minipro / TL866 II plus da XGecu.
Figura 8 - Memória encaixada no soquete ZIF do programador Minipro / TL866 II plus.
Figura 9 - Software XGpro para programação de memórias.
Figura 10 - Programa .HEX ou .BIN aberto no programador.
Figura 11 - Processo de programação e verificação do programa na memória EPROM.
Devemos proteger novamente a janela de quartzo do chip com um selo para evitar que o programa seja apagado parcialmente ao ser exposto a luz solar ou lâmpadas fluorescente.
Figura 12 - Memória EPROM já programada, montada na placa e com o selo na janela de quartzo.
Acompanhe no vídeo todo o processo passo-a-passo para Apagar e Programar uma memória EPROM 27C512!
Vídeo 1 - 80C32 + EPROM - Como Apagar e Gravar a Memória EPROM 27C512
Transformando uma placa de sucata em um Kit de Desenvolvimento 8051: Microcontrolador 80C32 com memória de programa externa EPROM 27C512.
Projeto 8051 Pisca LED a 1 Hz no Port P1.4.
Você vai aprender a trabalhar com a memória EPROM 27C512, como fazer o apagamento da memória com luz Ultra Violeta e fazer a gravação com o programador Minipro / TL866 II plus.
Figura 1 - Diagrama do circuito com o Microcontrolador 80C32 e memória externa EPROM 27C512.
Figura 2 - Placa de sucata com o Microcontrolador 80C32 e memória externa EPROM 27C512.
Figura 3 - Ferramentas utilizadas.
Código para o primeiro projeto 8051 Pisca LED 1 Hz.
;############ PISCA LED 1 HZ ###############
; MICROCONTROLADOR 8051
; COMPILADOR ASM51 ou Keil
; MAIO/2013 M.R.G. original placa desenvolvimento aT89s82
; MARC/2021 M.R.G. adaptado para placa 80c32 + EPROM 27C512
; PINO 5, P1.4 = LED
$MOD51
; *************** DEFINE CONSTANTES **************
TEMPO10MS EQU 9210
LED EQU P1.4
ENABLE_INPUT_DRIVE_MTA011 EQU P3.5
;*************** VETOR DE RESET ****************************************
ORG 000H
LJMP INICIO
;************************** MAIN ***************************************
ORG 100H
INICIO:
;CONFIGURA TIMER0
MOV TMOD,#00000001B ;TIMER 0 MODO 1 - 16 BITS
; HABILITA ENTRADAS DO DRIVE MTA011 - TEM PORTA INVERSORA LS05 ENTRE 80C32 E MTA011
CLR ENABLE_INPUT_DRIVE_MTA011 ;QUANDO EM ZERO HABILITA DRIVE
LOOP:
MOV R0, #50D ;50 X 10 MS = 500 MS
DELAY10MS:
MOV TL0, #LOW (65535-TEMPO10MS) ;CARREGA VALOR PARA TIMER 0
MOV TH0, #HIGH(65535-TEMPO10MS)
SETB TR0 ;LIGA TIMER 0
JNB TF0, $ ;AGUARDA FIM DA CONTAGEM
CLR TR0 ;LIMPA FLAG
CLR TF0
DJNZ R0, DELAY10MS ;DECREMENTA E VERIFICA SE TERMINOU OS 50 LOOPS
CPL LED ;INVERTE SAIDA PARA O LED
LJMP LOOP
END
Figura 4 - Código em Assembly do programa 8051 Pisca LED 1Hz.
Figura 5 - Apagando a memória EPROM com Luz Ultravioleta.
Figura 6 - Programando a memória EPROM com Minipro TL866 II plus.
Figura 7 - Placa 80C32 rodando o programa. LED piscando a 1 Hz
Assista ao vídeo para ver como ficou nosso projeto:
Vídeo 1 - 80C32 EPROM - O primeiro projeto 8051 Pisca LED 1 Hz.
Referência:
NICOLOSI, D. E. C.; Laboratório de Microcontroladores: Treino de instruções, hardware e software. São Paulo: Érica, 2002.
Transformando uma placa de sucata em um Kit de Desenvolvimento 8051: Microcontrolador 80C32 com memória de programa externa EPROM 27C512.
Projeto Teste da Comunicação Serial com o 8051: o programa inicia e envia algumas mensagens de texto para o computador pela comunicação serial. Depois passa a aguardar dados vindos pela serial e retorna os caracteres para o computador como uma função de echo. A cada dado recebido o 8051 inverte o status do LED ligado no Port P1.4. Trabalha com a Interrupção Serial.
Você vai aprender a trabalhar com a memória EPROM 27C512, como fazer o apagamento da memória com luz Ultra Violeta e fazer a gravação com o programador Minipro / TL866 II plus.
Figura 1 - Diagrama do circuito com o Microcontrolador 80C32 e memória externa EPROM 27C512.
Figura 2 - Placa de sucata com o Microcontrolador 80C32 e memória externa EPROM 27C512.
Figura 3 - Ferramentas utilizadas.
Código do projeto Testando a Comunicação Serial do 8051.
;############ PROGRAMA 8051 COM LED E SERIAL ###############
; ENVIA MENSAGENS INICIAIS PARA O COMPUTADOR
; DEVOLVE DADO RECEBIDO PARA O COMPUTADOR E INVERTE STATUS DO LED
; COMPILADOR ASM51 ou Keil
; V 1.1 ABRIL/2013 PLACA AT89S52
; V 1.2 MARÇO/2021 ADAPTADO PARA PLACA 80C32
; v 1.3 CORRIGIDO BUG DA INTERRUPCAO SERIAL
; M.R.G.
; PINO 10, P3.0 = RX
; PINO 11, P3.1 = TX
; PINO 5, P1.4 = LED
; PINO 15, P3.5 = enable drive MTA011
$MOD51
; *************** DEFINE CONSTANTES **************
TEMPO EQU 60535
TEMPO2 EQU 15535
STRING01 EQU 0500h
STRING02 EQU 0520h
STRING03 EQU 0540h
STRING04 EQU 0560h
STRING05 EQU 0580h
STRING06 EQU 0600h
STRING07 EQU 0620h
STRING08 EQU 0640h
TRANSMIT EQU F0 ;UTILIZANDO BIT DO PSW PARA FLAG DE TRANSMISSÃO
LED EQU P1.4
ENABLE_INPUT_DRIVE_MTA011 EQU P3.5
; ******************** DECLARACAO DE VARIAVEIS DA RAM **********************
;*************** VETOR DE RESET **********************************************
ORG 000H
MOV R0, #0FFH
LJMP INICGERAL
;****************** TRATAMENTO DA INTERRUPÇÃO SERIAL ***************************
ORG 023H
LJMP INT_SERIAL
ORG 100H
INT_SERIAL:
JNB RI, INT_TX ;SEPARA POR SOFTWARE A INTERRUPCAO DA TRANSMISSAO E DA RECEPCAO
INT_RX:
MOV A,SBUF ;MOVE DADO RECEBIDO DA SERIAL PARA R1
MOV R1, A ;MOVE DADO DO ACUMULADOR PARA REGISTRADOR R1
CALL TRANSMITE ;DEVOLVE DADO RECEBIDO PARA O COMPUTADOR
CPL LED ;INVERTE SAIDA DO LED
CLR RI ;LIMPA FLAG DE RECEPCAO SERIAL
INT_TX:
CLR TI ;LIMPA FLAG DE TRANSMISSAO SERIAL
RETI
;************************** MAIN ***************************************
INICGERAL:
; HABILITA ENTRADAS DO DRIVE MTA011 - TEM PORTA INVERSORA LS05 ENTRE 80C32 E MTA011
CLR ENABLE_INPUT_DRIVE_MTA011 ;QUANDO EM ZERO HABILITA DRIVE
;CONFIGURA SERIAL
MOV TMOD,#00100001B ;TIMER 1 NO MODO2 TIMER 0 MODO 1
MOV TH1,#232D ;VALOR DA RECARGA AUTOMÁTICA PARA BAUD RATE = 2400 @11,0592 MHz
SETB TR1 ;LIGO TIMER1
MOV A,PCON
SETB ACC.7 ;SETA BIT SMOD PARA TER BAUD RATE = 2400
MOV PCON,A
;MOV IE,#10010000B ;HABILITA INTERRUPÇÃO GERAL E SERIAL
MOV SCON,#01000000B ;MODO 1 DA SERIAL, DESABILITA RECEPÇÃO
; ENVIA MENSAGENS INICIAIS PELA SERIAL - COM AS INTERRUPCOES DESABILITADAS
MENSAGEM7:
MOV DPTR, #STRING07 ;carrega endereço da string
LCALL WRITESTRING
LCALL ENVIA_ENTER
LCALL ATRASO
MENSAGEM1:
MOV DPTR, #STRING01 ;carrega endereço da string
LCALL WRITESTRING
LCALL ENVIA_ENTER
LCALL ATRASO
MENSAGEM2:
MOV DPTR, #STRING02 ;carrega endereço da string
LCALL WRITESTRING
LCALL ENVIA_ENTER
LCALL ATRASO
MENSAGEM3:
MOV DPTR, #STRING03 ;carrega endereço da string
LCALL WRITESTRING
LCALL ENVIA_ENTER
LCALL ATRASO
MENSAGEM4:
MOV DPTR, #STRING04 ;carrega endereço da string
LCALL WRITESTRING
LCALL ENVIA_ENTER
LCALL ATRASO
MENSAGEM5:
MOV DPTR, #STRING05 ;carrega endereço da string
LCALL WRITESTRING
LCALL ENVIA_ENTER
LCALL ATRASO
MENSAGEM6:
MOV DPTR, #STRING06 ;carrega endereço da string
LCALL WRITESTRING
LCALL ENVIA_ENTER
LCALL ATRASO
MENSAGEM8:
MOV DPTR, #STRING08 ;carrega endereço da string
LCALL WRITESTRING
LCALL ATRASO
; FIM DAS MENSAGENS NO DISPLAY - HABILITA COMUNICACAO SERIAL
MOV IE,#10010000B ;HABILITA INTERRUPÇÃO GERAL E SERIAL
MOV SCON,#01010000B ;MODO 1 DA SERIAL, HABILITA RECEPÇÃO
LOOP:
LJMP LOOP
; ----------- SUB-ROTINAS DE ENVIO DE MENSAGENS ----------------
WRITESTRING:
MOV A, #0
MOVC A, @A + DPTR
CJNE A, #'$', WRITE_NEXT
SJMP FINIS_STRING
WRITE_NEXT:
MOV R1, A ;MOVE DADO DO ACUMULADOR PARA REGISTRADOR R1
LCALL TRANSMITE ;ENVIA CARACTERE PARA O COMPUTADOR
INC DPTR
SJMP WRITESTRING
FINIS_STRING:
RET
ENVIA_ENTER:
MOV A, #13 ;CR (Carriage Return) = “\r” = (char) 13
MOV R1, A ;MOVE DADO DO ACUMULADOR PARA REGISTRADOR R1
LCALL TRANSMITE ;ENVIA CARACTERE PARA O COMPUTADOR
RET
; *********** SUBROTINAS DE DELAY ****************************************
T5MS:
MOV TL0, #LOW(TEMPO)
MOV TH0, #HIGH(TEMPO)
SETB TR0
JNB TF0, $
CLR TR0
CLR TF0
RET
ATRASO:
MOV R2, #10D
DENOVO:
MOV TL0, #LOW (TEMPO2)
MOV TH0, #HIGH(TEMPO2)
SETB TR0
JNB TF0, $
CLR TR0
CLR TF0
DJNZ R2, DENOVO
RET
; *********** TRANSMISSAO SERIAL ****************************************
TRANSMITE:
MOV SBUF,R1 ;TRANSMITE DADO QUE ESTÁ EM R1
ESPERA:
JNB TI, ESPERA ;ESPERA TRANSMISSAO
CLR TI
RET
; MENSAGENS SALVAS NA FLASH - MEMORIA DE PROGRAMA
ORG STRING01
DB ' Microcontrolador$'
ORG STRING02
DB ' 80C32, LED e RS232$'
ORG STRING03
DB ' Freq 11.0592 MHz$'
ORG STRING04
DB ' 256 B RAM$'
ORG STRING05
DB ' 64 kB EPROM$'
ORG STRING06
DB ' 32 kB Ext RAM$'
ORG STRING07
DB 'Inicializando...$'
ORG STRING08
DB '8051 echo:>_ $'
;ENTER
;CR (Carriage Return) = “\r” = (char) 13
;LF (Line Feed) = “\n” = (char) 10
END
Figura 4 - Código em Assembly do programa 8051 Teste Serial.
Figura 5 - Apagando a memória EPROM com Luz Ultravioleta.
Figura 6 - Programando a memória EPROM com Minipro TL866 II plus.
Figura 7 - Placa 80C32 conectada ao computador pela porta serial.
Figura 8 - Mensagens iniciais enviadas do 80C32 para o computador.
Figura 9 - Frame da comunicação serial de 1 caractere medida com o osciloscópio.
Assista ao vídeo para ver como ficou nosso projeto:
Vídeo 1 - 80C32 EPROM - Projeto Teste Comunicação Serial com o 8051.
Referência:
NICOLOSI, D. E. C.; Laboratório de Microcontroladores: Treino de instruções, hardware e software. São Paulo: Érica, 2002.