I am glad that finaly your program works as you wanted. Make sure to add the two corrections in red, to your code, otherwise you could experiment some wierd behaviour.
Al.
Code:
Include "modedefs.bas"
define osc 4
PORTA = 1
PORTB = 0
KEY VAR BIT [7]
KEY1 VAR BIT [7]
ADR VAR BYTE
COD VAR BYTE
SYMBOL SCLK = PORTB.0
SYMBOL SDAT = PORTB.1
SYMBOL BUZ = PORTB.2
SYMBOL LED1 = PORTB.4
SYMBOL RELY = PORTB.3
SYMBOL STRT = PORTA.0
SYMBOL UNLCK = PORTA.1
SYMBOL BLCK = PORTA.2
START:
IF STRT = 0 THEN GOSUB SCAN
IF BLCK = 0 THEN GOTO ANGRY
IF STRT = 1 THEN
HIGH LED1
PAUSE 100
LOW LED1
IF STRT = 0 THEN GOSUB SCAN
IF BLCK = 0 THEN GOTO ANGRY
PAUSE 100
ENDIF
GOTO START
SCAN:
FOR ADR = 0 TO 7
I2CREAD SDAT,SCLK,$A0,ADR,[KEY]
READ ADR,KEY1
IF KEY != KEY1 THEN ERROR ' Not GOSUB ERROR
IF (KEY == KEY1) THEN COD = 1
IF RELY = 1 THEN SEROUT LED1,N2400,["ITS UNLOCKED HERO"]
NEXT ADR
PAUSE 10
RELY = COD
PAUSE 2000
LOW RELY
RETURN
ANGRY:
SOUND BUZ,[102,75]
HIGH LED1
PAUSE 1000
SLEEP 30
NOP
SOUND BUZ,[102,75]
PAUSE 1000
GOTO START
ERROR:
LOW RELY
SOUND BUZ,[102,75]
PAUSE 1000
HIGH LED1
PAUSE 1000
LOW LED1
PAUSE 1000
SOUND BUZ,[102,75]
HIGH LED1
SOUND BUZ,[102,75]
SLEEP 10
RETURN ' Not GOTO START
END
DATA @0,$14,$21,$47,$56,$02,$11,$22,$33
'
Bookmarks