****** ** LOCK_1.ASM (68HC11) ** ** Comination lock. ** ** Combination is $0F $70 ** ** When S7 at zero, user keys in number on the lower switches. ** When ready, user switches S7 to 1 and back to zero. Number on 7 ** lower switches read. If in agreement, goes to second number. ** If wrong, returns to start again. ** ** ** P. H. Anderson, MSU, 6 Feb 93 ******* PSCT EQU $C000 DSCT EQU $D000 IDSCT EQU $D300 REG_BASE EQU $1000 PORTB EQU $04 PORTC EQU $03 DDRC EQU $07 ORG PSCT LDY #REG_BASE CLR DDRC,Y * portc configured as input FIRST BCLR PORTB,Y %11111111 BSET PORTB,Y %00000001 * prompt for first number WAIT_1A BRCLR PORTC,Y %10000000 WAIT_1A BSR DELAY WAIT_1B BRSET PORTC,Y %10000000 WAIT_1B BSR DELAY FIRST_TST_1 BRSET PORTC,Y %00001111 FIRST_TST_0 * $0F BRA FIRST FIRST_TST_0 BRCLR PORTC,Y %01110000 SECOND BRA FIRST SECOND BCLR PORTB,Y %11111111 BSET PORTB,Y %00000010 * prompt for second WAIT_2A BRCLR PORTC,Y %10000000 WAIT_2A BSR DELAY WAIT_2B BRSET PORTC,Y %10000000 WAIT_2B BSR DELAY SECOND_TST_1 BRSET PORTC,Y %01110000 SECOND_TST_0 * $70 BRA FIRST SECOND_TST_0 BRCLR PORTC,Y %00001111 SUCCESS BRA FIRST SUCCESS BSET PORTB,Y $FF * light all LEDs SWI DELAY PSHX * to debounce switch LDX #$FFFF T1 DEX BNE T1 PULX RTS