Está tendo dificuldade em obter um código de senha, em assembly, para sua montagem com pic 16f628a? Com função Sleep? Com acionamento do ‘back’ do Lcd? Veja mais…
Esta montagem é uma adaptação do código da super_senha, para uma versão simplificada para apenas uma única senha. Não usa EEprom externa, e a senha é gravada na EEprom interna do PIC.
Veja o esquema abaixo:
Para introduzir a senha foi usado um teclado de telefone de mesa (sucata), mas poderá ser feito na própria placa com uso de contatos resistivos ou mesmo usando chaves dactilares. Para acompanhar a digitação, poderá ser usado um disco piezo, pelo qual se ouve um ‘bip’ a cada digito pressionado.
Quando o sistema fica sem ser acionado, entra em modo de ‘dormência’ (Sleep). Ao apertar qualquer tecla, aparecerá a mensagem para digitar uma senha.
A senha inicial, após carregar o firmaware é ‘12345678’. Deverá ser trocada por uma nova senha, desconhecida pelas pessoas em geral. Para isto, digite o comando de troca de senha que é ‘#246759#’. Após isto, será pedido para introduzir a senha antiga. Então, neste caso, digite ‘12345678’. Em seguida, pedirá que entre com uma nova senha e depois a ‘confirmação’ da senha. Após o que, a mensagem avisará do sucesso na troca de senha. Doravante, deverá usar a nova senha.
Quando a senha é introduzida de forma correta, a saída é acionada por um período de tempo. Pode-se mudar a forma que será a saída, de forma continua ou pulsada (tec..tec..tec…) para proteger a bobina da fechadura.
Se houver mais que 3 tentativas erradas, o teclado será bloqueado por um minuto (desincentivar acessos não autorizados).
Obs. Esta montagem é apenas didática, sendo testada apenas em placa de protoboard, sujeito a bugs ainda não detectados.
Esta sendo fornecido o arquivo ASM e HEX, que poderão ser alterados conforme a necessidade do hobista.
Segue o arquivo ASM:
Segue o arquivo HEX:
Se desejar, poderá baixar pasta compactada com os arquivos asm e hex aqui.
Manuais:
PIC16F628a
Curiosidades:
‘Dessas montanhas extrairás cobre’
Você tem pernas inquietas?
Um vírus com que as mulheres devem se preocupar
Insetos comestíveis — uma refeição inesquecível
Como lidar com problemas da próstata
Por que se preocupar com a exposição ao sol?
Por que parar de fumar?
Como vai sua tireóide?
É inofensivo mascar bétele?
Como ter uma gravidez mais tranqüila
Uma ponte que ressurgiu várias vezes
Por que se beija a Pedra Blarney?
Pressão alta: prevenção e controle
As cidades: Por que estão em crise?
Outros assuntos:
Lidar com sogros
Como acabar com a tática do silêncio
Como ser um bom ouvinte
Como disciplinar seu filho adolescente
Por que eu me corto?
Desempenhem bem o papel de pais
Como fazer seu segundo casamento dar certo
O que acontece quando morremos?
Como criar filhos responsáveis
Como administrar o seu dinheiro
Ensine valores morais a seus filhos
Ensine seus filhos bons principios com atividades de colorir
Como posso ter ânimo para exercitar
Como posso controlar meu peso?
Entrevista com um bioquímico
Adolescentes- O que fazer se estou sofrendo bullying?
Como evitar ferir com palavras?
Como tratar seu cônjuge com respeito?
Até o próximo artigo!!!
como eu faço pra eliminar esse erro para poder compilar ❓
;MODELO DO MICROCONTROLADOR
LIST P=16f628A , R=DEC
INCLUDE “P16F628A.INC”
;————————–
ERRORLEVEL -302, -202 ;ELIMINA MENSAGEM DE ERRO AO COMPILAR
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _BODEN_ON & _LVP_OFF ❗
Olá Aramis!
Não entendi bem o que está acontecendo. Poderia ser mais claro, por gentileza?
Cláudio
Olá Aramis!
Na realidade, não se trata de ‘erro’, mas uma ‘advertência’ sobre uma situação que o compilador foi programado a emitir esta mensagem.
Toda vez que você troca de banco de registradores, ocorre uma mensagem ‘errorlevel 302 “Register in operand not in bank 0. Ensure that bank bits are correct.” Mas não quer dizer que é um erro, mas um aviso ao programador, para verificar se realmente deve ser assim, se não houve engano. Isto é desnecessário, porque muitas vezes desejamos operar em outro banco, como quando vamos acertar o TRIS ou OPTION_REG, por exemplo. Por isto, costumo eliminar usando esta diretiva de compilação ‘ERROR LEVEL -302′.
Já o aviso 202 indica quando você está fora da faixa de operação da memória. Mas há casos que você deseja isto, como quando você quer copia o endereço menos significativo de um Label
como abaixo:
……meio do programa
pula27
movlw mens1 ;aqui aparecera mensagem de aviso pois ira copiar somente o endereço menos significatico do label ‘mens1′ (no caso 00h ao invés de 0700h)
movwf regc
……
movlw 7 ; numero do banco da flash
movwf pclath
movf regc,w
addwf pcl,f ;salto goto
……
……fim do programa
org 0×7000
mens1
dt “perigo”,0
Conforme o acima, ocorrerá o aviso de que o argumento está fora de faixa, pois realmente precisaria de 2 bytes para obte-la. Mas no programa, eu coloco no pclath o valor do banco e assim aponto corretamente o salto para o local, com endereço lsb no registrador regc para o PCL. Então, o programa vai funcionar e a mensagem torna-se desnecessária .
Também se elimina ela por usar a diretiva ‘ERRORLEVEL -202.
Espero que tenha entendido. Não dá para eliminar no programa, como se fosse um erro. Não existe erro. Existe sim avisos de situações que podem ou não indicar uma falha de programa. O programador analisa e se ver que está tudo ok, elimina manualmente este avisos.
Cláudio
Já encontrei a solução a respeito , obrigado ….
Cláudio … Se for possível agradeceria que me explicasses paulatinamente o código , sou novato na área e o meu professor também não ajuda muito …
E tenho um projecto similar para entregar , portanto gostaria de ter o alicerce sólido , obrigado ….
Olá Celsodelgado!
Você pode perguntar o que tem duvida. O programa em assembly foi escrito com comentários explicativos após os ponto-e-vírgulas (;). Para que possa familiarizar-se com o que faz cada instrução acesse o datasheet do pic16f628a. A partir da pag. 115 encontrará cada uma das instruções, o que cada uma delas fazem e como será afetado o registrador de status. Compreender bem o que faz cada instrução é vital para entender os programas. Estude estas instruções e depois pegue programas pequenos como ‘pisca_led.asm’ e tente entender o que está acontecendo em cada linha do programa. Ao poucos você irá dominar o assembly. Mas necessitará de paciência e perseverança.
Cláudio
Puedo usar un teclado matricial commun? Gracias pod tus aportes maravillosos
Olá José Sharez!
Gracias por tus comentarios elogiosos. Usted puede utilizar el ‘teclado matricial’ común que se utiliza en el teléfono antiguo.
Cláudio
grazie Claudio, è proprio quello che cercavo da molto tempo.
Devo provarlo su proto board.
GRAZIE DA ITALIA
Ciao Alice! Grazie per il tuo commento. Felice di essere stato di aiuto.
Claudio
obrigado Lários pela sua atenção,com isto estou acostumando com algumas rotinas do asm.
Lários para mudar para saida continua ao invés de pulso basta alterar a linha do (define)ou mais alguma mudança?aguardo
Olá Luiz! Isso mesmo. Basta comentar a linha do define conforme abaixo:
;**********************************************************************************************
;DEFINIÇÃO DO USUÁRIO
; #DEFINE SAIDA_PULSADA ;DESCOMENTE PARA SAIDA PULSADA (PROTEÇÃO DO ENROLAMENTO DA FECHADURA)
;OBS: COMENTE SE DESEJAR QUE FIQUE SEM PULSAR.
;==============================================================================================
(coloque o ponto e virgula no começo da linha para ‘comenta-la).
Claudio