PDA

View Full Version : general purpose password protected menu



HYETİK
- 22nd February 2009, 08:30
You can modify it. It is very usefull and simple.

I hope you will like it and wanna use it.

this project doesn't reset password if power is down.
first password is 333333.

zip pass: www.hyetik.co.cc

Acetronics2
- 22nd February 2009, 09:01
You can modify it. It is very usefull and simple.

I hope you will like it and wanna use it.

this project doesn't reset password if power is down.
first password is 333333.

zip pass: www.hyetik.co.cc



Hi, HYETIK

The little problem is we do not have the password to open th ZIP files ...

Why use one ??? ... it is no need here, as you must show it to everyone !!!

Alain

PS : Nice site ... could you add a link to " BabelFish" or an inline translator ... Turkish is not "so easy" for the rest of the world ...

mister_e
- 22nd February 2009, 09:49
Alain, HYETİK provide the password...

zip pass: www.hyetik.co.cc
;)

Archangel
- 22nd February 2009, 10:07
Password did not work for me either, better to post with code tags like in Steve's Signature.
People are wary of zips from people they do not know anyway.
Please use code tag when you post a code here.


paste your code here

mister_e
- 22nd February 2009, 10:12
Password worked for me here using ExtractNow software. I've attached a non-password zip here with the code, .HEX and what I feel to be a ISIS schematic.

Let's post the code here too

'************************************************* ***************
'* Name : UNTITLED.BAS *
'* Author : Hasan YETİK TOBB-ETÜ Elektrik-Eletronik Müh. *
'* Notice : Copyright (c) 2009 Hasan YETİK *
'* : All Rights Reserved *
'* Date : 19.02.2009 *
'* Version : 1.0 *
'* Notes : *
'* : *
'************************************************* ***************
TRISC=0 'LCD BAGLANTILARI
TRISB=%00001110 'B PORTU KEYPAD
OPTION_REG.7=0
TUS var byte
''''''''''''''''''''''''''''''''''''''''''''lcd TANIMLAMALARI
DEFINE OSC 20
DEFINE LCD_DREG PORTC 'LCD data bacakları PortB de bğlı
DEFINE LCD_DBIT 4 'LCD data bacakları 4. bitten başlıyor
DEFINE LCD_EREG PORTC 'LCD Enable Bacağı PortB de bağlı
DEFINE LCD_EBIT 3 'LCD Enable Bacağı 3. bite bağlı
DEFINE LCD_RWREG PORTC 'LCD RW Bacağı Portc de bağlı
DEFINE LCD_RWBIT 2 'LCD RW Bacağı 2. bite bağlı
DEFINE LCD_RSREG PORTC 'LCD RS Bacağı PortB de bağlı
DEFINE LCD_RSBIT 1 'LCD RS bacağı 1. Bite bağlı
DEFINE LCD_BITS 4 'LCD 4 bit olarak bağlı
DEFINE LCD_LINES 4 'LCD 2 sıra olarak çalışıyor.
'DEĞİŞKEN TANIMLAMALARI
symbol YATAY_A=PORTB.4 'keypad symbolleri
SYMBOL YATAY_B=PORTB.5
SYMBOL YATAY_C=PORTB.6
SYMBOL YATAY_D=PORTB.7
SYMBOL DIKEY_1=PORTB.1
SYMBOL DIKEY_2=PORTB.2
SYMBOL DIKEY_3=PORTB.3
CounterA var byte
Match var byte
sifre var WORD[6]
sifreyeni var WORD[6]
sifre2 var WORD[6]
DEFAULT VAR WORD[6]
KONTROL VAR WORD[6]
DURUM VAR byte[1]
ILK:

READ 9,DURUM
pause 100
if durum="a" then
goto start
else
write 1,3
write 2,3
write 3,3
write 4,3
write 5,3
write 6,3
lcdout $FE,1,"SIFRE:333333"
lcdout $FE,$C0,"SIFREYI DEGISTIRIN"
pause 1000
GOTO START
endif

Start:
match=0
lcdout $FE,1,"SIFREYI GIRIN"
for countera = 0 to 5

read 1,sifre2[0]
read 2,sifre2[1]
read 3,sifre2[2]
read 4,sifre2[3]
read 5,sifre2[4]
read 6,sifre2[5]
gosub TUSOKU
if tus=80 then sifred
if TUS=sifre2[countera] then Match=Match+1
lcdout $FE,($C0+COUNTERA),"*"
next countera

if match=6 then
lcdout $FE,1,"SIFRE DOGRU!"
else
lcdout $FE,1,"YANLIS SIFRE"
match=0
endif

PAUSE 1000
goto start
sifred:

lcdout $FE,1,"ESKI SIFREYI GIRIN"

read 1,sifre[0]
read 2,sifre[1]
read 3,sifre[2]
read 4,sifre[3]
read 5,sifre[4]
read 6,sifre[5]

for countera = 0 to 5
gosub TUSOKU
if TUS=sifre[countera] then Match=Match+1
lcdout $FE,($C0+COUNTERA),"*"
next countera

