;18LED12F629.asm
;STRESS with secret program when touching touch pads on start-up
;This program creates a display on 18 LEDs 1-1-2006
;LED pattern corresponds to PC board
list p=12F629
radix dec
include "p12f629.inc"
__CONFIG _MCLRE_OFF & _CP_OFF & _WDT_OFF
& _INTRC_OSC_NOCLKOUT ;Internal osc.
; globals
soundhigh equ 20h ;this is the first available file
soundlow equ 21h
fileA equ 26h ;delay fileA
fileB equ 27h ;delay fileB
fileC equ 28h ;delay fileC
delA equ 36h
delB equ 37h
long_delC equ 38h
short_delD equ 39h
beeplength equ 3Ah ;length of beep
beephigh equ 3Bh ;HIGH time
beeplow equ 3Ch ;LOW time
tmr0 equ 01h
randomNo equ 3Dh
temp equ 3Eh ;temporary file for decrementing
tempRand equ 3Fh
status equ 03h
OPTION_REG equ 81h
osccal equ 90h
; bits on GPIO
lineA equ 0 ;GP0
lineB equ 1 ;GP1
lineC equ 2 ;GP2
input equ 3 ;GP3
lineD equ 4 ;GP4
lineE equ 5 ;GP5
;bits
rp0 equ 5
Start org 0x00 ;program starts at location 000
nop
nop
nop
nop ;NOPs to get past reset vector address
nop
nop
SetUp clrf GPIO ;clear port of junk
movlw 0x24
movwf osccal ;calibrate oscillator
movlw 2Fh ;put 0010 1111 into W
andwf tmr0,0 ;mask bits to get max 0010 1111 for table jump
movwf randomNo ;move number to Random Number file
movlw b'11111111' ;This will make GP3 input
tris 05h
btfss GPIO,3
goto Main1
goto New
;Random Number Table
Table1 addwf 02,1
retlw 05
retlw 07
retlw 06
retlw 04
retlw 02
retlw 0Bh
retlw 01
retlw 12h
retlw 0Ch
retlw 10h
retlw 11h
retlw 09h
retlw 0Ah
retlw 06h
retlw 0Bh
retlw 0Dh
retlw 12h
retlw 01
retlw 12h
retlw 09
retlw 08
retlw 07
retlw 0Dh
retlw 06
retlw 0Fh
retlw 08
retlw 0Bh
retlw 05
retlw 07
retlw 0Ah
retlw 11h
retlw 0Ah
retlw 11h
retlw 02
retlw 0Dh
retlw 06
retlw 02
retlw 01
retlw 0Bh
retlw 12h
retlw 06
retlw 07
retlw 0Eh
retlw 05
retlw 0Eh
retlw 0Ch
retlw 04
retlw 09
retlw 0Eh
retlw 10h
retlw 0Bh
retlw 11h
retlw 03
retlw 04
retlw 0Eh
retlw 07
retlw 0Ah
retlw 03
retlw 11h
retlw 05
retlw 0Fh
retlw 02
retlw 0Dh
retlw 0Dh
retlw 02
retlw 08
retlw 0Fh
retlw 01
retlw 0Fh
retlw 0Ch
retlw 12h
retlw 04
retlw 05
retlw 0Fh
retlw 08
retlw 09
retlw 10h
retlw 01
retlw 03
retlw 10h
retlw 04
retlw 03
retlw 0Eh
retlw 03
retlw 0Ch
retlw 10h
retlw 0FFh
Around1 call Beep
call LED1
call Del_1
call Beep
call LED2
call Del_1
call Beep
call LED3
call Del_1
call Beep
call LED4
call Del_1 call Beep
call LED5
call Del_1
call Beep
call LED6
call Del_1
call Beep
call LED7
call Del_1
call Beep
call LED8
call Del_1
call Beep
call LED9
call Del_1
call Beep
call LED10
call Del_1
call Beep
call LED11
call Del_1
call Beep
call LED12
call Del_1
call Beep
call LED13
call Del_1
call Beep
call LED14
call Del_1
call Beep
call LED15
call Del_1
call Beep
call LED16
call Del_1
call Beep
call LED17
call Del_1
call Beep
call LED18
call Del_1
retlw 00
Around2 nop
Around3 call Beep
call LED1
call Del_2
call Beep
call LED2
call Del_2
call Beep
call LED3
call Del_2
call Beep
call LED4
call Del_2
call Beep
call LED5
call Del_2
call Beep
call LED6
call Del_2
call Beep
call LED7
call Del_2
call Beep
call LED8
call Del_2
call Beep
call LED9
call Del_2
call Beep
call LED10
call Del_2
call Beep
call LED11
call Del_2
call Beep
call LED12
call Del_2
call Beep
call LED13
call Del_2
call Beep
call LED14
call Del_2
call Beep
call LED15
call Del_2
call Beep
call LED16
call Del_2
call Beep
call LED17
call Del_2
call Beep
call LED18
call Del_2
retlw 00
Around4 call Beep
call LED1
call Del_3
decfsz tempRand,1
goto A2
goto show
A2 call Beep
call LED2
call Del_3
decfsz tempRand,1
goto A3
goto show
A3 call Beep
call LED3
call Del_3
decfsz tempRand,1
goto A4
goto show
A4 call Beep
call LED4
call Del_3
decfsz tempRand,1
goto A5
goto show
A5 call Beep
call LED5
call Del_3
decfsz tempRand,1
goto A6
goto show
A6 call Beep
call LED6
call Del_3
goto show
A7 call Beep
call LED7
call Del_3
decfsz tempRand,1
goto A8
goto show
A8 call Beep
call LED8
call Del_3
decfsz tempRand,1
goto A9
goto show
A9 call Beep
call LED9
call Del_3
decfsz tempRand,1
goto A10
goto show
A10 call Beep
call LED10
call Del_3
decfsz tempRand,1
goto A11
goto show
A11 call Beep
call LED11
call Del_3
decfsz tempRand,1
goto A12
goto show
A12 call Beep
call LED12
call Del_3
decfsz tempRand,1
goto A13
goto show
A13 call Beep
call LED13
call Del_3
decfsz tempRand,1
goto A14
goto show
A14 call Beep
call LED14
call Del_3
decfsz tempRand,1
goto A15
goto show
A15 call Beep
call LED15
call Del_3
decfsz tempRand,1
goto A16
goto show
A16 call Beep
call LED16
call Del_3
goto show
Beep movlw b'11111110'
tris 05h ;make GPO output
movlw 020h
movwf beeplength
Beep1 bsf GPIO,0 ;Piezo HIGH
movlw 80h
movwf beephigh
Beep2 nop
decfsz beephigh,1
goto Beep2
bcf GPIO,0
movlw 80h
movwf beeplow ;Piezo LOW
Beep3 nop
decfsz beeplow,1
goto Beep3
decfsz beeplength,1
goto Beep1
retlw 00
;Delay 1
Del_1 movlw 20h
movwf fileB
DelX decfsz fileA,1 ; ,1 denotes the result of the decrement
goto DelX
decfsz fileB,1
goto DelX
retlw 00
;Delay 2
Del_2 incf fileC
incf fileC
incf fileC
incf fileC
incf fileC
movf fileC,0
movwf fileB
DelY decfsz fileA,1 ; ,1 denotes the result of the decrement
goto DelY
decfsz fileB,1
goto DelY
retlw 00
;Delay 3
Del_3 incf fileC
incf fileC
incf fileC
incf fileC
movf fileC,0
movwf fileB
DelZ nop
nop
nop
nop
decfsz fileA,1 ; ,1 denotes the result of the decrement
goto DelZ
decfsz fileB,1
goto DelZ
retlw 00
;Activating the LEDs:LED1 movlw b'11111100' ;Put into W to turn on LED 1
tris 05h
movlw b'00000001'
movwf 05h ;make GP0 HIGH make GP1 LOW
retlw 00
LED2 movlw b'11111100' ;Put into W to turn on LED 2
tris 05h
movlw b'00000010'
movwf 05h ;make GP0 LOW make GP1 HIGH
retlw 00
LED3 movlw b'11011110' ;Put into W to turn on LED 3
tris 05h
movlw b'00100000'
movwf 05h ;make GP1 LOW make GP5 HIGH
retlw 00LED4 movlw b'11011110' ;Put into W to turn on LED 4
tris 05h
movlw b'00000001'
movwf 05h ;make GP1 LOW make GP5 HIGH
retlw 00
LED5 movlw b'11011011' ;Put into W to turn on LED 5
tris 05h
movlw b'00100000'
movwf 05h ;make GP2 LOW make GP5 HIGH
retlw 00
LED6 movlw b'11011011' ;Put into W to turn on LED 6
tris 05h
movlw b'00000100'
movwf 05h ;make GP2 HIGH make GP5 LOW
retlw 00
LED7 movlw b'11101011' ;Put into W to turn on LED 7
tris 05h
movlw b'00010000'
movwf 05h ;make GP2 LOW make GP4 HIGH
retlw 00LED8 movlw b'11101011' ;Put into W to turn on LED 8
tris 05h
movlw b'00000100'
movwf 05h ;make GP2 HIGH make GP4 LOW
retlw 00
LED9 movlw b'11101101' ;Put into W to turn on LED 9
tris 05h
movlw b'00010000'
movwf 05h ;make GP1 LOW make GP4 HIGH
retlw 00LED10 movlw b'11101101' ;Put into W to turn on LED 10
tris 05h
movlw b'00000010'
movwf 05h ;make GP1 LOW make GP5 HIGH
retlw 00LED11 movlw b'11001111' ;Put into W to turn on LED 11
tris 05h
movlw b'00100000'
movwf 05h ;make GP4 LOW make GP5 HIGH
retlw 00
LED12 movlw b'11001111' ;Put into W to turn on LED 12
tris 05h
movlw b'00010000'
movwf 05h ;make GP4 HIGH make GP5 LOW
retlw 00LED13 movlw b'11011101' ;Put into W to turn on LED 13
tris 05h
movlw b'00100000'
movwf 05h ;make GP1 LOW make GP5 HIGH
retlw 00
LED14 movlw b'11011101' ;Put into W to turn on LED 14
tris 05h
movlw b'00000010'
movwf 05h ;make GP1 HIGH make GP5 LOW
retlw 00
LED15 movlw b'11111001' ;Put into W to turn on LED 15
tris 05h
movlw b'00000010'
movwf 05h ;make GP1 HIGH make GP2 LOW
retlw 00
LED16 movlw b'11111001' ;Put into W to turn on LED 16
tris 05h
movlw b'00000100'
movwf 05h ;make GP1 LOW make GP2 HIGH
retlw 00
LED17 movlw b'11111010' ;Put into W to turn on LED 17
tris 05h
movlw b'00000001'
movwf 05h ;make GP0 HIGH make GP2 LOW
retlw 00
LED18 movlw b'11111010' ;Put into W to turn on LED 18
tris 05h
movlw b'00000100'
movwf 05h ;make GP0 LOW make GP2 HIGH
retlw 00
New call sound ;this is where your new program is placed
call Del_1
goto New
show movlw 40h
movwf long_delC
show2 call Del_1
decfsz long_delC
goto show2
retlw 00
sound movlw b'11111110'
tris 05h ;make GPO output
movlw 0F0h
movwf temp
sound1 bsf GPIO,0 ;Piezo HIGH
movf temp,0 ;
movwf soundhigh
sound2 nop
nop
nop
nop
nop
decfsz soundhigh,1
goto sound2
bcf GPIO,0
movf temp,0
movwf soundlow ;Piezo LOW
sound3 nop
nop
nop
nop
nop
decfsz soundlow,1
goto sound3
decfsz temp,1
goto sound1
retlw 00
Main incf randomNo ;
call sound
call sound
call Del_3
movlw b'11111111' ;make all lines "input" to turn off LEDs
tris 05h
Main1 call Beep
call Del_3
call Beep
call Del_3
call Del_3
movlw b'11111111' ;This will make GP3 input
tris 05h
btfss GPIO,3
goto Main1
Main2 movf randomNo,0 ;move random number to W
call Table1
movwf tempRand ;put LED number into temp file for decrementing
xorlw 0FFh ;end of table?
btfsc 03,2
goto Main3
goto Main4
Main3 clrf randomNo
incf randomNo
goto Main2
Main4 call Around1
movlw 30h
movwf fileC
call Around2
call Around3
movlw 50h ;create delay for final loop of display
movwf fileC
call Around4
call sound
goto Main
;OSCCAL calibration value
org 0x3ff
movlw 0x24
end
|