add door open timeout buzzer

main
Yik Teng Hie 6 years ago
parent b226766f87
commit 7388ed1922

@ -0,0 +1,72 @@
' {$STAMP BS2}
' {$PBASIC 2.5}
Spkr PIN 10
' DTMF output on pin 10
#SELECT $STAMP
#CASE BS2, BS2E
TmAdj CON $100 ' x 1.0 (time adjust)
FrAdj CON $100 ' x 1.0 (freq adjust)
#CASE BS2SX
TmAdj CON $280 ' x 2.5
FrAdj CON $066 ' x 0.4
#CASE BS2P
TmAdj CON $3C5 ' x 3.77
FrAdj CON $044 ' x 0.265
#CASE BS2PE
TmAdj CON $100 ' x 1.0
FrAdj CON $0A9 ' x 0.662
#CASE BS2PX
TmAdj CON $607 ' x 6.03
FrAdj CON $2A ' x 0.166
#ENDSELECT
eeLoc VAR Byte ' EEPROM address of stored number
eeByte VAR Byte ' Byte containing two DTMF digits
dtDig VAR eeByte.NIB1 ' Digit to dial
phone VAR Nib ' Pick a phone #
hiLo VAR Bit ' Bit to select upper and lower nib
cntA VAR Byte
repeatA VAR Byte
Parallax DATA $19,$16,$62,$48,$33,$3F ' Phone: 1-916-624-8333
ParallaxFax DATA $19,$16,$62,$48,$00,$3F ' Phone: 1-916-624-8003
Information DATA $15,$20,$55,$51,$21,$2F ' Phone: 1-520-555-1212
Main:
'FOR phone = 0 TO 2
' retrieve address
' LOOKUP phone, [Parallax, ParallaxFax, Information], eeLoc
' GOSUB Dial_Number
' PAUSE 2000
'NEXT
GOSUB Buzzer
END
Dial_Number:
DO
READ eeLoc, eeByte ' Retrieve byte from EEPROM
eeLoc = eeLoc + 1 ' point to next pair of digits
FOR hiLo = 0 TO 1 ' Dial upper and lower digits
IF (dtDig = $F) THEN EXIT ' Hex $F is end-of-number flag
DTMFOUT Spkr, ' dial digit
150 */ TmAdj, 25, [dtDig] ' 150 ms on, 25 ms off
eeByte = eeByte << 4 ' Shift in next digit
NEXT
LOOP UNTIL (dtDig = $F)
RETURN
Buzzer:
FOR repeatA = 0 TO 5
PAUSE 20000
OUTPUT 10
FOR cntA = 0 TO 10
OUT10=1
PAUSE 300
OUT10=0
PAUSE 1000
NEXT
NEXT
RETURN
Loading…
Cancel
Save