if match=6 then
lcdout $FE,1,"SIFRE DOGRU!"
goto sifred2
else
lcdout $FE,1,"YANLIS SIFRE"
match=0
goto sifred
endif

sifred2:
lcdout $FE,1,"YENI SIFRE:"
for countera=1 to 6
gosub TUSOKU
write countera,tus
lcdout $FE,($C0+(COUNTERA-1)),"*"
next countera
write 9,"a"
lcdout $FE,1,"SIFRE DEGISTI"
PAUSE 1000
goto start





TUSOKU:
tus=99
PORTB=254
YATAY_A=0 'YATAY_A=0 IÇIN KONTROL
IF DIKEY_1=0 THEN 'DIKEYDEKI TUS1 BASINCA IÇERIGI 0 OLUR BIR KOMUT ATLA
TUS=1
WHILE DIKEY_1=0 'BUTON HALA SIFIRMI KONTROL ET
WEND
ENDIF 'IF ISLEMININ SONU

IF DIKEY_2=0 THEN
TUS=2
WHILE DIKEY_2=0
WEND
ENDIF

IF DIKEY_3=0 THEN
TUS=3
WHILE DIKEY_3=0
WEND
ENDIF
HIGH YATAY_A

YATAY_B=0
IF DIKEY_1=0 THEN
TUS=4
WHILE DIKEY_1=0
WEND
ENDIF

IF DIKEY_2=0 THEN
TUS=5
WHILE DIKEY_2=0
WEND
ENDIF

IF DIKEY_3=0 THEN
TUS=6
WHILE DIKEY_3=0
WEND
ENDIF
HIGH YATAY_B


YATAY_C=0
IF DIKEY_1=0 THEN
TUS=7
WHILE DIKEY_1=0
WEND
ENDIF

IF DIKEY_2=0 THEN
TUS=8
WHILE DIKEY_2=0
WEND
ENDIF

IF DIKEY_3=0 THEN
TUS=9
WHILE DIKEY_3=0
WEND
ENDIF

HIGH YATAY_C


YATAY_D=0
IF DIKEY_1=0 THEN
tus=80
WHILE DIKEY_1=0
WEND
ENDIF


IF DIKEY_2=0 THEN
tus=0
WHILE DIKEY_2=0
WEND
ENDIF


IF DIKEY_3=0 THEN
tus=0
WHILE DIKEY_3=0
WEND
ENDIF
HIGH YATAY_D
IF TUS=99 THEN TUSOKU
RETURN

Acetronics2
- 22nd February 2009, 10:19
Alain, HYETİK provide the password...

;)

You're right ...

My Goggles are a bit aged ...

or I begin a bit English ( " Sunday closed " ) as told a certain " Fernand Raynaud " ...


Alain

HYETİK
- 23rd February 2009, 20:38
Haven't you tried it yet??
I sure it contain some bugs but I did not confront by any.

Proteus simulation doesn't work properly I tried it on board it works well:)

aratti
- 23rd February 2009, 22:19
This simple snipet assume you receive the keypad character serially and that you have a LCD. The password is written on eeprom and lenght can be changed updating Plen constant.

At start program waits for six characters (in this example six zeroes) and if entries are ok then program proceed to mainloop otherwise print "Access Denied" and return to the PassLoop.


Eeprom 100,[48,48,48,48,48,48]

Pass var byte
Key var byte
Len var byte
Char var byte
A0 var byte
Plen con 6
T9600 con 2

Key=0
len=0

Lcdout $FE,1

PassLoop:
Serin pinx,T9600,Char

Read 100+len,Pass

iF pass=Char then
Key=Key+1
else
Key=0
endif

Lcdout $FE, $80+len "*"

Len=Len+1

If Len=Plen+1 then
If Key=Plen then main
else
Lcdout $FE,1,"Access Denied"
pause 2000
Lcdout $FE,1
Len=0
endif
endif
goto PassLoop


Main:


Al.

aratti
- 24th February 2009, 13:53
In previous code Variable Key was not resetted in case of retrail. Here a shorter corrected code.


Eeprom 100,[48,48,48,48,48,48]

Pass var byte
Key var byte
Len var byte
Char var byte
A0 var byte
Plen con 6
T9600 con 2

IniPass:
Key=0
len=0

Lcdout $FE,1

PassLoop:
Serin pinx,T9600,Char

Read 100+len,Pass

iF pass=Char then
Key=Key+1
else
Key=0
endif

Lcdout $FE, $80+len "*"

Len=Len+1

If Len=Plen+1 then
If Key=Plen then main
else
Lcdout $FE,1,"Access Denied"
pause 2000
goto IniPass
endif
endif
goto PassLoop


Main:

Al.

mister_e
- 24th February 2009, 16:12
Haven't you tried it yet??
I sure it contain some bugs but I did not confront by any.

Proteus simulation doesn't work properly I tried it on board it works well:)
I haven't tried myself, but for sure I never trust any Sim... Proper ICD setup is more valuable and work on real hardware.

Here's some other variant of password handling.
http://www.picbasic.co.uk/forum/showthread.php?t=5695